You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by gi...@apache.org on 2018/12/25 14:50:33 UTC

[01/29] hbase-site git commit: Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.

Repository: hbase-site
Updated Branches:
  refs/heads/asf-site 7805688f0 -> 70f4ddbc1


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html
index 0bbc9cb..5c4dfa7 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html
@@ -25,261 +25,297 @@
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.regionserver.querymatcher;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>import static org.junit.Assert.assertEquals;<a name="line.20"></a>
-<span class="sourceLineNo">021</span><a name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.io.IOException;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.regionserver.querymatcher.DeleteTracker.DeleteResult;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher.MatchCode;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.testclassification.SmallTests;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.junit.ClassRule;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.junit.Test;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.junit.experimental.categories.Category;<a name="line.34"></a>
-<span class="sourceLineNo">035</span><a name="line.35"></a>
-<span class="sourceLineNo">036</span>@Category({ RegionServerTests.class, SmallTests.class })<a name="line.36"></a>
-<span class="sourceLineNo">037</span>public class TestNewVersionBehaviorTracker {<a name="line.37"></a>
-<span class="sourceLineNo">038</span><a name="line.38"></a>
-<span class="sourceLineNo">039</span>  @ClassRule<a name="line.39"></a>
-<span class="sourceLineNo">040</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.40"></a>
-<span class="sourceLineNo">041</span>      HBaseClassTestRule.forClass(TestNewVersionBehaviorTracker.class);<a name="line.41"></a>
-<span class="sourceLineNo">042</span><a name="line.42"></a>
-<span class="sourceLineNo">043</span>  private final byte[] col1 = Bytes.toBytes("col1");<a name="line.43"></a>
-<span class="sourceLineNo">044</span>  private final byte[] col2 = Bytes.toBytes("col2");<a name="line.44"></a>
-<span class="sourceLineNo">045</span>  private final byte[] row = Bytes.toBytes("row");<a name="line.45"></a>
-<span class="sourceLineNo">046</span>  private final byte[] family = Bytes.toBytes("family");<a name="line.46"></a>
-<span class="sourceLineNo">047</span>  private final byte[] value = Bytes.toBytes("value");<a name="line.47"></a>
-<span class="sourceLineNo">048</span>  private final CellComparator comparator = CellComparatorImpl.COMPARATOR;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>  @Test<a name="line.49"></a>
-<span class="sourceLineNo">050</span>  public void testMaxVersionMask() {<a name="line.50"></a>
-<span class="sourceLineNo">051</span>    NewVersionBehaviorTracker tracker =<a name="line.51"></a>
-<span class="sourceLineNo">052</span>        new NewVersionBehaviorTracker(null, comparator, 1, 3, 3, 10000);<a name="line.52"></a>
-<span class="sourceLineNo">053</span><a name="line.53"></a>
-<span class="sourceLineNo">054</span>    KeyValue keyValue = new KeyValue(row, family, col1, 20000, KeyValue.Type.Put, value);<a name="line.54"></a>
-<span class="sourceLineNo">055</span>    keyValue.setTimestamp(20000);<a name="line.55"></a>
-<span class="sourceLineNo">056</span>    keyValue.setSequenceId(1000);<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(keyValue));<a name="line.57"></a>
-<span class="sourceLineNo">058</span>    keyValue.setTimestamp(19999);<a name="line.58"></a>
-<span class="sourceLineNo">059</span>    keyValue.setSequenceId(999);<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(keyValue));<a name="line.60"></a>
-<span class="sourceLineNo">061</span>    keyValue.setTimestamp(19999);<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    keyValue.setSequenceId(998);<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    assertEquals(DeleteResult.VERSION_MASKED, tracker.isDeleted(keyValue));<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    keyValue.setTimestamp(19998);<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    keyValue.setSequenceId(997);<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(keyValue));<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    keyValue.setTimestamp(19997);<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    keyValue.setSequenceId(996);<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    assertEquals(DeleteResult.VERSION_MASKED, tracker.isDeleted(keyValue));<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span>    keyValue = new KeyValue(row, family, col2, 20000, KeyValue.Type.Put, value);<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    keyValue.setTimestamp(20000);<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    keyValue.setSequenceId(1000);<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(keyValue));<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    keyValue.setTimestamp(19999);<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    keyValue.setSequenceId(1002);<a name="line.76"></a>
+<span class="sourceLineNo">020</span>import java.util.TreeSet;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.junit.Assert.assertEquals;<a name="line.21"></a>
+<span class="sourceLineNo">022</span><a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.io.IOException;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.CellComparatorImpl;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.regionserver.querymatcher.DeleteTracker.DeleteResult;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher.MatchCode;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.testclassification.RegionServerTests;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.testclassification.SmallTests;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.junit.ClassRule;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.junit.Test;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.junit.experimental.categories.Category;<a name="line.35"></a>
+<span class="sourceLineNo">036</span><a name="line.36"></a>
+<span class="sourceLineNo">037</span><a name="line.37"></a>
+<span class="sourceLineNo">038</span>@Category({ RegionServerTests.class, SmallTests.class })<a name="line.38"></a>
+<span class="sourceLineNo">039</span>public class TestNewVersionBehaviorTracker {<a name="line.39"></a>
+<span class="sourceLineNo">040</span><a name="line.40"></a>
+<span class="sourceLineNo">041</span>  @ClassRule<a name="line.41"></a>
+<span class="sourceLineNo">042</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.42"></a>
+<span class="sourceLineNo">043</span>      HBaseClassTestRule.forClass(TestNewVersionBehaviorTracker.class);<a name="line.43"></a>
+<span class="sourceLineNo">044</span><a name="line.44"></a>
+<span class="sourceLineNo">045</span>  private final byte[] col0 = Bytes.toBytes("col0");<a name="line.45"></a>
+<span class="sourceLineNo">046</span>  private final byte[] col1 = Bytes.toBytes("col1");<a name="line.46"></a>
+<span class="sourceLineNo">047</span>  private final byte[] col2 = Bytes.toBytes("col2");<a name="line.47"></a>
+<span class="sourceLineNo">048</span>  private final byte[] col3 = Bytes.toBytes("col3");<a name="line.48"></a>
+<span class="sourceLineNo">049</span>  private final byte[] col4 = Bytes.toBytes("col4");<a name="line.49"></a>
+<span class="sourceLineNo">050</span>  private final byte[] row = Bytes.toBytes("row");<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  private final byte[] family = Bytes.toBytes("family");<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  private final byte[] value = Bytes.toBytes("value");<a name="line.52"></a>
+<span class="sourceLineNo">053</span>  private final CellComparator comparator = CellComparatorImpl.COMPARATOR;<a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>  @Test<a name="line.55"></a>
+<span class="sourceLineNo">056</span>  public void testColumns() throws IOException {<a name="line.56"></a>
+<span class="sourceLineNo">057</span>    TreeSet&lt;byte[]&gt; trackedColumns = new TreeSet&lt;byte[]&gt;(Bytes.BYTES_COMPARATOR);<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    trackedColumns.add(col1);<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    trackedColumns.add(col3);<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>    NewVersionBehaviorTracker tracker =<a name="line.61"></a>
+<span class="sourceLineNo">062</span>        new NewVersionBehaviorTracker(trackedColumns, comparator, 1, 3, 3, 10000);<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span>    KeyValue keyValue = new KeyValue(row, family, col0, 20000, KeyValue.Type.Put, value);<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(keyValue));<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    assertEquals(MatchCode.SEEK_NEXT_COL, tracker.checkColumn(keyValue, keyValue.getTypeByte()));<a name="line.66"></a>
+<span class="sourceLineNo">067</span><a name="line.67"></a>
+<span class="sourceLineNo">068</span>    keyValue = new KeyValue(row, family, col1, 20000, KeyValue.Type.Put, value);<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(keyValue));<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    assertEquals(MatchCode.INCLUDE, tracker.checkColumn(keyValue, keyValue.getTypeByte()));<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>    keyValue = new KeyValue(row, family, col2, 20000, KeyValue.Type.Put, value);<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(keyValue));<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    assertEquals(MatchCode.SEEK_NEXT_COL, tracker.checkColumn(keyValue, keyValue.getTypeByte()));<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>    keyValue = new KeyValue(row, family, col3, 20000, KeyValue.Type.Put, value);<a name="line.76"></a>
 <span class="sourceLineNo">077</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(keyValue));<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    keyValue.setTimestamp(19999);<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    keyValue.setSequenceId(1001);<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    assertEquals(DeleteResult.VERSION_MASKED, tracker.isDeleted(keyValue));<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    keyValue.setTimestamp(19998);<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    keyValue.setSequenceId(1003);<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(keyValue));<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    keyValue.setTimestamp(19997);<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    keyValue.setSequenceId(1004);<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    assertEquals(DeleteResult.VERSION_MASKED, tracker.isDeleted(keyValue));<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  }<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  @Test<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  public void testVersionsDelete() {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    NewVersionBehaviorTracker tracker =<a name="line.91"></a>
-<span class="sourceLineNo">092</span>        new NewVersionBehaviorTracker(null, comparator, 1, 3, 3, 10000);<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    KeyValue put = new KeyValue(row, family, col1, 20000, KeyValue.Type.Put, value);<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    KeyValue delete = new KeyValue(row, family, col1, 20000, KeyValue.Type.DeleteColumn, value);<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    delete.setSequenceId(1000);<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    delete.setTimestamp(20000);<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    tracker.add(delete);<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    put.setSequenceId(1001);<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    put.setTimestamp(19999);<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(put));<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    put.setSequenceId(999);<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    put.setTimestamp(19998);<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    assertEquals(DeleteResult.COLUMN_DELETED, tracker.isDeleted(put));<a name="line.103"></a>
-<span class="sourceLineNo">104</span><a name="line.104"></a>
-<span class="sourceLineNo">105</span>    delete = new KeyValue(row, family, col2, 20000, KeyValue.Type.DeleteColumn, value);<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    delete.setSequenceId(1002);<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    delete.setTimestamp(20000);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    tracker.add(delete);<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    put = new KeyValue(row, family, col2, 20000, KeyValue.Type.Put, value);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    put.setSequenceId(1001);<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    put.setTimestamp(19999);<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    assertEquals(DeleteResult.COLUMN_DELETED, tracker.isDeleted(put));<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    put.setSequenceId(999);<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    put.setTimestamp(19998);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    assertEquals(DeleteResult.COLUMN_DELETED, tracker.isDeleted(put));<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>  @Test<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  public void testVersionDelete() {<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    NewVersionBehaviorTracker tracker =<a name="line.120"></a>
-<span class="sourceLineNo">121</span>        new NewVersionBehaviorTracker(null, comparator, 1, 3, 3, 10000);<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    KeyValue put = new KeyValue(row, family, col1, 20000, KeyValue.Type.Put, value);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    KeyValue delete = new KeyValue(row, family, col1, 20000, KeyValue.Type.Delete, value);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    delete.setSequenceId(1000);<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    delete.setTimestamp(20000);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    tracker.add(delete);<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    put.setSequenceId(1001);<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    put.setTimestamp(20000);<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(put));<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    put.setSequenceId(999);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    put.setTimestamp(20000);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    assertEquals(DeleteResult.VERSION_DELETED, tracker.isDeleted(put));<a name="line.132"></a>
-<span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>    delete = new KeyValue(row, family, col2, 20000, KeyValue.Type.Delete, value);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    delete.setSequenceId(1002);<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    delete.setTimestamp(20000);<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    tracker.add(delete);<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    put = new KeyValue(row, family, col2, 20000, KeyValue.Type.Put, value);<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    put.setSequenceId(1001);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    put.setTimestamp(20000);<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    assertEquals(DeleteResult.VERSION_DELETED, tracker.isDeleted(put));<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    put.setSequenceId(999);<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    put.setTimestamp(20000);<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    assertEquals(DeleteResult.VERSION_DELETED, tracker.isDeleted(put));<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    put.setSequenceId(1002);<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    put.setTimestamp(19999);<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(put));<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    put.setSequenceId(998);<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    put.setTimestamp(19999);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    assertEquals(DeleteResult.VERSION_MASKED, tracker.isDeleted(put));<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  }<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>  @Test<a name="line.153"></a>
-<span class="sourceLineNo">154</span>  public void testFamilyVersionsDelete() {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    NewVersionBehaviorTracker tracker =<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        new NewVersionBehaviorTracker(null, comparator, 1, 3, 3, 10000);<a name="line.156"></a>
-<span class="sourceLineNo">157</span><a name="line.157"></a>
-<span class="sourceLineNo">158</span>    KeyValue delete = new KeyValue(row, family, null, 20000, KeyValue.Type.DeleteFamily, value);<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    delete.setSequenceId(1000);<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    delete.setTimestamp(20000);<a name="line.160"></a>
-<span class="sourceLineNo">161</span><a name="line.161"></a>
-<span class="sourceLineNo">162</span>    KeyValue put = new KeyValue(row, family, col1, 20000, KeyValue.Type.Put, value);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    tracker.add(delete);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    put.setSequenceId(1001);<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    put.setTimestamp(20000);<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(put));<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    put.setSequenceId(999);<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    put.setTimestamp(19998);<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    assertEquals(DeleteResult.COLUMN_DELETED, tracker.isDeleted(put));<a name="line.169"></a>
-<span class="sourceLineNo">170</span><a name="line.170"></a>
-<span class="sourceLineNo">171</span>    put = new KeyValue(row, family, col2, 20000, KeyValue.Type.Put, value);<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    put.setSequenceId(998);<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    put.setTimestamp(19999);<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    assertEquals(DeleteResult.COLUMN_DELETED, tracker.isDeleted(put));<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    put.setSequenceId(999);<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    put.setTimestamp(19998);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    assertEquals(DeleteResult.COLUMN_DELETED, tracker.isDeleted(put));<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>  @Test<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  public void testFamilyVersionDelete() {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    NewVersionBehaviorTracker tracker =<a name="line.182"></a>
-<span class="sourceLineNo">183</span>        new NewVersionBehaviorTracker(null, comparator, 1, 3, 3, 10000);<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span>    KeyValue delete = new KeyValue(row, family, null, 20000, KeyValue.Type.DeleteFamilyVersion,<a name="line.185"></a>
-<span class="sourceLineNo">186</span>        value);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    delete.setSequenceId(1000);<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    delete.setTimestamp(20000);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    tracker.add(delete);<a name="line.189"></a>
-<span class="sourceLineNo">190</span><a name="line.190"></a>
-<span class="sourceLineNo">191</span>    KeyValue put = new KeyValue(row, family, col1, 20000, KeyValue.Type.Put, value);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    put.setSequenceId(1001);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    put.setTimestamp(20000);<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(put));<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    put.setSequenceId(999);<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    put.setTimestamp(20000);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    assertEquals(DeleteResult.VERSION_DELETED, tracker.isDeleted(put));<a name="line.197"></a>
-<span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span>    put = new KeyValue(row, family, col2, 20000, KeyValue.Type.Put, value);<a name="line.199"></a>
+<span class="sourceLineNo">078</span>    assertEquals(MatchCode.INCLUDE, tracker.checkColumn(keyValue, keyValue.getTypeByte()));<a name="line.78"></a>
+<span class="sourceLineNo">079</span><a name="line.79"></a>
+<span class="sourceLineNo">080</span>    keyValue = new KeyValue(row, family, col4, 20000, KeyValue.Type.Put, value);<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(keyValue));<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    assertEquals(MatchCode.SEEK_NEXT_ROW, tracker.checkColumn(keyValue, keyValue.getTypeByte()));<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  }<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>  @Test<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  public void testMaxVersionMask() {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    NewVersionBehaviorTracker tracker =<a name="line.87"></a>
+<span class="sourceLineNo">088</span>        new NewVersionBehaviorTracker(null, comparator, 1, 3, 3, 10000);<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>    KeyValue keyValue = new KeyValue(row, family, col1, 20000, KeyValue.Type.Put, value);<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    keyValue.setTimestamp(20000);<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    keyValue.setSequenceId(1000);<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(keyValue));<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    keyValue.setTimestamp(19999);<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    keyValue.setSequenceId(999);<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(keyValue));<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    keyValue.setTimestamp(19999);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    keyValue.setSequenceId(998);<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    assertEquals(DeleteResult.VERSION_MASKED, tracker.isDeleted(keyValue));<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    keyValue.setTimestamp(19998);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    keyValue.setSequenceId(997);<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(keyValue));<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    keyValue.setTimestamp(19997);<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    keyValue.setSequenceId(996);<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    assertEquals(DeleteResult.VERSION_MASKED, tracker.isDeleted(keyValue));<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>    keyValue = new KeyValue(row, family, col2, 20000, KeyValue.Type.Put, value);<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    keyValue.setTimestamp(20000);<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    keyValue.setSequenceId(1000);<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(keyValue));<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    keyValue.setTimestamp(19999);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    keyValue.setSequenceId(1002);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(keyValue));<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    keyValue.setTimestamp(19999);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    keyValue.setSequenceId(1001);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    assertEquals(DeleteResult.VERSION_MASKED, tracker.isDeleted(keyValue));<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    keyValue.setTimestamp(19998);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    keyValue.setSequenceId(1003);<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(keyValue));<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    keyValue.setTimestamp(19997);<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    keyValue.setSequenceId(1004);<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    assertEquals(DeleteResult.VERSION_MASKED, tracker.isDeleted(keyValue));<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>  @Test<a name="line.125"></a>
+<span class="sourceLineNo">126</span>  public void testVersionsDelete() {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    NewVersionBehaviorTracker tracker =<a name="line.127"></a>
+<span class="sourceLineNo">128</span>        new NewVersionBehaviorTracker(null, comparator, 1, 3, 3, 10000);<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    KeyValue put = new KeyValue(row, family, col1, 20000, KeyValue.Type.Put, value);<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    KeyValue delete = new KeyValue(row, family, col1, 20000, KeyValue.Type.DeleteColumn, value);<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    delete.setSequenceId(1000);<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    delete.setTimestamp(20000);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    tracker.add(delete);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    put.setSequenceId(1001);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    put.setTimestamp(19999);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(put));<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    put.setSequenceId(999);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    put.setTimestamp(19998);<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    assertEquals(DeleteResult.COLUMN_DELETED, tracker.isDeleted(put));<a name="line.139"></a>
+<span class="sourceLineNo">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>    delete = new KeyValue(row, family, col2, 20000, KeyValue.Type.DeleteColumn, value);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    delete.setSequenceId(1002);<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    delete.setTimestamp(20000);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    tracker.add(delete);<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    put = new KeyValue(row, family, col2, 20000, KeyValue.Type.Put, value);<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    put.setSequenceId(1001);<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    put.setTimestamp(19999);<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    assertEquals(DeleteResult.COLUMN_DELETED, tracker.isDeleted(put));<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    put.setSequenceId(999);<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    put.setTimestamp(19998);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    assertEquals(DeleteResult.COLUMN_DELETED, tracker.isDeleted(put));<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>  @Test<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  public void testVersionDelete() {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    NewVersionBehaviorTracker tracker =<a name="line.156"></a>
+<span class="sourceLineNo">157</span>        new NewVersionBehaviorTracker(null, comparator, 1, 3, 3, 10000);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    KeyValue put = new KeyValue(row, family, col1, 20000, KeyValue.Type.Put, value);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    KeyValue delete = new KeyValue(row, family, col1, 20000, KeyValue.Type.Delete, value);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    delete.setSequenceId(1000);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    delete.setTimestamp(20000);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    tracker.add(delete);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    put.setSequenceId(1001);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    put.setTimestamp(20000);<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(put));<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    put.setSequenceId(999);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    put.setTimestamp(20000);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    assertEquals(DeleteResult.VERSION_DELETED, tracker.isDeleted(put));<a name="line.168"></a>
+<span class="sourceLineNo">169</span><a name="line.169"></a>
+<span class="sourceLineNo">170</span>    delete = new KeyValue(row, family, col2, 20000, KeyValue.Type.Delete, value);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    delete.setSequenceId(1002);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    delete.setTimestamp(20000);<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    tracker.add(delete);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    put = new KeyValue(row, family, col2, 20000, KeyValue.Type.Put, value);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    put.setSequenceId(1001);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    put.setTimestamp(20000);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    assertEquals(DeleteResult.VERSION_DELETED, tracker.isDeleted(put));<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    put.setSequenceId(999);<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    put.setTimestamp(20000);<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    assertEquals(DeleteResult.VERSION_DELETED, tracker.isDeleted(put));<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    put.setSequenceId(1002);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    put.setTimestamp(19999);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(put));<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    put.setSequenceId(998);<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    put.setTimestamp(19999);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    assertEquals(DeleteResult.VERSION_MASKED, tracker.isDeleted(put));<a name="line.186"></a>
+<span class="sourceLineNo">187</span>  }<a name="line.187"></a>
+<span class="sourceLineNo">188</span><a name="line.188"></a>
+<span class="sourceLineNo">189</span>  @Test<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  public void testFamilyVersionsDelete() {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    NewVersionBehaviorTracker tracker =<a name="line.191"></a>
+<span class="sourceLineNo">192</span>        new NewVersionBehaviorTracker(null, comparator, 1, 3, 3, 10000);<a name="line.192"></a>
+<span class="sourceLineNo">193</span><a name="line.193"></a>
+<span class="sourceLineNo">194</span>    KeyValue delete = new KeyValue(row, family, null, 20000, KeyValue.Type.DeleteFamily, value);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    delete.setSequenceId(1000);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    delete.setTimestamp(20000);<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>    KeyValue put = new KeyValue(row, family, col1, 20000, KeyValue.Type.Put, value);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    tracker.add(delete);<a name="line.199"></a>
 <span class="sourceLineNo">200</span>    put.setSequenceId(1001);<a name="line.200"></a>
 <span class="sourceLineNo">201</span>    put.setTimestamp(20000);<a name="line.201"></a>
 <span class="sourceLineNo">202</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(put));<a name="line.202"></a>
 <span class="sourceLineNo">203</span>    put.setSequenceId(999);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    put.setTimestamp(20000);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    assertEquals(DeleteResult.VERSION_DELETED, tracker.isDeleted(put));<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    put.setSequenceId(1002);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    put.setTimestamp(19999);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(put));<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    put.setSequenceId(998);<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    put.setTimestamp(19999);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    assertEquals(DeleteResult.VERSION_MASKED, tracker.isDeleted(put));<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  }<a name="line.212"></a>
-<span class="sourceLineNo">213</span><a name="line.213"></a>
-<span class="sourceLineNo">214</span>  @Test<a name="line.214"></a>
-<span class="sourceLineNo">215</span>  public void testMinVersionsAndTTL() throws IOException {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    NewVersionBehaviorTracker tracker =<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        new NewVersionBehaviorTracker(null, comparator, 1, 3, 3, 30000);<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>    KeyValue keyValue = new KeyValue(row, family, col1, 20000, KeyValue.Type.Put, value);<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    keyValue.setTimestamp(20000);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    keyValue.setSequenceId(1000);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(keyValue));<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    assertEquals(MatchCode.INCLUDE_AND_SEEK_NEXT_COL,<a name="line.223"></a>
-<span class="sourceLineNo">224</span>        tracker.checkVersions(keyValue, keyValue.getTimestamp(), keyValue.getTypeByte(), false));<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    keyValue.setTimestamp(19999);<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    keyValue.setSequenceId(999);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(keyValue));<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    assertEquals(<a name="line.228"></a>
-<span class="sourceLineNo">229</span>        MatchCode.SEEK_NEXT_COL,<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        tracker.checkVersions(keyValue, keyValue.getTimestamp(), keyValue.getTypeByte(), false));<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    keyValue.setTimestamp(19999);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    keyValue.setSequenceId(998);<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    assertEquals(DeleteResult.VERSION_MASKED, tracker.isDeleted(keyValue));<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    assertEquals(MatchCode.SEEK_NEXT_COL,<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        tracker.checkVersions(keyValue, keyValue.getTimestamp(), keyValue.getTypeByte(), false));<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    keyValue.setTimestamp(19998);<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    keyValue.setSequenceId(997);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(keyValue));<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    assertEquals(MatchCode.SEEK_NEXT_COL,<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        tracker.checkVersions(keyValue, keyValue.getTimestamp(), keyValue.getTypeByte(), false));<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    keyValue.setTimestamp(19997);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    keyValue.setSequenceId(996);<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    assertEquals(DeleteResult.VERSION_MASKED, tracker.isDeleted(keyValue));<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    assertEquals(MatchCode.SEEK_NEXT_COL,<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        tracker.checkVersions(keyValue, keyValue.getTimestamp(), keyValue.getTypeByte(), false));<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>    keyValue = new KeyValue(row, family, col2, 20000, KeyValue.Type.Put, value);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    keyValue.setTimestamp(20000);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    keyValue.setSequenceId(1000);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(keyValue));<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    assertEquals(MatchCode.INCLUDE_AND_SEEK_NEXT_COL,<a name="line.251"></a>
-<span class="sourceLineNo">252</span>        tracker.checkVersions(keyValue, keyValue.getTimestamp(), keyValue.getTypeByte(), false));<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    keyValue.setTimestamp(19999);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    keyValue.setSequenceId(1002);<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(keyValue));<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    assertEquals(MatchCode.SEEK_NEXT_COL,<a name="line.256"></a>
-<span class="sourceLineNo">257</span>        tracker.checkVersions(keyValue, keyValue.getTimestamp(), keyValue.getTypeByte(), false));<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    keyValue.setTimestamp(19999);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    keyValue.setSequenceId(1001);<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    assertEquals(DeleteResult.VERSION_MASKED, tracker.isDeleted(keyValue));<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    assertEquals(MatchCode.SEEK_NEXT_COL,<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        tracker.checkVersions(keyValue, keyValue.getTimestamp(), keyValue.getTypeByte(), false));<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    keyValue.setTimestamp(19998);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    keyValue.setSequenceId(1003);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(keyValue));<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    assertEquals(MatchCode.SEEK_NEXT_COL,<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        tracker.checkVersions(keyValue, keyValue.getTimestamp(), keyValue.getTypeByte(), false));<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    keyValue.setTimestamp(19997);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    keyValue.setSequenceId(1004);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    assertEquals(DeleteResult.VERSION_MASKED, tracker.isDeleted(keyValue));<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    assertEquals(MatchCode.SEEK_NEXT_COL,<a name="line.271"></a>
-<span class="sourceLineNo">272</span>        tracker.checkVersions(keyValue, keyValue.getTimestamp(), keyValue.getTypeByte(), false));<a name="line.272"></a>
-<span class="sourceLineNo">273</span>  }<a name="line.273"></a>
-<span class="sourceLineNo">274</span>}<a name="line.274"></a>
+<span class="sourceLineNo">204</span>    put.setTimestamp(19998);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    assertEquals(DeleteResult.COLUMN_DELETED, tracker.isDeleted(put));<a name="line.205"></a>
+<span class="sourceLineNo">206</span><a name="line.206"></a>
+<span class="sourceLineNo">207</span>    put = new KeyValue(row, family, col2, 20000, KeyValue.Type.Put, value);<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    put.setSequenceId(998);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    put.setTimestamp(19999);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    assertEquals(DeleteResult.COLUMN_DELETED, tracker.isDeleted(put));<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    put.setSequenceId(999);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    put.setTimestamp(19998);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    assertEquals(DeleteResult.COLUMN_DELETED, tracker.isDeleted(put));<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>  @Test<a name="line.216"></a>
+<span class="sourceLineNo">217</span>  public void testFamilyVersionDelete() {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    NewVersionBehaviorTracker tracker =<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        new NewVersionBehaviorTracker(null, comparator, 1, 3, 3, 10000);<a name="line.219"></a>
+<span class="sourceLineNo">220</span><a name="line.220"></a>
+<span class="sourceLineNo">221</span>    KeyValue delete = new KeyValue(row, family, null, 20000, KeyValue.Type.DeleteFamilyVersion,<a name="line.221"></a>
+<span class="sourceLineNo">222</span>        value);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    delete.setSequenceId(1000);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    delete.setTimestamp(20000);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    tracker.add(delete);<a name="line.225"></a>
+<span class="sourceLineNo">226</span><a name="line.226"></a>
+<span class="sourceLineNo">227</span>    KeyValue put = new KeyValue(row, family, col1, 20000, KeyValue.Type.Put, value);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    put.setSequenceId(1001);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    put.setTimestamp(20000);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(put));<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    put.setSequenceId(999);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    put.setTimestamp(20000);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    assertEquals(DeleteResult.VERSION_DELETED, tracker.isDeleted(put));<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    put = new KeyValue(row, family, col2, 20000, KeyValue.Type.Put, value);<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    put.setSequenceId(1001);<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    put.setTimestamp(20000);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(put));<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    put.setSequenceId(999);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    put.setTimestamp(20000);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    assertEquals(DeleteResult.VERSION_DELETED, tracker.isDeleted(put));<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    put.setSequenceId(1002);<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    put.setTimestamp(19999);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(put));<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    put.setSequenceId(998);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    put.setTimestamp(19999);<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    assertEquals(DeleteResult.VERSION_MASKED, tracker.isDeleted(put));<a name="line.247"></a>
+<span class="sourceLineNo">248</span>  }<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>  @Test<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  public void testMinVersionsAndTTL() throws IOException {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    NewVersionBehaviorTracker tracker =<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        new NewVersionBehaviorTracker(null, comparator, 1, 3, 3, 30000);<a name="line.253"></a>
+<span class="sourceLineNo">254</span><a name="line.254"></a>
+<span class="sourceLineNo">255</span>    KeyValue keyValue = new KeyValue(row, family, col1, 20000, KeyValue.Type.Put, value);<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    keyValue.setTimestamp(20000);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    keyValue.setSequenceId(1000);<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(keyValue));<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    assertEquals(MatchCode.INCLUDE_AND_SEEK_NEXT_COL,<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        tracker.checkVersions(keyValue, keyValue.getTimestamp(), keyValue.getTypeByte(), false));<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    keyValue.setTimestamp(19999);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    keyValue.setSequenceId(999);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(keyValue));<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    assertEquals(<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        MatchCode.SEEK_NEXT_COL,<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        tracker.checkVersions(keyValue, keyValue.getTimestamp(), keyValue.getTypeByte(), false));<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    keyValue.setTimestamp(19999);<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    keyValue.setSequenceId(998);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    assertEquals(DeleteResult.VERSION_MASKED, tracker.isDeleted(keyValue));<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    assertEquals(MatchCode.SEEK_NEXT_COL,<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        tracker.checkVersions(keyValue, keyValue.getTimestamp(), keyValue.getTypeByte(), false));<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    keyValue.setTimestamp(19998);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    keyValue.setSequenceId(997);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(keyValue));<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    assertEquals(MatchCode.SEEK_NEXT_COL,<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        tracker.checkVersions(keyValue, keyValue.getTimestamp(), keyValue.getTypeByte(), false));<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    keyValue.setTimestamp(19997);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    keyValue.setSequenceId(996);<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    assertEquals(DeleteResult.VERSION_MASKED, tracker.isDeleted(keyValue));<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    assertEquals(MatchCode.SEEK_NEXT_COL,<a name="line.280"></a>
+<span class="sourceLineNo">281</span>        tracker.checkVersions(keyValue, keyValue.getTimestamp(), keyValue.getTypeByte(), false));<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>    keyValue = new KeyValue(row, family, col2, 20000, KeyValue.Type.Put, value);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    keyValue.setTimestamp(20000);<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    keyValue.setSequenceId(1000);<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(keyValue));<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    assertEquals(MatchCode.INCLUDE_AND_SEEK_NEXT_COL,<a name="line.287"></a>
+<span class="sourceLineNo">288</span>        tracker.checkVersions(keyValue, keyValue.getTimestamp(), keyValue.getTypeByte(), false));<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    keyValue.setTimestamp(19999);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    keyValue.setSequenceId(1002);<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(keyValue));<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    assertEquals(MatchCode.SEEK_NEXT_COL,<a name="line.292"></a>
+<span class="sourceLineNo">293</span>        tracker.checkVersions(keyValue, keyValue.getTimestamp(), keyValue.getTypeByte(), false));<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    keyValue.setTimestamp(19999);<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    keyValue.setSequenceId(1001);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    assertEquals(DeleteResult.VERSION_MASKED, tracker.isDeleted(keyValue));<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    assertEquals(MatchCode.SEEK_NEXT_COL,<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        tracker.checkVersions(keyValue, keyValue.getTimestamp(), keyValue.getTypeByte(), false));<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    keyValue.setTimestamp(19998);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    keyValue.setSequenceId(1003);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    assertEquals(DeleteResult.NOT_DELETED, tracker.isDeleted(keyValue));<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    assertEquals(MatchCode.SEEK_NEXT_COL,<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        tracker.checkVersions(keyValue, keyValue.getTimestamp(), keyValue.getTypeByte(), false));<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    keyValue.setTimestamp(19997);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    keyValue.setSequenceId(1004);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    assertEquals(DeleteResult.VERSION_MASKED, tracker.isDeleted(keyValue));<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    assertEquals(MatchCode.SEEK_NEXT_COL,<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        tracker.checkVersions(keyValue, keyValue.getTimestamp(), keyValue.getTypeByte(), false));<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>
 
 
 


[16/29] hbase-site git commit: Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
index d279350..db56fce 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
@@ -866,130 +866,134 @@
 <td class="colLast"><span class="typeNameLabel">TestAsyncBufferMutator.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncBufferMutator.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TestGetScanColumnsWithNewVersionBehavior.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestIncrementsFromClientSide.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestResultSizeEstimation.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestResultSizeEstimation.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestMultipleTimestamps.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultipleTimestamps.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestFastFail.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestFastFail.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAvoidCellReferencesIntoShippedBlocks.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAvoidCellReferencesIntoShippedBlocks.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">RestoreSnapshotFromClientTestBase.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/RestoreSnapshotFromClientTestBase.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAsyncTableScannerCloseWhileSuspending.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableScannerCloseWhileSuspending.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestMultiRespectsLimits.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiRespectsLimits.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">AbstractTestShell.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/AbstractTestShell.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAsyncReplicationAdminApiWithClusters.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncReplicationAdminApiWithClusters.html#TEST_UTIL2">TEST_UTIL2</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestCIBadHostname.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCIBadHostname.html#testUtil">testUtil</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestClientOperationInterrupt.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestClientOperationInterrupt.html#util">util</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestGetProcedureResult.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestGetProcedureResult.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestTableOperationException.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableOperationException.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestLimitedScanWithFilter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestLimitedScanWithFilter.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestInvalidMutationDurabilityException.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestRawAsyncTableLimitedScanWithFilter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRawAsyncTableLimitedScanWithFilter.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestScanWithoutFetchingData.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestSnapshotCloneIndependence.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotCloneIndependence.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAlwaysSetScannerId.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAlwaysSetScannerId.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestSnapshotFromClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotFromClient.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestMvccConsistentScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMvccConsistentScanner.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestSnapshotTemporaryDirectory.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotTemporaryDirectory.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAsyncTableScanMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableScanMetrics.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestShortCircuitConnection.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestShortCircuitConnection.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestMultiParallel.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiParallel.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestTableSnapshotScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableSnapshotScanner.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestSnapshotMetadata.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotMetadata.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestClientPushback.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestClientPushback.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestRpcControllerFactory.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRpcControllerFactory.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAsyncAggregationClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncAggregationClient.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestServerLoadDurability.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestServerLoadDurability.html#utility">utility</a></span></code>&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSide3.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSide3.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSide3.html
index 723cc86..563fcc9 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSide3.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSide3.html
@@ -258,7 +258,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
     <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;T&gt;&nbsp;clz)</code>&nbsp;</td>
 </tr>
 <tr id="i3" class="rowColor">
-<td class="colFirst"><code>private static byte[]</code></td>
+<td class="colFirst"><code>(package private) static byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide3.html#generateHugeValue-int-">generateHugeValue</a></span>(int&nbsp;size)</code>&nbsp;</td>
 </tr>
 <tr id="i4" class="altColor">
@@ -1029,7 +1029,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>generateHugeValue</h4>
-<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.1062">generateHugeValue</a>(int&nbsp;size)</pre>
+<pre>static&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.1062">generateHugeValue</a>(int&nbsp;size)</pre>
 </li>
 </ul>
 <a name="testScanWithBatchSizeReturnIncompleteCells--">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.MyStoreScanner.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.MyStoreScanner.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.MyStoreScanner.html
index 073b06f..c1bf715 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.MyStoreScanner.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.MyStoreScanner.html
@@ -206,7 +206,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, getEstimatedNumberOfKvsScanned, getNextIndexedKey, getReadPoint, next, next, peek, reopenAfterFlush, reseek, resetKVHeap, seek, seekAsDirection, seekScanners, seekToNextRow, shipped, trySkipToNextColumn, trySkipToNextRow, updateReaders</code></li>
+<code>checkFlushed, checkScanOrder, close, getEstimatedNumberOfKvsScanned, getNextIndexedKey, getReadPoint, newKVHeap, next, next, peek, reopenAfterFlush, reseek, resetKVHeap, seek, seekAsDirection, seekScanners, seekToNextRow, shipped, trySkipToNextColumn, trySkipToNextRow, 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/70f4ddbc/testdevapidocs/org/apache/hadoop/hbase/client/TestGetProcedureResult.DummyProcedure.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestGetProcedureResult.DummyProcedure.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestGetProcedureResult.DummyProcedure.html
index 07735a8..07e72fa 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestGetProcedureResult.DummyProcedure.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestGetProcedureResult.DummyProcedure.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/client/TestGetProcedureResult.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/client/TestGetScanPartialResult.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestGetProcedureResult.DummyProcedure.html" target="_top">Frames</a></li>
@@ -457,7 +457,7 @@ implements org.apache.hadoop.hbase.master.procedure.TableProcedureInterface</pre
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/client/TestGetProcedureResult.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/client/TestGetScanPartialResult.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestGetProcedureResult.DummyProcedure.html" target="_top">Frames</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html
new file mode 100644
index 0000000..a630681
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html
@@ -0,0 +1,459 @@
+<!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>TestGetScanColumnsWithNewVersionBehavior (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="TestGetScanColumnsWithNewVersionBehavior (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":9,"i1":9,"i2":10};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestGetScanColumnsWithNewVersionBehavior.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestGetProcedureResult.DummyProcedure.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestGetScanPartialResult.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" target="_top">Frames</a></li>
+<li><a href="TestGetScanColumnsWithNewVersionBehavior.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.client</div>
+<h2 title="Class TestGetScanColumnsWithNewVersionBehavior" class="title">Class TestGetScanColumnsWithNewVersionBehavior</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.client.TestGetScanColumnsWithNewVersionBehavior</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#line.44">TestGetScanColumnsWithNewVersionBehavior</a>
+extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
+<div class="block">Testcase for HBASE-21032, where use the wrong readType from a Scan instance which is actually a
+ get scan and cause returning only 1 cell per rpc call.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#CF">CF</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#COLA">COLA</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#COLB">COLB</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#COLC">COLC</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#ROW">ROW</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static org.apache.hadoop.hbase.TableName</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#TABLE">TABLE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#TS">TS</a></span></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#TestGetScanColumnsWithNewVersionBehavior--">TestGetScanColumnsWithNewVersionBehavior</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#setUp--">setUp</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#tearDown--">tearDown</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#test--">test</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="CLASS_RULE">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>CLASS_RULE</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#line.47">CLASS_RULE</a></pre>
+</li>
+</ul>
+<a name="TEST_UTIL">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>TEST_UTIL</h4>
+<pre>private static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#line.50">TEST_UTIL</a></pre>
+</li>
+</ul>
+<a name="TABLE">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>TABLE</h4>
+<pre>private static final&nbsp;org.apache.hadoop.hbase.TableName <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#line.51">TABLE</a></pre>
+</li>
+</ul>
+<a name="CF">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>CF</h4>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#line.52">CF</a></pre>
+</li>
+</ul>
+<a name="ROW">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ROW</h4>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#line.53">ROW</a></pre>
+</li>
+</ul>
+<a name="COLA">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>COLA</h4>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#line.54">COLA</a></pre>
+</li>
+</ul>
+<a name="COLB">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>COLB</h4>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#line.55">COLB</a></pre>
+</li>
+</ul>
+<a name="COLC">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>COLC</h4>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#line.56">COLC</a></pre>
+</li>
+</ul>
+<a name="TS">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TS</h4>
+<pre>private static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#line.57">TS</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.client.TestGetScanColumnsWithNewVersionBehavior.TS">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="TestGetScanColumnsWithNewVersionBehavior--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestGetScanColumnsWithNewVersionBehavior</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#line.44">TestGetScanColumnsWithNewVersionBehavior</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="setUp--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setUp</h4>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#line.60">setUp</a>()
+                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="tearDown--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>tearDown</h4>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#line.73">tearDown</a>()
+                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="test--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>test</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#line.78">test</a>()
+          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
+</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/TestGetScanColumnsWithNewVersionBehavior.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestGetProcedureResult.DummyProcedure.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestGetScanPartialResult.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" target="_top">Frames</a></li>
+<li><a href="TestGetScanColumnsWithNewVersionBehavior.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/org/apache/hadoop/hbase/client/TestGetScanPartialResult.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestGetScanPartialResult.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestGetScanPartialResult.html
index 8c9ffe9..d8672c5 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestGetScanPartialResult.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestGetScanPartialResult.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/client/TestGetProcedureResult.DummyProcedure.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/client/TestHBaseAdminNoCluster.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -404,7 +404,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/client/TestGetProcedureResult.DummyProcedure.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/client/TestHBaseAdminNoCluster.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html
index 29b8700..3bde611 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":10,"i2":9,"i3":10,"i4":9,"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":9};
+var methods = {"i0":9,"i1":10,"i2":9,"i3":10,"i4":9,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":9};
 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/client/TestScannersFromClientSide.html#line.75">TestScannersFromClientSide</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.76">TestScannersFromClientSide</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">A client-side test, mostly testing scanners with various parameters.</div>
 </li>
@@ -258,46 +258,50 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </tr>
 <tr id="i13" class="rowColor">
 <td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#testReverseScanWithFlush--">testReverseScanWithFlush</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i14" class="altColor">
+<td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#testScanBatch--">testScanBatch</a></span>()</code>
 <div class="block">Test from client side for batch of scan</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/client/TestScannersFromClientSide.html#testScanMaxResults--">testScanMaxResults</a></span>()</code>
 <div class="block">Test from client side for scan with maxResultPerCF set</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/client/TestScannersFromClientSide.html#testScannerForNotExistingTable--">testScannerForNotExistingTable</a></span>()</code>
 <div class="block">Scan on not existing table should throw the exception with correct message</div>
 </td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#testScanOnReopenedRegion--">testScanOnReopenedRegion</a></span>()</code>
 <div class="block">Test from client side for scan while the region is reopened
  on the same region server.</div>
 </td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#testScanRawDeleteFamilyVersion--">testScanRawDeleteFamilyVersion</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i19" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#testScanWithColumnsAndFilterAndVersion--">testScanWithColumnsAndFilterAndVersion</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i19" class="rowColor">
+<tr id="i20" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#testScanWithSameStartRowStopRow--">testScanWithSameStartRowStopRow</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i20" class="altColor">
+<tr id="i21" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#testSmallScan--">testSmallScan</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i21" class="rowColor">
+<tr id="i22" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#testSmallScan-org.apache.hadoop.hbase.client.Table-boolean-int-int-">testSmallScan</a></span>(org.apache.hadoop.hbase.client.Table&nbsp;table,
              boolean&nbsp;reversed,
@@ -306,14 +310,14 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div class="block">Run through a variety of test configurations with a small scan</div>
 </td>
 </tr>
-<tr id="i22" class="altColor">
+<tr id="i23" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#verifyExpectedCounts-org.apache.hadoop.hbase.client.Table-org.apache.hadoop.hbase.client.Scan-int-int-">verifyExpectedCounts</a></span>(org.apache.hadoop.hbase.client.Table&nbsp;table,
                     org.apache.hadoop.hbase.client.Scan&nbsp;scan,
                     int&nbsp;expectedRowCount,
                     int&nbsp;expectedCellCount)</code>&nbsp;</td>
 </tr>
-<tr id="i23" class="rowColor">
+<tr id="i24" class="altColor">
 <td class="colFirst"><code>(package private) static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#verifyResult-org.apache.hadoop.hbase.client.Result-java.util.List-boolean-java.lang.String-">verifyResult</a></span>(org.apache.hadoop.hbase.client.Result&nbsp;result,
             <a href="https://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;expKvList,
@@ -348,7 +352,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CLASS_RULE</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.78">CLASS_RULE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.79">CLASS_RULE</a></pre>
 </li>
 </ul>
 <a name="LOG">
@@ -357,7 +361,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.81">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.82">LOG</a></pre>
 </li>
 </ul>
 <a name="TEST_UTIL">
@@ -366,7 +370,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>TEST_UTIL</h4>
-<pre>private static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.83">TEST_UTIL</a></pre>
+<pre>private static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.84">TEST_UTIL</a></pre>
 </li>
 </ul>
 <a name="ROW">
@@ -375,7 +379,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>ROW</h4>
-<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.84">ROW</a></pre>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.85">ROW</a></pre>
 </li>
 </ul>
 <a name="FAMILY">
@@ -384,7 +388,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>FAMILY</h4>
-<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.85">FAMILY</a></pre>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.86">FAMILY</a></pre>
 </li>
 </ul>
 <a name="QUALIFIER">
@@ -393,7 +397,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>QUALIFIER</h4>
-<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.86">QUALIFIER</a></pre>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.87">QUALIFIER</a></pre>
 </li>
 </ul>
 <a name="VALUE">
@@ -402,7 +406,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>VALUE</h4>
-<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.87">VALUE</a></pre>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.88">VALUE</a></pre>
 </li>
 </ul>
 <a name="name">
@@ -411,7 +415,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>name</h4>
-<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.90">name</a></pre>
+<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.91">name</a></pre>
 </li>
 </ul>
 </li>
@@ -428,7 +432,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestScannersFromClientSide</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.75">TestScannersFromClientSide</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.76">TestScannersFromClientSide</a>()</pre>
 </li>
 </ul>
 </li>
@@ -445,7 +449,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setUpBeforeClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.96">setUpBeforeClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.97">setUpBeforeClass</a>()
                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -459,7 +463,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>tearDownAfterClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.106">tearDownAfterClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.107">tearDownAfterClass</a>()
                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -473,7 +477,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setUp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.114">setUp</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.115">setUp</a>()
            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -487,7 +491,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>tearDown</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.122">tearDown</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.123">tearDown</a>()
               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -501,7 +505,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanBatch</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.132">testScanBatch</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.133">testScanBatch</a>()
                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test from client side for batch of scan</div>
 <dl>
@@ -516,7 +520,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testMaxResultSizeIsSetToDefault</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.202">testMaxResultSizeIsSetToDefault</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.203">testMaxResultSizeIsSetToDefault</a>()
                                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -530,7 +534,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScannerForNotExistingTable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.255">testScannerForNotExistingTable</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.256">testScannerForNotExistingTable</a>()</pre>
 <div class="block">Scan on not existing table should throw the exception with correct message</div>
 </li>
 </ul>
@@ -540,7 +544,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testSmallScan</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.273">testSmallScan</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.274">testSmallScan</a>()
                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -554,7 +558,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testSmallScan</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.312">testSmallScan</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.313">testSmallScan</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
                            boolean&nbsp;reversed,
                            int&nbsp;rows,
                            int&nbsp;columns)
@@ -577,7 +581,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>verifyExpectedCounts</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.330">verifyExpectedCounts</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.331">verifyExpectedCounts</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
                                   org.apache.hadoop.hbase.client.Scan&nbsp;scan,
                                   int&nbsp;expectedRowCount,
                                   int&nbsp;expectedCellCount)
@@ -594,7 +598,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetMaxResults</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.355">testGetMaxResults</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.356">testGetMaxResults</a>()
                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test from client side for get with maxResultPerCF set</div>
 <dl>
@@ -609,7 +613,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanMaxResults</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.475">testScanMaxResults</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.476">testScanMaxResults</a>()
                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test from client side for scan with maxResultPerCF set</div>
 <dl>
@@ -624,7 +628,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetRowOffset</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.525">testGetRowOffset</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.526">testGetRowOffset</a>()
                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test from client side for get with rowOffset</div>
 <dl>
@@ -639,7 +643,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanRawDeleteFamilyVersion</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.615">testScanRawDeleteFamilyVersion</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.616">testScanRawDeleteFamilyVersion</a>()
                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -653,7 +657,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanOnReopenedRegion</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.645">testScanOnReopenedRegion</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.646">testScanOnReopenedRegion</a>()
                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Test from client side for scan while the region is reopened
  on the same region server.</div>
@@ -669,7 +673,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testAsyncScannerWithSmallData</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.716">testAsyncScannerWithSmallData</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.717">testAsyncScannerWithSmallData</a>()
                                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -683,7 +687,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testAsyncScannerWithManyRows</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.726">testAsyncScannerWithManyRows</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.727">testAsyncScannerWithManyRows</a>()
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -697,7 +701,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testAsyncScannerWithoutCaching</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.736">testAsyncScannerWithoutCaching</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.737">testAsyncScannerWithoutCaching</a>()
                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -711,7 +715,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testAsyncScanner</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.750">testAsyncScanner</a>(org.apache.hadoop.hbase.TableName&nbsp;table,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.751">testAsyncScanner</a>(org.apache.hadoop.hbase.TableName&nbsp;table,
                               int&nbsp;rowNumber,
                               int&nbsp;familyNumber,
                               int&nbsp;qualifierNumber,
@@ -730,7 +734,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>makeNAsciiWithZeroPrefix</h4>
-<pre>private static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.821">makeNAsciiWithZeroPrefix</a>(byte[]&nbsp;base,
+<pre>private static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.822">makeNAsciiWithZeroPrefix</a>(byte[]&nbsp;base,
                                                  int&nbsp;n)</pre>
 </li>
 </ul>
@@ -740,7 +744,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>verifyResult</h4>
-<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.834">verifyResult</a>(org.apache.hadoop.hbase.client.Result&nbsp;result,
+<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.835">verifyResult</a>(org.apache.hadoop.hbase.client.Result&nbsp;result,
                          <a href="https://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;expKvList,
                          boolean&nbsp;toLog,
                          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;msg)</pre>
@@ -752,7 +756,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testReadExpiredDataForRawScan</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.861">testReadExpiredDataForRawScan</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.862">testReadExpiredDataForRawScan</a>()
                                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -766,7 +770,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanWithColumnsAndFilterAndVersion</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.881">testScanWithColumnsAndFilterAndVersion</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.882">testScanWithColumnsAndFilterAndVersion</a>()
                                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -777,10 +781,10 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <a name="testScanWithSameStartRowStopRow--">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>testScanWithSameStartRowStopRow</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.903">testScanWithSameStartRowStopRow</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.904">testScanWithSameStartRowStopRow</a>()
                                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -788,6 +792,20 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
+<a name="testReverseScanWithFlush--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testReverseScanWithFlush</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.941">testReverseScanWithFlush</a>()
+                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+</dl>
+</li>
+</ul>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestGetScanColumnsWithNewVersionBehavior.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestGetScanColumnsWithNewVersionBehavior.html b/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestGetScanColumnsWithNewVersionBehavior.html
new file mode 100644
index 0000000..1229d98
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/class-use/TestGetScanColumnsWithNewVersionBehavior.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.client.TestGetScanColumnsWithNewVersionBehavior (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.client.TestGetScanColumnsWithNewVersionBehavior (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" title="class in org.apache.hadoop.hbase.client">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/client/class-use/TestGetScanColumnsWithNewVersionBehavior.html" target="_top">Frames</a></li>
+<li><a href="TestGetScanColumnsWithNewVersionBehavior.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.client.TestGetScanColumnsWithNewVersionBehavior" class="title">Uses of Class<br>org.apache.hadoop.hbase.client.TestGetScanColumnsWithNewVersionBehavior</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.client.TestGetScanColumnsWithNewVersionBehavior</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" title="class in org.apache.hadoop.hbase.client">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/client/class-use/TestGetScanColumnsWithNewVersionBehavior.html" target="_top">Frames</a></li>
+<li><a href="TestGetScanColumnsWithNewVersionBehavior.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/org/apache/hadoop/hbase/client/package-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/package-frame.html b/testdevapidocs/org/apache/hadoop/hbase/client/package-frame.html
index 8672090..1f1b415 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/package-frame.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/package-frame.html
@@ -196,6 +196,7 @@
 <li><a href="TestGet.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestGet</a></li>
 <li><a href="TestGetProcedureResult.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestGetProcedureResult</a></li>
 <li><a href="TestGetProcedureResult.DummyProcedure.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestGetProcedureResult.DummyProcedure</a></li>
+<li><a href="TestGetScanColumnsWithNewVersionBehavior.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestGetScanColumnsWithNewVersionBehavior</a></li>
 <li><a href="TestGetScanPartialResult.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestGetScanPartialResult</a></li>
 <li><a href="TestHBaseAdminNoCluster.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestHBaseAdminNoCluster</a></li>
 <li><a href="TestHbck.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestHbck</a></li>


[17/29] hbase-site git commit: Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestingUtility.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestingUtility.html b/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestingUtility.html
index 5374248..e307739 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestingUtility.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/IntegrationTestingUtility.html
@@ -285,7 +285,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" t
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></h3>
-<code><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#assertKVListsEqual-java.lang.String-java.util.List-java.util.List-">assertKVListsEqual</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#assertRegionOnlyOnServer-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-long-">assertRegionOnlyOnServer</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#assertRegionOnServer-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-long-">assertRegionOnServer</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#assignRegion-org.apache.hadoop.hbase.client.RegionInfo-">assignRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#available-int-">available</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#checksumRows-org.apache.hadoop.hbase.client.Table-">checksumRows</a>, <a href="../../../../org/apache/h
 adoop/hbase/HBaseTestingUtility.html#cleanupDataTestDirOnTestFS--">cleanupDataTestDirOnTestFS</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#cleanupDataTestDirOnTestFS-java.lang.String-">cleanupDataTestDirOnTestFS</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#closeRegionAndWAL-org.apache.hadoop.hbase.regionserver.HRegion-">closeRegionAndWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#closeRegionAndWAL-org.apache.hadoop.hbase.regionserver.Region-">closeRegionAndWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#compact-boolean-">compact</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#compact-org.apache.hadoop.hbase.TableName-boolean-">compact</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.regionserver.InternalScanner-">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBas
 eTestingUtility.html#countRows-org.apache.hadoop.hbase.regionserver.Region-">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.client.Scan-">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.client.Table-">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.client.Table-byte:A...-">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.TableName-">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.client.Table-org.apache.hadoop.hbase.client.Scan-">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion-byte:A-byte:A-byte:A-java.lang.String-org.apache.hadoop.conf
 .Configuration-boolean-org.apache.hadoop.hbase.client.Durability-org.apache.hadoop.hbase.wal.WAL-byte:A...-">createLocalHRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.TableDescriptor-">createLocalHRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.wal.WAL-">createLocalHRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion-org.apache.hadoop.hbase.client.TableDescriptor-byte:A-byte:A-">createLocalHRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion-org.apache.hadoop.hbase.TableName-byte:A-byte:A-boolean-org.apache.hadoop.hbase.client.Durability-org.apache.hadoop.hbase.wal.WAL-byte:A...-">createLocalHRegio
 n</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegionWithInMemoryFlags-org.apache.hadoop.hbase.TableName-byte:A-byte:A-boolean-org.apache.hadoop.hbase.client.Durability-org.apache.hadoop.hbase.wal.WAL-boolean:A-byte:A...-">createLocalHRegionWithInMemoryFlags</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHTU--">createLocalHTU</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHTU-org.apache.hadoop.conf.Configuration-">createLocalHTU</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMockRegionServerService--">createMockRegionServerService</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMockRegionServerService-org.apache.hadoop.hbase.ipc.RpcServerInterface-">createMockRegionServerService</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMockRegionServerService-org.apache.hadoop
 .hbase.ServerName-">createMockRegionServerService</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionsInMeta-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.HTableDescriptor-byte:A:A-">createMultiRegionsInMeta</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionsInMeta-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-">createMultiRegionsInMeta</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionTable-org.apache.hadoop.hbase.TableName-byte:A-">createMultiRegionTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionTable-org.apache.hadoop.hbase.TableName-byte:A:A-">createMultiRegionTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionTable-org.apache.hadoop.hbase.TableName-byte:A:A-int-">createMultiRegionTable</a>, <a href=
 "../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionTable-org.apache.hadoop.hbase.TableName-byte:A-int-">createMultiRegionTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor:A-int-">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor:A-org.apache.hadoop.hbase.util.RegionSplitter.SplitAl
 gorithm-int-">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-int-">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.TableName-byte:A:A-org.apache.hadoop.hbase.io.compress.Compression.Algorithm-org.apache.hadoop.hbase.io.encoding.DataBlockEncoding-int-int-org.apache.hadoop.hbase.client.Durability-">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.TableName-byte:A-org.apache.hadoop.hbase.io.compress.Compression.Algorithm-org.apache.hadoop.hbase.io.encoding.DataBlockEncoding-">createPreS
 plitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.TableName-byte:A-org.apache.hadoop.hbase.io.compress.Compression.Algorithm-org.apache.hadoop.hbase.io.encoding.DataBlockEncoding-int-int-org.apache.hadoop.hbase.client.Durability-">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRandomTable-org.apache.hadoop.hbase.TableName-java.util.Collection-int-int-int-int-int-">createRandomTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRegionAndWAL-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.fs.Path-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-">createRegionAndWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRegionAndWAL-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hado
 op.fs.Path-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.io.hfile.BlockCache-">createRegionAndWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRegionAndWAL-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.fs.Path-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-boolean-">createRegionAndWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRegionAndWAL-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.fs.Path-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.mob.MobFileCache-">createRegionAndWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRootDir--">createRootDir</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRootDir-boolean-">createRootDir</a>, <a href="../../../../org/apach
 e/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-byte:A:A-org.apache.hadoop.hbase.regionserver.BloomType-int-org.apache.hadoop.conf.Configuration-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-byte:A:A-org.apache.hadoop.conf.Configuration-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-org.apache.hadoop.conf.Configuration-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createT
 able-org.apache.hadoop.hbase.TableName-byte:A:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-byte:A:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-byte:A:A-int-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-byte:A:A-int-org.apache.hadoop.conf.Configuration-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int
 -byte:A:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int-byte:A-byte:A-int-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int-int-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int-int-java.lang.String-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A-byte:A:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A-int-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-java.lang.String-">createTable</a>, <a href="../../../../org/apache/
 hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-java.lang.String:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor-java.lang.String-">createTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor-java.lang.String-int-int-int-org.apache.hadoop.hbase.KeepDeletedCells-">createTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor-org.apache.hadoop.hbase.TableName-">createTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor-org.apache.hadoop.hbase.TableName-byte:A-">createTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor-org.apache.hadoop.hbase.TableName-byte:A:A-int-">createTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtil
 ity.html#createTableDescriptor-org.apache.hadoop.hbase.TableName-int-int-int-org.apache.hadoop.hbase.KeepDeletedCells-">createTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTestRegion-java.lang.String-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">createTestRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTestRegion-java.lang.String-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-org.apache.hadoop.hbase.io.hfile.BlockCache-">createTestRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createWal-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.client.RegionInfo-">createWal</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createWALRootDir--">createWALRootDir</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#deleteNumericRows-org.apache.hadoop.hbase.client.Table-byt
 e:A-int-int-">deleteNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#deleteTable-org.apache.hadoop.hbase.TableName-">deleteTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#deleteTableData-org.apache.hadoop.hbase.TableName-">deleteTableData</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#deleteTableIfAny-org.apache.hadoop.hbase.TableName-">deleteTableIfAny</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#enableDebug-java.lang.Class-">enableDebug</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#ensureSomeNonStoppedRegionServersAvailable-int-">ensureSomeNonStoppedRegionServersAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#ensureSomeRegionServersAvailable-int-">ensureSomeRegionServersAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#expireMasterSession--">expireMasterS
 ession</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#expireRegionServerSession-int-">expireRegionServerSession</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#expireSession-org.apache.hadoop.hbase.zookeeper.ZKWatcher-">expireSession</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#expireSession-org.apache.hadoop.hbase.zookeeper.ZKWatcher-boolean-">expireSession</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#explainTableAvailability-org.apache.hadoop.hbase.TableName-">explainTableAvailability</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#explainTableState-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.TableState.State-">explainTableState</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#findLastTableState-org.apache.hadoop.hbase.TableName-">findLastTableState</a>, <a href="../../../../org/apache/hadoop/hb
 ase/HBaseTestingUtility.html#flush--">flush</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#flush-org.apache.hadoop.hbase.TableName-">flush</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#generateColumnDescriptors--">generateColumnDescriptors</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#generateColumnDescriptors-java.lang.String-">generateColumnDescriptors</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getAdmin--">getAdmin</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getAllOnlineRegions-org.apache.hadoop.hbase.MiniHBaseCluster-">getAllOnlineRegions</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getClosestRowBefore-org.apache.hadoop.hbase.regionserver.Region-byte:A-byte:A-">getClosestRowBefore</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getClusterKey--">getClusterKey</a>, <a href="../..
 /../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getConfiguration--">getConfiguration</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getConnection--">getConnection</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDataTestDirOnTestFS--">getDataTestDirOnTestFS</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDataTestDirOnTestFS-java.lang.String-">getDataTestDirOnTestFS</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDefaultRootDirPath--">getDefaultRootDirPath</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDefaultRootDirPath-boolean-">getDefaultRootDirPath</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDFSCluster--">getDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDifferentUser-org.apache.hadoop.conf.Configuration-java.lang.String-">getDifferentUser</a>, <a href
 ="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getFromStoreFile-org.apache.hadoop.hbase.regionserver.HStore-byte:A-java.util.NavigableSet-">getFromStoreFile</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getFromStoreFile-org.apache.hadoop.hbase.regionserver.HStore-org.apache.hadoop.hbase.client.Get-">getFromStoreFile</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getHBaseAdmin--">getHBaseAdmin</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getHBaseCluster--">getHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getHBaseClusterInterface--">getHBaseClusterInterface</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getHbck--">getHbck</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMetaRSPort-org.apache.hadoop.hbase.client.Connection-">getMetaRSPort</a>, <a href="../../../../org/apache/hadoop/hbase
 /HBaseTestingUtility.html#getMetaTableDescriptor--">getMetaTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMetaTableDescriptorBuilder--">getMetaTableDescriptorBuilder</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMetaTableRows--">getMetaTableRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMetaTableRows-org.apache.hadoop.hbase.TableName-">getMetaTableRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMiniHBaseCluster--">getMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getNumHFiles-org.apache.hadoop.hbase.TableName-byte:A-">getNumHFiles</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getNumHFilesForRS-org.apache.hadoop.hbase.regionserver.HRegionServer-org.apache.hadoop.hbase.TableName-byte:A-">getNumHFilesForRS</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTesti
 ngUtility.html#getOtherRegionServer-org.apache.hadoop.hbase.regionserver.HRegionServer-">getOtherRegionServer</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getRegionSplitStartKeys-byte:A-byte:A-int-">getRegionSplitStartKeys</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getRSForFirstRegionInTable-org.apache.hadoop.hbase.TableName-">getRSForFirstRegionInTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getSplittableRegion-org.apache.hadoop.hbase.TableName-int-">getSplittableRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getSupportedCompressionAlgorithms--">getSupportedCompressionAlgorithms</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getTestFileSystem--">getTestFileSystem</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#isReadShortCircuitOn--">isReadShortCircuitOn</a>, <a href="../../../../org/apache/hadoop/
 hbase/HBaseTestingUtility.html#killMiniHBaseCluster--">killMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadNumericRows-org.apache.hadoop.hbase.client.Table-byte:A-int-int-">loadNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRandomRows-org.apache.hadoop.hbase.client.Table-byte:A-int-int-">loadRandomRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-">loadRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-boolean-">loadRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion-org.apache.hadoop.hbase.regionserver.Region-byte:A-">loadRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A-">loadTable<
 /a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A:A-">loadTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A:A-byte:A-">loadTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A:A-byte:A-boolean-">loadTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A-boolean-">loadTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#memStoreTSTagsAndOffheapCombination--">memStoreTSTagsAndOffheapCombination</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#modifyTableSync-org.apache.hadoop.hbase.client.Admin-org.apache.hadoop.hbase.client.TableDescriptor-">modifyTableSync</a>, <a href="../../../../org/apache/hadoop/hbase/HBas
 eTestingUtility.html#moveRegionAndWait-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">moveRegionAndWait</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateNoRegionsInTransition--">predicateNoRegionsInTransition</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateTableAvailable-org.apache.hadoop.hbase.TableName-">predicateTableAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateTableDisabled-org.apache.hadoop.hbase.TableName-">predicateTableDisabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateTableEnabled-org.apache.hadoop.hbase.TableName-">predicateTableEnabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#randomFreePort--">randomFreePort</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#randomMultiCastAddress--">randomMultiCastAddress</a>, <a href="../.
 ./../../org/apache/hadoop/hbase/HBaseTestingUtility.html#restartHBaseCluster-int-">restartHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#restartHBaseCluster-int-java.util.List-">restartHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#safeGetAsStr-java.util.List-int-">safeGetAsStr</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setDFSCluster-org.apache.hadoop.hdfs.MiniDFSCluster-">setDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setDFSCluster-org.apache.hadoop.hdfs.MiniDFSCluster-boolean-">setDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setFileSystemURI-java.lang.String-">setFileSystemURI</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setHBaseCluster-org.apache.hadoop.hbase.HBaseCluster-">setHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtilit
 y.html#setMaxRecoveryErrorCount-java.io.OutputStream-int-">setMaxRecoveryErrorCount</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setReplicas-org.apache.hadoop.hbase.client.Admin-org.apache.hadoop.hbase.TableName-int-">setReplicas</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setupDataTestDir--">setupDataTestDir</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setupMiniKdc-java.io.File-">setupMiniKdc</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniCluster--">shutdownMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniDFSCluster--">shutdownMiniDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniHBaseCluster--">shutdownMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniMapReduceCluster--">shutdownMiniMapReduceCluster</a>
 , <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster--">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-boolean-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-boolean-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-boolean-boolean-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-boolean-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-int-">startMiniCluster</a>, <a href="../../../../org/a
 pache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-int-java.lang.String:A-java.lang.Class-java.lang.Class-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-int-java.lang.String:A-java.lang.Class-java.lang.Class-boolean-boolean-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-java.lang.String:A-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-java.lang.String:A-boolean-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-java.lang.String:A-java.lang.Class-java.lang.Class-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-org.apache.hadoop.hbase.StartMiniClusterOption-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HB
 aseTestingUtility.html#startMiniDFSCluster-int-">startMiniDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-int-java.lang.String:A-">startMiniDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-int-java.lang.String:A-java.lang.String:A-">startMiniDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-java.lang.String:A-">startMiniDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSClusterForTestWAL-int-">startMiniDFSClusterForTestWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster--">startMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-int-int-">startMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-int-
 int-java.util.List-">startMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-int-int-java.util.List-java.lang.Class-java.lang.Class-boolean-boolean-">startMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-org.apache.hadoop.hbase.StartMiniClusterOption-">startMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniMapReduceCluster--">startMiniMapReduceCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#truncateTable-org.apache.hadoop.hbase.TableName-">truncateTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#truncateTable-org.apache.hadoop.hbase.TableName-boolean-">truncateTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#unassignRegion-byte:A-">unassignRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUt
 ility.html#unassignRegion-java.lang.String-">unassignRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#unassignRegionByRow-byte:A-org.apache.hadoop.hbase.client.RegionLocator-">unassignRegionByRow</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#unassignRegionByRow-java.lang.String-org.apache.hadoop.hbase.client.RegionLocator-">unassignRegionByRow</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-int-int-">verifyNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-int-int-boolean-">verifyNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.Region-byte:A-int-int-">verifyNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingU
 tility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.Region-byte:A-int-int-boolean-">verifyNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.client.Table-byte:A-int-int-int-">verifyNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyTableDescriptorIgnoreTableName-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.TableDescriptor-">verifyTableDescriptorIgnoreTableName</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitForHostPort-java.lang.String-int-">waitForHostPort</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitLabelAvailable-long-java.lang.String...-">waitLabelAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable-byte:A-long-">waitTableAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility
 .html#waitTableAvailable-org.apache.hadoop.hbase.TableName-">waitTableAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable-org.apache.hadoop.hbase.TableName-long-">waitTableAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled-byte:A-">waitTableDisabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled-byte:A-long-">waitTableDisabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled-org.apache.hadoop.hbase.TableName-long-">waitTableDisabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled-byte:A-long-">waitTableEnabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled-org.apache.hadoop.hbase.TableName-">waitTableEnabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled-org.ap
 ache.hadoop.hbase.TableName-long-">waitTableEnabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllRegionsAssigned-org.apache.hadoop.hbase.TableName-">waitUntilAllRegionsAssigned</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllRegionsAssigned-org.apache.hadoop.hbase.TableName-long-">waitUntilAllRegionsAssigned</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllSystemRegionsAssigned--">waitUntilAllSystemRegionsAssigned</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilNoRegionsInTransition--">waitUntilNoRegionsInTransition</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilNoRegionsInTransition-long-">waitUntilNoRegionsInTransition</a></code></li>
+<code><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#assertKVListsEqual-java.lang.String-java.util.List-java.util.List-">assertKVListsEqual</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#assertRegionOnlyOnServer-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-long-">assertRegionOnlyOnServer</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#assertRegionOnServer-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-long-">assertRegionOnServer</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#assignRegion-org.apache.hadoop.hbase.client.RegionInfo-">assignRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#available-int-">available</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#checksumRows-org.apache.hadoop.hbase.client.Table-">checksumRows</a>, <a href="../../../../org/apache/h
 adoop/hbase/HBaseTestingUtility.html#cleanupDataTestDirOnTestFS--">cleanupDataTestDirOnTestFS</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#cleanupDataTestDirOnTestFS-java.lang.String-">cleanupDataTestDirOnTestFS</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#closeRegionAndWAL-org.apache.hadoop.hbase.regionserver.HRegion-">closeRegionAndWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#closeRegionAndWAL-org.apache.hadoop.hbase.regionserver.Region-">closeRegionAndWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#compact-boolean-">compact</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#compact-org.apache.hadoop.hbase.TableName-boolean-">compact</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.regionserver.InternalScanner-">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBas
 eTestingUtility.html#countRows-org.apache.hadoop.hbase.regionserver.Region-">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.regionserver.Region-org.apache.hadoop.hbase.client.Scan-">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.client.Table-">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.client.Table-byte:A...-">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.TableName-">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#countRows-org.apache.hadoop.hbase.client.Table-org.apache.hadoop.hbase.client.Scan-">countRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion-byte:A-byte:A-byte:A-java.lang.String-org.apache.hadoop.conf
 .Configuration-boolean-org.apache.hadoop.hbase.client.Durability-org.apache.hadoop.hbase.wal.WAL-byte:A...-">createLocalHRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.TableDescriptor-">createLocalHRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.wal.WAL-">createLocalHRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion-org.apache.hadoop.hbase.client.TableDescriptor-byte:A-byte:A-">createLocalHRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegion-org.apache.hadoop.hbase.TableName-byte:A-byte:A-boolean-org.apache.hadoop.hbase.client.Durability-org.apache.hadoop.hbase.wal.WAL-byte:A...-">createLocalHRegio
 n</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHRegionWithInMemoryFlags-org.apache.hadoop.hbase.TableName-byte:A-byte:A-boolean-org.apache.hadoop.hbase.client.Durability-org.apache.hadoop.hbase.wal.WAL-boolean:A-byte:A...-">createLocalHRegionWithInMemoryFlags</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHTU--">createLocalHTU</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createLocalHTU-org.apache.hadoop.conf.Configuration-">createLocalHTU</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMockRegionServerService--">createMockRegionServerService</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMockRegionServerService-org.apache.hadoop.hbase.ipc.RpcServerInterface-">createMockRegionServerService</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMockRegionServerService-org.apache.hadoop
 .hbase.ServerName-">createMockRegionServerService</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionsInMeta-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.HTableDescriptor-byte:A:A-">createMultiRegionsInMeta</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionsInMeta-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-">createMultiRegionsInMeta</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionTable-org.apache.hadoop.hbase.TableName-byte:A-">createMultiRegionTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionTable-org.apache.hadoop.hbase.TableName-byte:A:A-">createMultiRegionTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionTable-org.apache.hadoop.hbase.TableName-byte:A:A-int-">createMultiRegionTable</a>, <a href=
 "../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createMultiRegionTable-org.apache.hadoop.hbase.TableName-byte:A-int-">createMultiRegionTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor:A-int-">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor:A-org.apache.hadoop.hbase.util.RegionSplitter.SplitAl
 gorithm-int-">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-int-">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.TableName-byte:A:A-org.apache.hadoop.hbase.io.compress.Compression.Algorithm-org.apache.hadoop.hbase.io.encoding.DataBlockEncoding-int-int-org.apache.hadoop.hbase.client.Durability-">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.TableName-byte:A-org.apache.hadoop.hbase.io.compress.Compression.Algorithm-org.apache.hadoop.hbase.io.encoding.DataBlockEncoding-">createPreS
 plitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createPreSplitLoadTestTable-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.TableName-byte:A-org.apache.hadoop.hbase.io.compress.Compression.Algorithm-org.apache.hadoop.hbase.io.encoding.DataBlockEncoding-int-int-org.apache.hadoop.hbase.client.Durability-">createPreSplitLoadTestTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRandomTable-org.apache.hadoop.hbase.TableName-java.util.Collection-int-int-int-int-int-">createRandomTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRegionAndWAL-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.fs.Path-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-">createRegionAndWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRegionAndWAL-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hado
 op.fs.Path-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.io.hfile.BlockCache-">createRegionAndWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRegionAndWAL-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.fs.Path-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-boolean-">createRegionAndWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRegionAndWAL-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.fs.Path-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.mob.MobFileCache-">createRegionAndWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRootDir--">createRootDir</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createRootDir-boolean-">createRootDir</a>, <a href="../../../../org/apach
 e/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-byte:A:A-org.apache.hadoop.hbase.regionserver.BloomType-int-org.apache.hadoop.conf.Configuration-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-byte:A:A-org.apache.hadoop.conf.Configuration-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-org.apache.hadoop.conf.Configuration-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createT
 able-org.apache.hadoop.hbase.TableName-byte:A:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-byte:A:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-byte:A:A-int-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-byte:A:A-int-org.apache.hadoop.conf.Configuration-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int
 -byte:A:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int-byte:A-byte:A-int-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int-int-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A:A-int-int-java.lang.String-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A-byte:A:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-byte:A-int-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-java.lang.String-">createTable</a>, <a href="../../../../org/apache/
 hadoop/hbase/HBaseTestingUtility.html#createTable-org.apache.hadoop.hbase.TableName-java.lang.String:A-">createTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor-java.lang.String-">createTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor-java.lang.String-int-int-int-org.apache.hadoop.hbase.KeepDeletedCells-">createTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor-org.apache.hadoop.hbase.TableName-">createTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor-org.apache.hadoop.hbase.TableName-byte:A-">createTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTableDescriptor-org.apache.hadoop.hbase.TableName-byte:A:A-int-">createTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtil
 ity.html#createTableDescriptor-org.apache.hadoop.hbase.TableName-int-int-int-org.apache.hadoop.hbase.KeepDeletedCells-">createTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTestRegion-java.lang.String-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-">createTestRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createTestRegion-java.lang.String-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-org.apache.hadoop.hbase.io.hfile.BlockCache-">createTestRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createWal-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.client.RegionInfo-">createWal</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#createWALRootDir--">createWALRootDir</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#deleteNumericRows-org.apache.hadoop.hbase.client.Table-byt
 e:A-int-int-">deleteNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#deleteTable-org.apache.hadoop.hbase.TableName-">deleteTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#deleteTableData-org.apache.hadoop.hbase.TableName-">deleteTableData</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#deleteTableIfAny-org.apache.hadoop.hbase.TableName-">deleteTableIfAny</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#enableDebug-java.lang.Class-">enableDebug</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#ensureSomeNonStoppedRegionServersAvailable-int-">ensureSomeNonStoppedRegionServersAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#ensureSomeRegionServersAvailable-int-">ensureSomeRegionServersAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#expireMasterSession--">expireMasterS
 ession</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#expireRegionServerSession-int-">expireRegionServerSession</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#expireSession-org.apache.hadoop.hbase.zookeeper.ZKWatcher-">expireSession</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#expireSession-org.apache.hadoop.hbase.zookeeper.ZKWatcher-boolean-">expireSession</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#explainTableAvailability-org.apache.hadoop.hbase.TableName-">explainTableAvailability</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#explainTableState-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.TableState.State-">explainTableState</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#findLastTableState-org.apache.hadoop.hbase.TableName-">findLastTableState</a>, <a href="../../../../org/apache/hadoop/hb
 ase/HBaseTestingUtility.html#flush--">flush</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#flush-org.apache.hadoop.hbase.TableName-">flush</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#generateColumnDescriptors--">generateColumnDescriptors</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#generateColumnDescriptors-java.lang.String-">generateColumnDescriptors</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getAdmin--">getAdmin</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getAllOnlineRegions-org.apache.hadoop.hbase.MiniHBaseCluster-">getAllOnlineRegions</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getClosestRowBefore-org.apache.hadoop.hbase.regionserver.Region-byte:A-byte:A-">getClosestRowBefore</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getClusterKey--">getClusterKey</a>, <a href="../..
 /../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getConfiguration--">getConfiguration</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getConnection--">getConnection</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDataTestDirOnTestFS--">getDataTestDirOnTestFS</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDataTestDirOnTestFS-java.lang.String-">getDataTestDirOnTestFS</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDefaultRootDirPath--">getDefaultRootDirPath</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDefaultRootDirPath-boolean-">getDefaultRootDirPath</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDFSCluster--">getDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getDifferentUser-org.apache.hadoop.conf.Configuration-java.lang.String-">getDifferentUser</a>, <a href
 ="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getFromStoreFile-org.apache.hadoop.hbase.regionserver.HStore-byte:A-java.util.NavigableSet-">getFromStoreFile</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getFromStoreFile-org.apache.hadoop.hbase.regionserver.HStore-org.apache.hadoop.hbase.client.Get-">getFromStoreFile</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getHBaseAdmin--">getHBaseAdmin</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getHBaseCluster--">getHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getHBaseClusterInterface--">getHBaseClusterInterface</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getHbck--">getHbck</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMetaRSPort-org.apache.hadoop.hbase.client.Connection-">getMetaRSPort</a>, <a href="../../../../org/apache/hadoop/hbase
 /HBaseTestingUtility.html#getMetaTableDescriptor--">getMetaTableDescriptor</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMetaTableDescriptorBuilder--">getMetaTableDescriptorBuilder</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMetaTableRows--">getMetaTableRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMetaTableRows-org.apache.hadoop.hbase.TableName-">getMetaTableRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getMiniHBaseCluster--">getMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getNumHFiles-org.apache.hadoop.hbase.TableName-byte:A-">getNumHFiles</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getNumHFilesForRS-org.apache.hadoop.hbase.regionserver.HRegionServer-org.apache.hadoop.hbase.TableName-byte:A-">getNumHFilesForRS</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTesti
 ngUtility.html#getOtherRegionServer-org.apache.hadoop.hbase.regionserver.HRegionServer-">getOtherRegionServer</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getRegionSplitStartKeys-byte:A-byte:A-int-">getRegionSplitStartKeys</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getRSForFirstRegionInTable-org.apache.hadoop.hbase.TableName-">getRSForFirstRegionInTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getSplittableRegion-org.apache.hadoop.hbase.TableName-int-">getSplittableRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getSupportedCompressionAlgorithms--">getSupportedCompressionAlgorithms</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#getTestFileSystem--">getTestFileSystem</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#isNewVersionBehaviorEnabled--">isNewVersionBehaviorEnabled</a>, <a href="../../../../org/
 apache/hadoop/hbase/HBaseTestingUtility.html#isReadShortCircuitOn--">isReadShortCircuitOn</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#killMiniHBaseCluster--">killMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadNumericRows-org.apache.hadoop.hbase.client.Table-byte:A-int-int-">loadNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRandomRows-org.apache.hadoop.hbase.client.Table-byte:A-int-int-">loadRandomRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-">loadRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-boolean-">loadRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion-org.apache.hadoop.hbase.regionserver.Region-byte:A-">loadRegion</a>, <a
  href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A-">loadTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A:A-">loadTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A:A-byte:A-">loadTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A:A-byte:A-boolean-">loadTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A-boolean-">loadTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#memStoreTSTagsAndOffheapCombination--">memStoreTSTagsAndOffheapCombination</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#modifyTableSync-org.apache.hadoop.hbas
 e.client.Admin-org.apache.hadoop.hbase.client.TableDescriptor-">modifyTableSync</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#moveRegionAndWait-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">moveRegionAndWait</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateNoRegionsInTransition--">predicateNoRegionsInTransition</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateTableAvailable-org.apache.hadoop.hbase.TableName-">predicateTableAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateTableDisabled-org.apache.hadoop.hbase.TableName-">predicateTableDisabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateTableEnabled-org.apache.hadoop.hbase.TableName-">predicateTableEnabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#randomFreePort--">randomFreePort</a>, <a 
 href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#randomMultiCastAddress--">randomMultiCastAddress</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#restartHBaseCluster-int-">restartHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#restartHBaseCluster-int-java.util.List-">restartHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#safeGetAsStr-java.util.List-int-">safeGetAsStr</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setDFSCluster-org.apache.hadoop.hdfs.MiniDFSCluster-">setDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setDFSCluster-org.apache.hadoop.hdfs.MiniDFSCluster-boolean-">setDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setFileSystemURI-java.lang.String-">setFileSystemURI</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setHB
 aseCluster-org.apache.hadoop.hbase.HBaseCluster-">setHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setMaxRecoveryErrorCount-java.io.OutputStream-int-">setMaxRecoveryErrorCount</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setReplicas-org.apache.hadoop.hbase.client.Admin-org.apache.hadoop.hbase.TableName-int-">setReplicas</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setupDataTestDir--">setupDataTestDir</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setupMiniKdc-java.io.File-">setupMiniKdc</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniCluster--">shutdownMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniDFSCluster--">shutdownMiniDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniHBaseCluster--">shutdownMiniHBaseCluster</a>, 
 <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniMapReduceCluster--">shutdownMiniMapReduceCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster--">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-boolean-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-boolean-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-boolean-boolean-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-boolean-">startMiniCluster</a>, <a href="../../
 ../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-int-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-int-java.lang.String:A-java.lang.Class-java.lang.Class-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-int-java.lang.String:A-java.lang.Class-java.lang.Class-boolean-boolean-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-java.lang.String:A-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-java.lang.String:A-boolean-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-java.lang.String:A-java.lang.Class-java.lang.Class-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#s
 tartMiniCluster-org.apache.hadoop.hbase.StartMiniClusterOption-">startMiniCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-int-">startMiniDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-int-java.lang.String:A-">startMiniDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-int-java.lang.String:A-java.lang.String:A-">startMiniDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-java.lang.String:A-">startMiniDFSCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSClusterForTestWAL-int-">startMiniDFSClusterForTestWAL</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster--">startMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster
 -int-int-">startMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-int-int-java.util.List-">startMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-int-int-java.util.List-java.lang.Class-java.lang.Class-boolean-boolean-">startMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-org.apache.hadoop.hbase.StartMiniClusterOption-">startMiniHBaseCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniMapReduceCluster--">startMiniMapReduceCluster</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#truncateTable-org.apache.hadoop.hbase.TableName-">truncateTable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#truncateTable-org.apache.hadoop.hbase.TableName-boolean-">truncateTable</a>, <a href="../../../../org/apache/hadoop/
 hbase/HBaseTestingUtility.html#unassignRegion-byte:A-">unassignRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#unassignRegion-java.lang.String-">unassignRegion</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#unassignRegionByRow-byte:A-org.apache.hadoop.hbase.client.RegionLocator-">unassignRegionByRow</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#unassignRegionByRow-java.lang.String-org.apache.hadoop.hbase.client.RegionLocator-">unassignRegionByRow</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-int-int-">verifyNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-int-int-boolean-">verifyNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apac
 he.hadoop.hbase.regionserver.Region-byte:A-int-int-">verifyNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.Region-byte:A-int-int-boolean-">verifyNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.client.Table-byte:A-int-int-int-">verifyNumericRows</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyTableDescriptorIgnoreTableName-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.TableDescriptor-">verifyTableDescriptorIgnoreTableName</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitForHostPort-java.lang.String-int-">waitForHostPort</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitLabelAvailable-long-java.lang.String...-">waitLabelAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTesting
 Utility.html#waitTableAvailable-byte:A-long-">waitTableAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable-org.apache.hadoop.hbase.TableName-">waitTableAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable-org.apache.hadoop.hbase.TableName-long-">waitTableAvailable</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled-byte:A-">waitTableDisabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled-byte:A-long-">waitTableDisabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled-org.apache.hadoop.hbase.TableName-long-">waitTableDisabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled-byte:A-long-">waitTableEnabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled-org.apache.hadoop
 .hbase.TableName-">waitTableEnabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled-org.apache.hadoop.hbase.TableName-long-">waitTableEnabled</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllRegionsAssigned-org.apache.hadoop.hbase.TableName-">waitUntilAllRegionsAssigned</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllRegionsAssigned-org.apache.hadoop.hbase.TableName-long-">waitUntilAllRegionsAssigned</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllSystemRegionsAssigned--">waitUntilAllSystemRegionsAssigned</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilNoRegionsInTransition--">waitUntilNoRegionsInTransition</a>, <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilNoRegionsInTransition-long-">waitUntilNoRegionsInTransition</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.HBaseZKTestingUtility">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
index edcecfc..c145bb2 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
@@ -1647,90 +1647,94 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRestoreSnapshotFromClientSimple.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientSimple.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestGetScanColumnsWithNewVersionBehavior.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestIncrementsFromClientSide.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRestoreSnapshotFromClientSimple.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClientSimple.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestResultSizeEstimation.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestResultSizeEstimation.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestIncrementsFromClientSide.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMultipleTimestamps.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultipleTimestamps.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestResultSizeEstimation.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestResultSizeEstimation.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestFastFail.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestFastFail.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMultipleTimestamps.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultipleTimestamps.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestResultScannerCursor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestResultScannerCursor.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestFastFail.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestFastFail.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAvoidCellReferencesIntoShippedBlocks.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAvoidCellReferencesIntoShippedBlocks.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestResultScannerCursor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestResultScannerCursor.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCloneSnapshotFromClientError.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCloneSnapshotFromClientError.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAvoidCellReferencesIntoShippedBlocks.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAvoidCellReferencesIntoShippedBlocks.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncResultScannerCursor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncResultScannerCursor.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCloneSnapshotFromClientError.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCloneSnapshotFromClientError.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestSnapshotMetadata.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotMetadata.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncResultScannerCursor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncResultScannerCursor.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncTableScannerCloseWhileSuspending.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableScannerCloseWhileSuspending.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSnapshotMetadata.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotMetadata.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMultiRespectsLimits.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiRespectsLimits.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncTableScannerCloseWhileSuspending.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableScannerCloseWhileSuspending.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestClientPushback.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestClientPushback.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMultiRespectsLimits.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiRespectsLimits.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestShell.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestShell.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestClientPushback.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestClientPushback.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestShellNoCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestShellNoCluster.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestShell.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestShell.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAdminShell.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAdminShell.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestShellNoCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestShellNoCluster.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestQuotasShell.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestQuotasShell.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAdminShell.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAdminShell.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAdminShell2.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAdminShell2.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestQuotasShell.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestQuotasShell.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestReplicationShell.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestReplicationShell.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAdminShell2.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAdminShell2.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestTableShell.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableShell.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestReplicationShell.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestReplicationShell.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRpcControllerFactory.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRpcControllerFactory.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestTableShell.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableShell.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TestRpcControllerFactory.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRpcControllerFactory.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAsyncAggregationClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncAggregationClient.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 </tbody>


[29/29] hbase-site git commit: Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.

Posted by gi...@apache.org.
Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.


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

Branch: refs/heads/asf-site
Commit: 70f4ddbc16d5adb2940c8fd0d1d458c40f6a211e
Parents: 7805688
Author: jenkins <bu...@apache.org>
Authored: Tue Dec 25 14:50:14 2018 +0000
Committer: jenkins <bu...@apache.org>
Committed: Tue Dec 25 14:50:14 2018 +0000

----------------------------------------------------------------------
 acid-semantics.html                             |     4 +-
 apache_hbase_reference_guide.pdf                |     4 +-
 book.html                                       |     2 +-
 bulk-loads.html                                 |     4 +-
 checkstyle-aggregate.html                       | 28652 +++++++++--------
 checkstyle.rss                                  |    28 +-
 coc.html                                        |     4 +-
 dependencies.html                               |     4 +-
 dependency-convergence.html                     |     4 +-
 dependency-info.html                            |     4 +-
 dependency-management.html                      |     4 +-
 devapidocs/constant-values.html                 |     4 +-
 devapidocs/index-all.html                       |     6 +-
 .../hadoop/hbase/backup/package-tree.html       |     2 +-
 .../hadoop/hbase/class-use/CellComparator.html  |    17 +-
 .../hadoop/hbase/client/package-tree.html       |    24 +-
 .../hadoop/hbase/filter/package-tree.html       |    10 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |     6 +-
 .../apache/hadoop/hbase/ipc/package-tree.html   |     2 +-
 .../hadoop/hbase/mapreduce/package-tree.html    |     6 +-
 .../apache/hadoop/hbase/master/DeadServer.html  |    42 +-
 .../hadoop/hbase/master/package-tree.html       |     4 +-
 .../hbase/master/procedure/package-tree.html    |     4 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    18 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     6 +-
 .../hadoop/hbase/quotas/package-tree.html       |     6 +-
 .../hbase/regionserver/MobStoreScanner.html     |     2 +-
 .../regionserver/ReversedMobStoreScanner.html   |     4 +-
 .../regionserver/ReversedStoreScanner.html      |    40 +-
 .../hadoop/hbase/regionserver/StoreScanner.html |   122 +-
 .../regionserver/class-use/KeyValueHeap.html    |    10 +
 .../regionserver/class-use/KeyValueScanner.html |    25 +-
 .../hadoop/hbase/regionserver/package-tree.html |    14 +-
 .../querymatcher/NewVersionBehaviorTracker.html |     8 +-
 .../regionserver/querymatcher/package-tree.html |     2 +-
 .../hbase/regionserver/wal/package-tree.html    |     2 +-
 .../hadoop/hbase/rest/model/package-tree.html   |     2 +-
 .../hbase/security/access/package-tree.html     |     4 +-
 .../hadoop/hbase/security/package-tree.html     |     2 +-
 .../hadoop/hbase/thrift/package-tree.html       |     2 +-
 .../apache/hadoop/hbase/util/package-tree.html  |     8 +-
 .../org/apache/hadoop/hbase/Version.html        |     4 +-
 .../apache/hadoop/hbase/master/DeadServer.html  |   481 +-
 .../regionserver/ReversedStoreScanner.html      |   149 +-
 .../hadoop/hbase/regionserver/StoreScanner.html |  1494 +-
 ...rsionBehaviorTracker.DeleteVersionsNode.html |   105 +-
 .../querymatcher/NewVersionBehaviorTracker.html |   105 +-
 downloads.html                                  |     4 +-
 export_control.html                             |     4 +-
 index.html                                      |     4 +-
 integration.html                                |     4 +-
 issue-tracking.html                             |     4 +-
 license.html                                    |     4 +-
 mail-lists.html                                 |     4 +-
 metrics.html                                    |     4 +-
 old_news.html                                   |     4 +-
 plugin-management.html                          |     4 +-
 plugins.html                                    |     8 +-
 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 +-
 testapidocs/index-all.html                      |     5 +
 .../hadoop/hbase/HBaseTestingUtility.html       |   614 +-
 .../hadoop/hbase/HBaseTestingUtility.html       |  7170 +++--
 testdevapidocs/allclasses-frame.html            |     1 +
 testdevapidocs/allclasses-noframe.html          |     1 +
 testdevapidocs/constant-values.html             |    19 +
 testdevapidocs/index-all.html                   |    48 +
 ...lity.PortAllocator.AvailablePortChecker.html |     4 +-
 .../HBaseTestingUtility.PortAllocator.html      |    20 +-
 .../HBaseTestingUtility.SeenRowTracker.html     |    20 +-
 .../hadoop/hbase/HBaseTestingUtility.html       |   654 +-
 .../hadoop/hbase/IntegrationTestingUtility.html |     2 +-
 .../hbase/class-use/HBaseClassTestRule.html     |    46 +-
 .../hbase/class-use/HBaseTestingUtility.html    |    66 +-
 .../hbase/client/TestFromClientSide3.html       |     4 +-
 ...mClientSideScanExcpetion.MyStoreScanner.html |     2 +-
 .../TestGetProcedureResult.DummyProcedure.html  |     4 +-
 ...estGetScanColumnsWithNewVersionBehavior.html |   459 +
 .../hbase/client/TestGetScanPartialResult.html  |     4 +-
 .../client/TestScannersFromClientSide.html      |   110 +-
 ...estGetScanColumnsWithNewVersionBehavior.html |   125 +
 .../hadoop/hbase/client/package-frame.html      |     1 +
 .../hadoop/hbase/client/package-summary.html    |   259 +-
 .../hadoop/hbase/client/package-tree.html       |     1 +
 .../TestBalancerStatusTagInJMXMetrics.html      |    28 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    10 +-
 .../hadoop/hbase/procedure/package-tree.html    |     8 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     2 +-
 .../TestStoreScanner.CellGridStoreScanner.html  |    34 +-
 ....CellWithVersionsNoOptimizeStoreScanner.html |    12 +-
 ...oreScanner.CellWithVersionsStoreScanner.html |    12 +-
 .../hbase/regionserver/TestStoreScanner.html    |    56 +-
 .../hadoop/hbase/regionserver/package-tree.html |     6 +-
 .../TestNewVersionBehaviorTracker.html          |   107 +-
 .../apache/hadoop/hbase/test/package-tree.html  |     2 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |     4 +-
 testdevapidocs/overview-tree.html               |     1 +
 ...lity.PortAllocator.AvailablePortChecker.html |  7170 +++--
 .../HBaseTestingUtility.PortAllocator.html      |  7170 +++--
 .../HBaseTestingUtility.SeenRowTracker.html     |  7170 +++--
 .../hadoop/hbase/HBaseTestingUtility.html       |  7170 +++--
 ...tSide3.WaitingForMultiMutationsObserver.html |     2 +-
 ...tFromClientSide3.WaitingForScanObserver.html |     2 +-
 .../hbase/client/TestFromClientSide3.html       |     2 +-
 ...estGetScanColumnsWithNewVersionBehavior.html |   181 +
 .../client/TestScannersFromClientSide.html      |  1873 +-
 .../TestBalancerStatusTagInJMXMetrics.html      |   230 +-
 .../TestStoreScanner.CellGridStoreScanner.html  |  1580 +-
 ....CellWithVersionsNoOptimizeStoreScanner.html |  1580 +-
 ...oreScanner.CellWithVersionsStoreScanner.html |  1580 +-
 .../TestStoreScanner.KeyValueHeapWithCount.html |  1580 +-
 .../hbase/regionserver/TestStoreScanner.html    |  1580 +-
 .../TestNewVersionBehaviorTracker.html          |   536 +-
 122 files changed, 41159 insertions(+), 39716 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/acid-semantics.html
----------------------------------------------------------------------
diff --git a/acid-semantics.html b/acid-semantics.html
index 29a2658..cc12b83 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="20181222" />
+    <meta name="Date-Revision-yyyymmdd" content="20181225" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) ACID Properties
@@ -611,7 +611,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-12-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-25</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index 69c0a58..ec4358f 100644
--- a/apache_hbase_reference_guide.pdf
+++ b/apache_hbase_reference_guide.pdf
@@ -5,8 +5,8 @@
 /Author (Apache HBase Team)
 /Creator (Asciidoctor PDF 1.5.0.alpha.15, based on Prawn 2.2.2)
 /Producer (Apache HBase Team)
-/ModDate (D:20181222220045+00'00')
-/CreationDate (D:20181222221558+00'00')
+/ModDate (D:20181225143152+00'00')
+/CreationDate (D:20181225144656+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index c71fc5d..57d4dcc 100644
--- a/book.html
+++ b/book.html
@@ -41371,7 +41371,7 @@ org/apache/hadoop/hbase/security/access/AccessControlClient.revoke:(Lorg/apache/
 <div id="footer">
 <div id="footer-text">
 Version 3.0.0-SNAPSHOT<br>
-Last updated 2018-12-22 22:00:45 UTC
+Last updated 2018-12-25 14:31:52 UTC
 </div>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index 76730dd..c5ef841 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="20181222" />
+    <meta name="Date-Revision-yyyymmdd" content="20181225" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Bulk Loads in Apache HBase (TM)
@@ -316,7 +316,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-12-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-25</li>
             </p>
                 </div>
 


[10/29] hbase-site git commit: Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html
index 5c3d7f4..ef2cd13 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html
@@ -721,3236 +721,3236 @@
 <span class="sourceLineNo">713</span>      new Path(root, "mapreduce-am-staging-root-dir").toString());<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>  /**<a name="line.717"></a>
-<span class="sourceLineNo">718</span>   *  Get the HBase setting for dfs.client.read.shortcircuit from the conf or a system property.<a name="line.718"></a>
-<span class="sourceLineNo">719</span>   *  This allows to specify this parameter on the command line.<a name="line.719"></a>
-<span class="sourceLineNo">720</span>   *   If not set, default is true.<a name="line.720"></a>
-<span class="sourceLineNo">721</span>   */<a name="line.721"></a>
-<span class="sourceLineNo">722</span>  public boolean isReadShortCircuitOn(){<a name="line.722"></a>
-<span class="sourceLineNo">723</span>    final String propName = "hbase.tests.use.shortcircuit.reads";<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    String readOnProp = System.getProperty(propName);<a name="line.724"></a>
-<span class="sourceLineNo">725</span>    if (readOnProp != null){<a name="line.725"></a>
-<span class="sourceLineNo">726</span>      return  Boolean.parseBoolean(readOnProp);<a name="line.726"></a>
-<span class="sourceLineNo">727</span>    } else {<a name="line.727"></a>
-<span class="sourceLineNo">728</span>      return conf.getBoolean(propName, false);<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><a name="line.731"></a>
-<span class="sourceLineNo">732</span>  /** Enable the short circuit read, unless configured differently.<a name="line.732"></a>
-<span class="sourceLineNo">733</span>   * Set both HBase and HDFS settings, including skipping the hdfs checksum checks.<a name="line.733"></a>
-<span class="sourceLineNo">734</span>   */<a name="line.734"></a>
-<span class="sourceLineNo">735</span>  private void enableShortCircuit() {<a name="line.735"></a>
-<span class="sourceLineNo">736</span>    if (isReadShortCircuitOn()) {<a name="line.736"></a>
-<span class="sourceLineNo">737</span>      String curUser = System.getProperty("user.name");<a name="line.737"></a>
-<span class="sourceLineNo">738</span>      LOG.info("read short circuit is ON for user " + curUser);<a name="line.738"></a>
-<span class="sourceLineNo">739</span>      // read short circuit, for hdfs<a name="line.739"></a>
-<span class="sourceLineNo">740</span>      conf.set("dfs.block.local-path-access.user", curUser);<a name="line.740"></a>
-<span class="sourceLineNo">741</span>      // read short circuit, for hbase<a name="line.741"></a>
-<span class="sourceLineNo">742</span>      conf.setBoolean("dfs.client.read.shortcircuit", true);<a name="line.742"></a>
-<span class="sourceLineNo">743</span>      // Skip checking checksum, for the hdfs client and the datanode<a name="line.743"></a>
-<span class="sourceLineNo">744</span>      conf.setBoolean("dfs.client.read.shortcircuit.skip.checksum", true);<a name="line.744"></a>
-<span class="sourceLineNo">745</span>    } else {<a name="line.745"></a>
-<span class="sourceLineNo">746</span>      LOG.info("read short circuit is OFF");<a name="line.746"></a>
-<span class="sourceLineNo">747</span>    }<a name="line.747"></a>
-<span class="sourceLineNo">748</span>  }<a name="line.748"></a>
-<span class="sourceLineNo">749</span><a name="line.749"></a>
-<span class="sourceLineNo">750</span>  private String createDirAndSetProperty(final String relPath, String property) {<a name="line.750"></a>
-<span class="sourceLineNo">751</span>    String path = getDataTestDir(relPath).toString();<a name="line.751"></a>
-<span class="sourceLineNo">752</span>    System.setProperty(property, path);<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    conf.set(property, path);<a name="line.753"></a>
-<span class="sourceLineNo">754</span>    new File(path).mkdirs();<a name="line.754"></a>
-<span class="sourceLineNo">755</span>    LOG.info("Setting " + property + " to " + path + " in system properties and HBase conf");<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    return path;<a name="line.756"></a>
-<span class="sourceLineNo">757</span>  }<a name="line.757"></a>
-<span class="sourceLineNo">758</span><a name="line.758"></a>
-<span class="sourceLineNo">759</span>  /**<a name="line.759"></a>
-<span class="sourceLineNo">760</span>   * Shuts down instance created by call to {@link #startMiniDFSCluster(int)}<a name="line.760"></a>
-<span class="sourceLineNo">761</span>   * or does nothing.<a name="line.761"></a>
-<span class="sourceLineNo">762</span>   * @throws IOException<a name="line.762"></a>
-<span class="sourceLineNo">763</span>   */<a name="line.763"></a>
-<span class="sourceLineNo">764</span>  public void shutdownMiniDFSCluster() throws IOException {<a name="line.764"></a>
-<span class="sourceLineNo">765</span>    if (this.dfsCluster != null) {<a name="line.765"></a>
-<span class="sourceLineNo">766</span>      // The below throws an exception per dn, AsynchronousCloseException.<a name="line.766"></a>
-<span class="sourceLineNo">767</span>      this.dfsCluster.shutdown();<a name="line.767"></a>
-<span class="sourceLineNo">768</span>      dfsCluster = null;<a name="line.768"></a>
-<span class="sourceLineNo">769</span>      dataTestDirOnTestFS = null;<a name="line.769"></a>
-<span class="sourceLineNo">770</span>      FSUtils.setFsDefault(this.conf, new Path("file:///"));<a name="line.770"></a>
-<span class="sourceLineNo">771</span>    }<a name="line.771"></a>
-<span class="sourceLineNo">772</span>  }<a name="line.772"></a>
-<span class="sourceLineNo">773</span><a name="line.773"></a>
-<span class="sourceLineNo">774</span>  /**<a name="line.774"></a>
-<span class="sourceLineNo">775</span>   * Start up a minicluster of hbase, dfs, and zookeeper where WAL's walDir is created separately.<a name="line.775"></a>
-<span class="sourceLineNo">776</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.776"></a>
-<span class="sourceLineNo">777</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.777"></a>
-<span class="sourceLineNo">778</span>   * @return The mini HBase cluster created.<a name="line.778"></a>
-<span class="sourceLineNo">779</span>   * @see #shutdownMiniCluster()<a name="line.779"></a>
-<span class="sourceLineNo">780</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.780"></a>
-<span class="sourceLineNo">781</span>   */<a name="line.781"></a>
-<span class="sourceLineNo">782</span>  @Deprecated<a name="line.782"></a>
-<span class="sourceLineNo">783</span>  public MiniHBaseCluster startMiniCluster(boolean createWALDir) throws Exception {<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.784"></a>
-<span class="sourceLineNo">785</span>        .createWALDir(createWALDir).build();<a name="line.785"></a>
-<span class="sourceLineNo">786</span>    return startMiniCluster(option);<a name="line.786"></a>
-<span class="sourceLineNo">787</span>  }<a name="line.787"></a>
-<span class="sourceLineNo">788</span><a name="line.788"></a>
-<span class="sourceLineNo">789</span>  /**<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.791"></a>
-<span class="sourceLineNo">792</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.792"></a>
-<span class="sourceLineNo">793</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.793"></a>
-<span class="sourceLineNo">794</span>   * @return The mini HBase cluster created.<a name="line.794"></a>
-<span class="sourceLineNo">795</span>   * @see #shutdownMiniCluster()<a name="line.795"></a>
-<span class="sourceLineNo">796</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.796"></a>
-<span class="sourceLineNo">797</span>   */<a name="line.797"></a>
-<span class="sourceLineNo">798</span>  @Deprecated<a name="line.798"></a>
-<span class="sourceLineNo">799</span>  public MiniHBaseCluster startMiniCluster(int numSlaves, boolean createRootDir)<a name="line.799"></a>
-<span class="sourceLineNo">800</span>  throws Exception {<a name="line.800"></a>
-<span class="sourceLineNo">801</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.801"></a>
-<span class="sourceLineNo">802</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).createRootDir(createRootDir).build();<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    return startMiniCluster(option);<a name="line.803"></a>
-<span class="sourceLineNo">804</span>  }<a name="line.804"></a>
-<span class="sourceLineNo">805</span><a name="line.805"></a>
-<span class="sourceLineNo">806</span>  /**<a name="line.806"></a>
-<span class="sourceLineNo">807</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.807"></a>
-<span class="sourceLineNo">808</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.808"></a>
-<span class="sourceLineNo">809</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.809"></a>
-<span class="sourceLineNo">810</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.810"></a>
-<span class="sourceLineNo">811</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.811"></a>
-<span class="sourceLineNo">812</span>   * @return The mini HBase cluster created.<a name="line.812"></a>
-<span class="sourceLineNo">813</span>   * @see #shutdownMiniCluster()<a name="line.813"></a>
-<span class="sourceLineNo">814</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.814"></a>
-<span class="sourceLineNo">815</span>   */<a name="line.815"></a>
-<span class="sourceLineNo">816</span>  @Deprecated<a name="line.816"></a>
-<span class="sourceLineNo">817</span>  public MiniHBaseCluster startMiniCluster(int numSlaves, boolean createRootDir,<a name="line.817"></a>
-<span class="sourceLineNo">818</span>      boolean createWALDir) throws Exception {<a name="line.818"></a>
-<span class="sourceLineNo">819</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.819"></a>
-<span class="sourceLineNo">820</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).createRootDir(createRootDir)<a name="line.820"></a>
-<span class="sourceLineNo">821</span>        .createWALDir(createWALDir).build();<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    return startMiniCluster(option);<a name="line.822"></a>
-<span class="sourceLineNo">823</span>  }<a name="line.823"></a>
-<span class="sourceLineNo">824</span><a name="line.824"></a>
-<span class="sourceLineNo">825</span>  /**<a name="line.825"></a>
-<span class="sourceLineNo">826</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.826"></a>
-<span class="sourceLineNo">827</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.827"></a>
-<span class="sourceLineNo">828</span>   * @param numMasters Master node number.<a name="line.828"></a>
-<span class="sourceLineNo">829</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.829"></a>
-<span class="sourceLineNo">830</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.830"></a>
-<span class="sourceLineNo">831</span>   * @return The mini HBase cluster created.<a name="line.831"></a>
-<span class="sourceLineNo">832</span>   * @see #shutdownMiniCluster()<a name="line.832"></a>
-<span class="sourceLineNo">833</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.833"></a>
-<span class="sourceLineNo">834</span>   */<a name="line.834"></a>
-<span class="sourceLineNo">835</span>  @Deprecated<a name="line.835"></a>
-<span class="sourceLineNo">836</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, boolean createRootDir)<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    throws Exception {<a name="line.837"></a>
-<span class="sourceLineNo">838</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.838"></a>
-<span class="sourceLineNo">839</span>        .numMasters(numMasters).numRegionServers(numSlaves).createRootDir(createRootDir)<a name="line.839"></a>
-<span class="sourceLineNo">840</span>        .numDataNodes(numSlaves).build();<a name="line.840"></a>
-<span class="sourceLineNo">841</span>    return startMiniCluster(option);<a name="line.841"></a>
-<span class="sourceLineNo">842</span>  }<a name="line.842"></a>
-<span class="sourceLineNo">843</span><a name="line.843"></a>
-<span class="sourceLineNo">844</span>  /**<a name="line.844"></a>
-<span class="sourceLineNo">845</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.845"></a>
-<span class="sourceLineNo">846</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.846"></a>
-<span class="sourceLineNo">847</span>   * @param numMasters Master node number.<a name="line.847"></a>
-<span class="sourceLineNo">848</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.848"></a>
-<span class="sourceLineNo">849</span>   * @return The mini HBase cluster created.<a name="line.849"></a>
-<span class="sourceLineNo">850</span>   * @see #shutdownMiniCluster()<a name="line.850"></a>
-<span class="sourceLineNo">851</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.851"></a>
-<span class="sourceLineNo">852</span>   */<a name="line.852"></a>
-<span class="sourceLineNo">853</span>  @Deprecated<a name="line.853"></a>
-<span class="sourceLineNo">854</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves) throws Exception {<a name="line.854"></a>
-<span class="sourceLineNo">855</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.855"></a>
-<span class="sourceLineNo">856</span>        .numMasters(numMasters).numRegionServers(numSlaves).numDataNodes(numSlaves).build();<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    return startMiniCluster(option);<a name="line.857"></a>
-<span class="sourceLineNo">858</span>  }<a name="line.858"></a>
-<span class="sourceLineNo">859</span><a name="line.859"></a>
-<span class="sourceLineNo">860</span>  /**<a name="line.860"></a>
-<span class="sourceLineNo">861</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.861"></a>
-<span class="sourceLineNo">862</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.862"></a>
-<span class="sourceLineNo">863</span>   * @param numMasters Master node number.<a name="line.863"></a>
-<span class="sourceLineNo">864</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.864"></a>
-<span class="sourceLineNo">865</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.865"></a>
-<span class="sourceLineNo">866</span>   *                      HDFS data node number.<a name="line.866"></a>
-<span class="sourceLineNo">867</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.867"></a>
-<span class="sourceLineNo">868</span>   * @return The mini HBase cluster created.<a name="line.868"></a>
-<span class="sourceLineNo">869</span>   * @see #shutdownMiniCluster()<a name="line.869"></a>
-<span class="sourceLineNo">870</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.870"></a>
-<span class="sourceLineNo">871</span>   */<a name="line.871"></a>
-<span class="sourceLineNo">872</span>  @Deprecated<a name="line.872"></a>
-<span class="sourceLineNo">873</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts,<a name="line.873"></a>
-<span class="sourceLineNo">874</span>      boolean createRootDir) throws Exception {<a name="line.874"></a>
-<span class="sourceLineNo">875</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.875"></a>
-<span class="sourceLineNo">876</span>        .numMasters(numMasters).numRegionServers(numSlaves).createRootDir(createRootDir)<a name="line.876"></a>
-<span class="sourceLineNo">877</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts).build();<a name="line.877"></a>
-<span class="sourceLineNo">878</span>    return startMiniCluster(option);<a name="line.878"></a>
-<span class="sourceLineNo">879</span>  }<a name="line.879"></a>
-<span class="sourceLineNo">880</span><a name="line.880"></a>
-<span class="sourceLineNo">881</span>  /**<a name="line.881"></a>
-<span class="sourceLineNo">882</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.882"></a>
-<span class="sourceLineNo">883</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.883"></a>
-<span class="sourceLineNo">884</span>   * @param numMasters Master node number.<a name="line.884"></a>
-<span class="sourceLineNo">885</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.885"></a>
-<span class="sourceLineNo">886</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.886"></a>
-<span class="sourceLineNo">887</span>   *                      HDFS data node number.<a name="line.887"></a>
-<span class="sourceLineNo">888</span>   * @return The mini HBase cluster created.<a name="line.888"></a>
-<span class="sourceLineNo">889</span>   * @see #shutdownMiniCluster()<a name="line.889"></a>
-<span class="sourceLineNo">890</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.890"></a>
-<span class="sourceLineNo">891</span>   */<a name="line.891"></a>
-<span class="sourceLineNo">892</span>  @Deprecated<a name="line.892"></a>
-<span class="sourceLineNo">893</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts)<a name="line.893"></a>
-<span class="sourceLineNo">894</span>      throws Exception {<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.895"></a>
-<span class="sourceLineNo">896</span>        .numMasters(numMasters).numRegionServers(numSlaves)<a name="line.896"></a>
-<span class="sourceLineNo">897</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts).build();<a name="line.897"></a>
-<span class="sourceLineNo">898</span>    return startMiniCluster(option);<a name="line.898"></a>
-<span class="sourceLineNo">899</span>  }<a name="line.899"></a>
-<span class="sourceLineNo">900</span><a name="line.900"></a>
-<span class="sourceLineNo">901</span>  /**<a name="line.901"></a>
-<span class="sourceLineNo">902</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.902"></a>
-<span class="sourceLineNo">903</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.903"></a>
-<span class="sourceLineNo">904</span>   * @param numMasters Master node number.<a name="line.904"></a>
-<span class="sourceLineNo">905</span>   * @param numRegionServers Number of region servers.<a name="line.905"></a>
-<span class="sourceLineNo">906</span>   * @param numDataNodes Number of datanodes.<a name="line.906"></a>
-<span class="sourceLineNo">907</span>   * @return The mini HBase cluster created.<a name="line.907"></a>
-<span class="sourceLineNo">908</span>   * @see #shutdownMiniCluster()<a name="line.908"></a>
-<span class="sourceLineNo">909</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.909"></a>
-<span class="sourceLineNo">910</span>   */<a name="line.910"></a>
-<span class="sourceLineNo">911</span>  @Deprecated<a name="line.911"></a>
-<span class="sourceLineNo">912</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes)<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      throws Exception {<a name="line.913"></a>
-<span class="sourceLineNo">914</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.914"></a>
-<span class="sourceLineNo">915</span>        .numMasters(numMasters).numRegionServers(numRegionServers).numDataNodes(numDataNodes)<a name="line.915"></a>
-<span class="sourceLineNo">916</span>        .build();<a name="line.916"></a>
-<span class="sourceLineNo">917</span>    return startMiniCluster(option);<a name="line.917"></a>
-<span class="sourceLineNo">918</span>  }<a name="line.918"></a>
-<span class="sourceLineNo">919</span><a name="line.919"></a>
-<span class="sourceLineNo">920</span>  /**<a name="line.920"></a>
-<span class="sourceLineNo">921</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.921"></a>
-<span class="sourceLineNo">922</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.922"></a>
-<span class="sourceLineNo">923</span>   * @param numMasters Master node number.<a name="line.923"></a>
-<span class="sourceLineNo">924</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.924"></a>
-<span class="sourceLineNo">925</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.925"></a>
-<span class="sourceLineNo">926</span>   *                      HDFS data node number.<a name="line.926"></a>
-<span class="sourceLineNo">927</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.927"></a>
-<span class="sourceLineNo">928</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.928"></a>
-<span class="sourceLineNo">929</span>   * @return The mini HBase cluster created.<a name="line.929"></a>
-<span class="sourceLineNo">930</span>   * @see #shutdownMiniCluster()<a name="line.930"></a>
-<span class="sourceLineNo">931</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.931"></a>
-<span class="sourceLineNo">932</span>   */<a name="line.932"></a>
-<span class="sourceLineNo">933</span>  @Deprecated<a name="line.933"></a>
-<span class="sourceLineNo">934</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts,<a name="line.934"></a>
-<span class="sourceLineNo">935</span>      Class&lt;? extends HMaster&gt; masterClass,<a name="line.935"></a>
-<span class="sourceLineNo">936</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass)<a name="line.936"></a>
-<span class="sourceLineNo">937</span>      throws Exception {<a name="line.937"></a>
-<span class="sourceLineNo">938</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.938"></a>
-<span class="sourceLineNo">939</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.939"></a>
-<span class="sourceLineNo">940</span>        .numRegionServers(numSlaves).rsClass(rsClass)<a name="line.940"></a>
-<span class="sourceLineNo">941</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts)<a name="line.941"></a>
-<span class="sourceLineNo">942</span>        .build();<a name="line.942"></a>
-<span class="sourceLineNo">943</span>    return startMiniCluster(option);<a name="line.943"></a>
-<span class="sourceLineNo">944</span>  }<a name="line.944"></a>
-<span class="sourceLineNo">945</span><a name="line.945"></a>
-<span class="sourceLineNo">946</span>  /**<a name="line.946"></a>
-<span class="sourceLineNo">947</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.947"></a>
-<span class="sourceLineNo">948</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.948"></a>
-<span class="sourceLineNo">949</span>   * @param numMasters Master node number.<a name="line.949"></a>
-<span class="sourceLineNo">950</span>   * @param numRegionServers Number of region servers.<a name="line.950"></a>
-<span class="sourceLineNo">951</span>   * @param numDataNodes Number of datanodes.<a name="line.951"></a>
-<span class="sourceLineNo">952</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.952"></a>
-<span class="sourceLineNo">953</span>   *                      HDFS data node number.<a name="line.953"></a>
-<span class="sourceLineNo">954</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.954"></a>
-<span class="sourceLineNo">955</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.955"></a>
-<span class="sourceLineNo">956</span>   * @return The mini HBase cluster created.<a name="line.956"></a>
-<span class="sourceLineNo">957</span>   * @see #shutdownMiniCluster()<a name="line.957"></a>
-<span class="sourceLineNo">958</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.958"></a>
-<span class="sourceLineNo">959</span>   */<a name="line.959"></a>
-<span class="sourceLineNo">960</span>  @Deprecated<a name="line.960"></a>
-<span class="sourceLineNo">961</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes,<a name="line.961"></a>
-<span class="sourceLineNo">962</span>      String[] dataNodeHosts, Class&lt;? extends HMaster&gt; masterClass,<a name="line.962"></a>
-<span class="sourceLineNo">963</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass)<a name="line.963"></a>
-<span class="sourceLineNo">964</span>    throws Exception {<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.965"></a>
-<span class="sourceLineNo">966</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.966"></a>
-<span class="sourceLineNo">967</span>        .numRegionServers(numRegionServers).rsClass(rsClass)<a name="line.967"></a>
-<span class="sourceLineNo">968</span>        .numDataNodes(numDataNodes).dataNodeHosts(dataNodeHosts)<a name="line.968"></a>
-<span class="sourceLineNo">969</span>        .build();<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    return startMiniCluster(option);<a name="line.970"></a>
-<span class="sourceLineNo">971</span>  }<a name="line.971"></a>
-<span class="sourceLineNo">972</span><a name="line.972"></a>
-<span class="sourceLineNo">973</span>  /**<a name="line.973"></a>
-<span class="sourceLineNo">974</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.974"></a>
-<span class="sourceLineNo">975</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.975"></a>
-<span class="sourceLineNo">976</span>   * @param numMasters Master node number.<a name="line.976"></a>
-<span class="sourceLineNo">977</span>   * @param numRegionServers Number of region servers.<a name="line.977"></a>
-<span class="sourceLineNo">978</span>   * @param numDataNodes Number of datanodes.<a name="line.978"></a>
-<span class="sourceLineNo">979</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.979"></a>
-<span class="sourceLineNo">980</span>   *                      HDFS data node number.<a name="line.980"></a>
-<span class="sourceLineNo">981</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.981"></a>
-<span class="sourceLineNo">982</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.982"></a>
-<span class="sourceLineNo">983</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.983"></a>
-<span class="sourceLineNo">984</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.984"></a>
-<span class="sourceLineNo">985</span>   * @return The mini HBase cluster created.<a name="line.985"></a>
-<span class="sourceLineNo">986</span>   * @see #shutdownMiniCluster()<a name="line.986"></a>
-<span class="sourceLineNo">987</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.987"></a>
-<span class="sourceLineNo">988</span>   */<a name="line.988"></a>
-<span class="sourceLineNo">989</span>  @Deprecated<a name="line.989"></a>
-<span class="sourceLineNo">990</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes,<a name="line.990"></a>
-<span class="sourceLineNo">991</span>      String[] dataNodeHosts, Class&lt;? extends HMaster&gt; masterClass,<a name="line.991"></a>
-<span class="sourceLineNo">992</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass, boolean createRootDir,<a name="line.992"></a>
-<span class="sourceLineNo">993</span>      boolean createWALDir) throws Exception {<a name="line.993"></a>
-<span class="sourceLineNo">994</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.994"></a>
-<span class="sourceLineNo">995</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.995"></a>
-<span class="sourceLineNo">996</span>        .numRegionServers(numRegionServers).rsClass(rsClass)<a name="line.996"></a>
-<span class="sourceLineNo">997</span>        .numDataNodes(numDataNodes).dataNodeHosts(dataNodeHosts)<a name="line.997"></a>
-<span class="sourceLineNo">998</span>        .createRootDir(createRootDir).createWALDir(createWALDir)<a name="line.998"></a>
-<span class="sourceLineNo">999</span>        .build();<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>    return startMiniCluster(option);<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>  }<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span><a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>  /**<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>   * Start up a minicluster of hbase, dfs and zookeeper clusters with given slave node number.<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>   * @param numSlaves slave node number, for both HBase region server and HDFS data node.<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>   * @see #startMiniCluster(StartMiniClusterOption option)<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>   * @see #shutdownMiniDFSCluster()<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>   */<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>  public MiniHBaseCluster startMiniCluster(int numSlaves) throws Exception {<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).build();<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    return startMiniCluster(option);<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>  }<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span><a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>  /**<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>   * Start up a minicluster of hbase, dfs and zookeeper all using default options.<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>   * Option default value can be found in {@link StartMiniClusterOption.Builder}.<a name="line.1018"></a>
+<span class="sourceLineNo">716</span>  /**<a name="line.716"></a>
+<span class="sourceLineNo">717</span>   *  Check whether the tests should assume NEW_VERSION_BEHAVIOR when creating<a name="line.717"></a>
+<span class="sourceLineNo">718</span>   *  new column families. Default to false.<a name="line.718"></a>
+<span class="sourceLineNo">719</span>   */<a name="line.719"></a>
+<span class="sourceLineNo">720</span>  public boolean isNewVersionBehaviorEnabled(){<a name="line.720"></a>
+<span class="sourceLineNo">721</span>    final String propName = "hbase.tests.new.version.behavior";<a name="line.721"></a>
+<span class="sourceLineNo">722</span>    String v = System.getProperty(propName);<a name="line.722"></a>
+<span class="sourceLineNo">723</span>    if (v != null){<a name="line.723"></a>
+<span class="sourceLineNo">724</span>      return Boolean.parseBoolean(v);<a name="line.724"></a>
+<span class="sourceLineNo">725</span>    }<a name="line.725"></a>
+<span class="sourceLineNo">726</span>    return false;<a name="line.726"></a>
+<span class="sourceLineNo">727</span>  }<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>   *  Get the HBase setting for dfs.client.read.shortcircuit from the conf or a system property.<a name="line.730"></a>
+<span class="sourceLineNo">731</span>   *  This allows to specify this parameter on the command line.<a name="line.731"></a>
+<span class="sourceLineNo">732</span>   *   If not set, default is true.<a name="line.732"></a>
+<span class="sourceLineNo">733</span>   */<a name="line.733"></a>
+<span class="sourceLineNo">734</span>  public boolean isReadShortCircuitOn(){<a name="line.734"></a>
+<span class="sourceLineNo">735</span>    final String propName = "hbase.tests.use.shortcircuit.reads";<a name="line.735"></a>
+<span class="sourceLineNo">736</span>    String readOnProp = System.getProperty(propName);<a name="line.736"></a>
+<span class="sourceLineNo">737</span>    if (readOnProp != null){<a name="line.737"></a>
+<span class="sourceLineNo">738</span>      return  Boolean.parseBoolean(readOnProp);<a name="line.738"></a>
+<span class="sourceLineNo">739</span>    } else {<a name="line.739"></a>
+<span class="sourceLineNo">740</span>      return conf.getBoolean(propName, false);<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><a name="line.743"></a>
+<span class="sourceLineNo">744</span>  /** Enable the short circuit read, unless configured differently.<a name="line.744"></a>
+<span class="sourceLineNo">745</span>   * Set both HBase and HDFS settings, including skipping the hdfs checksum checks.<a name="line.745"></a>
+<span class="sourceLineNo">746</span>   */<a name="line.746"></a>
+<span class="sourceLineNo">747</span>  private void enableShortCircuit() {<a name="line.747"></a>
+<span class="sourceLineNo">748</span>    if (isReadShortCircuitOn()) {<a name="line.748"></a>
+<span class="sourceLineNo">749</span>      String curUser = System.getProperty("user.name");<a name="line.749"></a>
+<span class="sourceLineNo">750</span>      LOG.info("read short circuit is ON for user " + curUser);<a name="line.750"></a>
+<span class="sourceLineNo">751</span>      // read short circuit, for hdfs<a name="line.751"></a>
+<span class="sourceLineNo">752</span>      conf.set("dfs.block.local-path-access.user", curUser);<a name="line.752"></a>
+<span class="sourceLineNo">753</span>      // read short circuit, for hbase<a name="line.753"></a>
+<span class="sourceLineNo">754</span>      conf.setBoolean("dfs.client.read.shortcircuit", true);<a name="line.754"></a>
+<span class="sourceLineNo">755</span>      // Skip checking checksum, for the hdfs client and the datanode<a name="line.755"></a>
+<span class="sourceLineNo">756</span>      conf.setBoolean("dfs.client.read.shortcircuit.skip.checksum", true);<a name="line.756"></a>
+<span class="sourceLineNo">757</span>    } else {<a name="line.757"></a>
+<span class="sourceLineNo">758</span>      LOG.info("read short circuit is OFF");<a name="line.758"></a>
+<span class="sourceLineNo">759</span>    }<a name="line.759"></a>
+<span class="sourceLineNo">760</span>  }<a name="line.760"></a>
+<span class="sourceLineNo">761</span><a name="line.761"></a>
+<span class="sourceLineNo">762</span>  private String createDirAndSetProperty(final String relPath, String property) {<a name="line.762"></a>
+<span class="sourceLineNo">763</span>    String path = getDataTestDir(relPath).toString();<a name="line.763"></a>
+<span class="sourceLineNo">764</span>    System.setProperty(property, path);<a name="line.764"></a>
+<span class="sourceLineNo">765</span>    conf.set(property, path);<a name="line.765"></a>
+<span class="sourceLineNo">766</span>    new File(path).mkdirs();<a name="line.766"></a>
+<span class="sourceLineNo">767</span>    LOG.info("Setting " + property + " to " + path + " in system properties and HBase conf");<a name="line.767"></a>
+<span class="sourceLineNo">768</span>    return path;<a name="line.768"></a>
+<span class="sourceLineNo">769</span>  }<a name="line.769"></a>
+<span class="sourceLineNo">770</span><a name="line.770"></a>
+<span class="sourceLineNo">771</span>  /**<a name="line.771"></a>
+<span class="sourceLineNo">772</span>   * Shuts down instance created by call to {@link #startMiniDFSCluster(int)}<a name="line.772"></a>
+<span class="sourceLineNo">773</span>   * or does nothing.<a name="line.773"></a>
+<span class="sourceLineNo">774</span>   * @throws IOException<a name="line.774"></a>
+<span class="sourceLineNo">775</span>   */<a name="line.775"></a>
+<span class="sourceLineNo">776</span>  public void shutdownMiniDFSCluster() throws IOException {<a name="line.776"></a>
+<span class="sourceLineNo">777</span>    if (this.dfsCluster != null) {<a name="line.777"></a>
+<span class="sourceLineNo">778</span>      // The below throws an exception per dn, AsynchronousCloseException.<a name="line.778"></a>
+<span class="sourceLineNo">779</span>      this.dfsCluster.shutdown();<a name="line.779"></a>
+<span class="sourceLineNo">780</span>      dfsCluster = null;<a name="line.780"></a>
+<span class="sourceLineNo">781</span>      dataTestDirOnTestFS = null;<a name="line.781"></a>
+<span class="sourceLineNo">782</span>      FSUtils.setFsDefault(this.conf, new Path("file:///"));<a name="line.782"></a>
+<span class="sourceLineNo">783</span>    }<a name="line.783"></a>
+<span class="sourceLineNo">784</span>  }<a name="line.784"></a>
+<span class="sourceLineNo">785</span><a name="line.785"></a>
+<span class="sourceLineNo">786</span>  /**<a name="line.786"></a>
+<span class="sourceLineNo">787</span>   * Start up a minicluster of hbase, dfs, and zookeeper where WAL's walDir is created separately.<a name="line.787"></a>
+<span class="sourceLineNo">788</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.788"></a>
+<span class="sourceLineNo">789</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.789"></a>
+<span class="sourceLineNo">790</span>   * @return The mini HBase cluster created.<a name="line.790"></a>
+<span class="sourceLineNo">791</span>   * @see #shutdownMiniCluster()<a name="line.791"></a>
+<span class="sourceLineNo">792</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.792"></a>
+<span class="sourceLineNo">793</span>   */<a name="line.793"></a>
+<span class="sourceLineNo">794</span>  @Deprecated<a name="line.794"></a>
+<span class="sourceLineNo">795</span>  public MiniHBaseCluster startMiniCluster(boolean createWALDir) throws Exception {<a name="line.795"></a>
+<span class="sourceLineNo">796</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.796"></a>
+<span class="sourceLineNo">797</span>        .createWALDir(createWALDir).build();<a name="line.797"></a>
+<span class="sourceLineNo">798</span>    return startMiniCluster(option);<a name="line.798"></a>
+<span class="sourceLineNo">799</span>  }<a name="line.799"></a>
+<span class="sourceLineNo">800</span><a name="line.800"></a>
+<span class="sourceLineNo">801</span>  /**<a name="line.801"></a>
+<span class="sourceLineNo">802</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.802"></a>
+<span class="sourceLineNo">803</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.803"></a>
+<span class="sourceLineNo">804</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.804"></a>
+<span class="sourceLineNo">805</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.805"></a>
+<span class="sourceLineNo">806</span>   * @return The mini HBase cluster created.<a name="line.806"></a>
+<span class="sourceLineNo">807</span>   * @see #shutdownMiniCluster()<a name="line.807"></a>
+<span class="sourceLineNo">808</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.808"></a>
+<span class="sourceLineNo">809</span>   */<a name="line.809"></a>
+<span class="sourceLineNo">810</span>  @Deprecated<a name="line.810"></a>
+<span class="sourceLineNo">811</span>  public MiniHBaseCluster startMiniCluster(int numSlaves, boolean createRootDir)<a name="line.811"></a>
+<span class="sourceLineNo">812</span>  throws Exception {<a name="line.812"></a>
+<span class="sourceLineNo">813</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.813"></a>
+<span class="sourceLineNo">814</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).createRootDir(createRootDir).build();<a name="line.814"></a>
+<span class="sourceLineNo">815</span>    return startMiniCluster(option);<a name="line.815"></a>
+<span class="sourceLineNo">816</span>  }<a name="line.816"></a>
+<span class="sourceLineNo">817</span><a name="line.817"></a>
+<span class="sourceLineNo">818</span>  /**<a name="line.818"></a>
+<span class="sourceLineNo">819</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.819"></a>
+<span class="sourceLineNo">820</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.820"></a>
+<span class="sourceLineNo">821</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.821"></a>
+<span class="sourceLineNo">822</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.822"></a>
+<span class="sourceLineNo">823</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.823"></a>
+<span class="sourceLineNo">824</span>   * @return The mini HBase cluster created.<a name="line.824"></a>
+<span class="sourceLineNo">825</span>   * @see #shutdownMiniCluster()<a name="line.825"></a>
+<span class="sourceLineNo">826</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.826"></a>
+<span class="sourceLineNo">827</span>   */<a name="line.827"></a>
+<span class="sourceLineNo">828</span>  @Deprecated<a name="line.828"></a>
+<span class="sourceLineNo">829</span>  public MiniHBaseCluster startMiniCluster(int numSlaves, boolean createRootDir,<a name="line.829"></a>
+<span class="sourceLineNo">830</span>      boolean createWALDir) throws Exception {<a name="line.830"></a>
+<span class="sourceLineNo">831</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.831"></a>
+<span class="sourceLineNo">832</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).createRootDir(createRootDir)<a name="line.832"></a>
+<span class="sourceLineNo">833</span>        .createWALDir(createWALDir).build();<a name="line.833"></a>
+<span class="sourceLineNo">834</span>    return startMiniCluster(option);<a name="line.834"></a>
+<span class="sourceLineNo">835</span>  }<a name="line.835"></a>
+<span class="sourceLineNo">836</span><a name="line.836"></a>
+<span class="sourceLineNo">837</span>  /**<a name="line.837"></a>
+<span class="sourceLineNo">838</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.838"></a>
+<span class="sourceLineNo">839</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.839"></a>
+<span class="sourceLineNo">840</span>   * @param numMasters Master node number.<a name="line.840"></a>
+<span class="sourceLineNo">841</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.841"></a>
+<span class="sourceLineNo">842</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.842"></a>
+<span class="sourceLineNo">843</span>   * @return The mini HBase cluster created.<a name="line.843"></a>
+<span class="sourceLineNo">844</span>   * @see #shutdownMiniCluster()<a name="line.844"></a>
+<span class="sourceLineNo">845</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.845"></a>
+<span class="sourceLineNo">846</span>   */<a name="line.846"></a>
+<span class="sourceLineNo">847</span>  @Deprecated<a name="line.847"></a>
+<span class="sourceLineNo">848</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, boolean createRootDir)<a name="line.848"></a>
+<span class="sourceLineNo">849</span>    throws Exception {<a name="line.849"></a>
+<span class="sourceLineNo">850</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.850"></a>
+<span class="sourceLineNo">851</span>        .numMasters(numMasters).numRegionServers(numSlaves).createRootDir(createRootDir)<a name="line.851"></a>
+<span class="sourceLineNo">852</span>        .numDataNodes(numSlaves).build();<a name="line.852"></a>
+<span class="sourceLineNo">853</span>    return startMiniCluster(option);<a name="line.853"></a>
+<span class="sourceLineNo">854</span>  }<a name="line.854"></a>
+<span class="sourceLineNo">855</span><a name="line.855"></a>
+<span class="sourceLineNo">856</span>  /**<a name="line.856"></a>
+<span class="sourceLineNo">857</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.857"></a>
+<span class="sourceLineNo">858</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.858"></a>
+<span class="sourceLineNo">859</span>   * @param numMasters Master node number.<a name="line.859"></a>
+<span class="sourceLineNo">860</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.860"></a>
+<span class="sourceLineNo">861</span>   * @return The mini HBase cluster created.<a name="line.861"></a>
+<span class="sourceLineNo">862</span>   * @see #shutdownMiniCluster()<a name="line.862"></a>
+<span class="sourceLineNo">863</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.863"></a>
+<span class="sourceLineNo">864</span>   */<a name="line.864"></a>
+<span class="sourceLineNo">865</span>  @Deprecated<a name="line.865"></a>
+<span class="sourceLineNo">866</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves) throws Exception {<a name="line.866"></a>
+<span class="sourceLineNo">867</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.867"></a>
+<span class="sourceLineNo">868</span>        .numMasters(numMasters).numRegionServers(numSlaves).numDataNodes(numSlaves).build();<a name="line.868"></a>
+<span class="sourceLineNo">869</span>    return startMiniCluster(option);<a name="line.869"></a>
+<span class="sourceLineNo">870</span>  }<a name="line.870"></a>
+<span class="sourceLineNo">871</span><a name="line.871"></a>
+<span class="sourceLineNo">872</span>  /**<a name="line.872"></a>
+<span class="sourceLineNo">873</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.873"></a>
+<span class="sourceLineNo">874</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.874"></a>
+<span class="sourceLineNo">875</span>   * @param numMasters Master node number.<a name="line.875"></a>
+<span class="sourceLineNo">876</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.876"></a>
+<span class="sourceLineNo">877</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.877"></a>
+<span class="sourceLineNo">878</span>   *                      HDFS data node number.<a name="line.878"></a>
+<span class="sourceLineNo">879</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.879"></a>
+<span class="sourceLineNo">880</span>   * @return The mini HBase cluster created.<a name="line.880"></a>
+<span class="sourceLineNo">881</span>   * @see #shutdownMiniCluster()<a name="line.881"></a>
+<span class="sourceLineNo">882</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.882"></a>
+<span class="sourceLineNo">883</span>   */<a name="line.883"></a>
+<span class="sourceLineNo">884</span>  @Deprecated<a name="line.884"></a>
+<span class="sourceLineNo">885</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts,<a name="line.885"></a>
+<span class="sourceLineNo">886</span>      boolean createRootDir) throws Exception {<a name="line.886"></a>
+<span class="sourceLineNo">887</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.887"></a>
+<span class="sourceLineNo">888</span>        .numMasters(numMasters).numRegionServers(numSlaves).createRootDir(createRootDir)<a name="line.888"></a>
+<span class="sourceLineNo">889</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts).build();<a name="line.889"></a>
+<span class="sourceLineNo">890</span>    return startMiniCluster(option);<a name="line.890"></a>
+<span class="sourceLineNo">891</span>  }<a name="line.891"></a>
+<span class="sourceLineNo">892</span><a name="line.892"></a>
+<span class="sourceLineNo">893</span>  /**<a name="line.893"></a>
+<span class="sourceLineNo">894</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.894"></a>
+<span class="sourceLineNo">895</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.895"></a>
+<span class="sourceLineNo">896</span>   * @param numMasters Master node number.<a name="line.896"></a>
+<span class="sourceLineNo">897</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.897"></a>
+<span class="sourceLineNo">898</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.898"></a>
+<span class="sourceLineNo">899</span>   *                      HDFS data node number.<a name="line.899"></a>
+<span class="sourceLineNo">900</span>   * @return The mini HBase cluster created.<a name="line.900"></a>
+<span class="sourceLineNo">901</span>   * @see #shutdownMiniCluster()<a name="line.901"></a>
+<span class="sourceLineNo">902</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.902"></a>
+<span class="sourceLineNo">903</span>   */<a name="line.903"></a>
+<span class="sourceLineNo">904</span>  @Deprecated<a name="line.904"></a>
+<span class="sourceLineNo">905</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts)<a name="line.905"></a>
+<span class="sourceLineNo">906</span>      throws Exception {<a name="line.906"></a>
+<span class="sourceLineNo">907</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.907"></a>
+<span class="sourceLineNo">908</span>        .numMasters(numMasters).numRegionServers(numSlaves)<a name="line.908"></a>
+<span class="sourceLineNo">909</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts).build();<a name="line.909"></a>
+<span class="sourceLineNo">910</span>    return startMiniCluster(option);<a name="line.910"></a>
+<span class="sourceLineNo">911</span>  }<a name="line.911"></a>
+<span class="sourceLineNo">912</span><a name="line.912"></a>
+<span class="sourceLineNo">913</span>  /**<a name="line.913"></a>
+<span class="sourceLineNo">914</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.914"></a>
+<span class="sourceLineNo">915</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.915"></a>
+<span class="sourceLineNo">916</span>   * @param numMasters Master node number.<a name="line.916"></a>
+<span class="sourceLineNo">917</span>   * @param numRegionServers Number of region servers.<a name="line.917"></a>
+<span class="sourceLineNo">918</span>   * @param numDataNodes Number of datanodes.<a name="line.918"></a>
+<span class="sourceLineNo">919</span>   * @return The mini HBase cluster created.<a name="line.919"></a>
+<span class="sourceLineNo">920</span>   * @see #shutdownMiniCluster()<a name="line.920"></a>
+<span class="sourceLineNo">921</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.921"></a>
+<span class="sourceLineNo">922</span>   */<a name="line.922"></a>
+<span class="sourceLineNo">923</span>  @Deprecated<a name="line.923"></a>
+<span class="sourceLineNo">924</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes)<a name="line.924"></a>
+<span class="sourceLineNo">925</span>      throws Exception {<a name="line.925"></a>
+<span class="sourceLineNo">926</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.926"></a>
+<span class="sourceLineNo">927</span>        .numMasters(numMasters).numRegionServers(numRegionServers).numDataNodes(numDataNodes)<a name="line.927"></a>
+<span class="sourceLineNo">928</span>        .build();<a name="line.928"></a>
+<span class="sourceLineNo">929</span>    return startMiniCluster(option);<a name="line.929"></a>
+<span class="sourceLineNo">930</span>  }<a name="line.930"></a>
+<span class="sourceLineNo">931</span><a name="line.931"></a>
+<span class="sourceLineNo">932</span>  /**<a name="line.932"></a>
+<span class="sourceLineNo">933</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.933"></a>
+<span class="sourceLineNo">934</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.934"></a>
+<span class="sourceLineNo">935</span>   * @param numMasters Master node number.<a name="line.935"></a>
+<span class="sourceLineNo">936</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.936"></a>
+<span class="sourceLineNo">937</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.937"></a>
+<span class="sourceLineNo">938</span>   *                      HDFS data node number.<a name="line.938"></a>
+<span class="sourceLineNo">939</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.939"></a>
+<span class="sourceLineNo">940</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.940"></a>
+<span class="sourceLineNo">941</span>   * @return The mini HBase cluster created.<a name="line.941"></a>
+<span class="sourceLineNo">942</span>   * @see #shutdownMiniCluster()<a name="line.942"></a>
+<span class="sourceLineNo">943</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.943"></a>
+<span class="sourceLineNo">944</span>   */<a name="line.944"></a>
+<span class="sourceLineNo">945</span>  @Deprecated<a name="line.945"></a>
+<span class="sourceLineNo">946</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts,<a name="line.946"></a>
+<span class="sourceLineNo">947</span>      Class&lt;? extends HMaster&gt; masterClass,<a name="line.947"></a>
+<span class="sourceLineNo">948</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass)<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      throws Exception {<a name="line.949"></a>
+<span class="sourceLineNo">950</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.951"></a>
+<span class="sourceLineNo">952</span>        .numRegionServers(numSlaves).rsClass(rsClass)<a name="line.952"></a>
+<span class="sourceLineNo">953</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts)<a name="line.953"></a>
+<span class="sourceLineNo">954</span>        .build();<a name="line.954"></a>
+<span class="sourceLineNo">955</span>    return startMiniCluster(option);<a name="line.955"></a>
+<span class="sourceLineNo">956</span>  }<a name="line.956"></a>
+<span class="sourceLineNo">957</span><a name="line.957"></a>
+<span class="sourceLineNo">958</span>  /**<a name="line.958"></a>
+<span class="sourceLineNo">959</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.959"></a>
+<span class="sourceLineNo">960</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.960"></a>
+<span class="sourceLineNo">961</span>   * @param numMasters Master node number.<a name="line.961"></a>
+<span class="sourceLineNo">962</span>   * @param numRegionServers Number of region servers.<a name="line.962"></a>
+<span class="sourceLineNo">963</span>   * @param numDataNodes Number of datanodes.<a name="line.963"></a>
+<span class="sourceLineNo">964</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.964"></a>
+<span class="sourceLineNo">965</span>   *                      HDFS data node number.<a name="line.965"></a>
+<span class="sourceLineNo">966</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.966"></a>
+<span class="sourceLineNo">967</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.967"></a>
+<span class="sourceLineNo">968</span>   * @return The mini HBase cluster created.<a name="line.968"></a>
+<span class="sourceLineNo">969</span>   * @see #shutdownMiniCluster()<a name="line.969"></a>
+<span class="sourceLineNo">970</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.970"></a>
+<span class="sourceLineNo">971</span>   */<a name="line.971"></a>
+<span class="sourceLineNo">972</span>  @Deprecated<a name="line.972"></a>
+<span class="sourceLineNo">973</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes,<a name="line.973"></a>
+<span class="sourceLineNo">974</span>      String[] dataNodeHosts, Class&lt;? extends HMaster&gt; masterClass,<a name="line.974"></a>
+<span class="sourceLineNo">975</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass)<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    throws Exception {<a name="line.976"></a>
+<span class="sourceLineNo">977</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.977"></a>
+<span class="sourceLineNo">978</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.978"></a>
+<span class="sourceLineNo">979</span>        .numRegionServers(numRegionServers).rsClass(rsClass)<a name="line.979"></a>
+<span class="sourceLineNo">980</span>        .numDataNodes(numDataNodes).dataNodeHosts(dataNodeHosts)<a name="line.980"></a>
+<span class="sourceLineNo">981</span>        .build();<a name="line.981"></a>
+<span class="sourceLineNo">982</span>    return startMiniCluster(option);<a name="line.982"></a>
+<span class="sourceLineNo">983</span>  }<a name="line.983"></a>
+<span class="sourceLineNo">984</span><a name="line.984"></a>
+<span class="sourceLineNo">985</span>  /**<a name="line.985"></a>
+<span class="sourceLineNo">986</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.986"></a>
+<span class="sourceLineNo">987</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.987"></a>
+<span class="sourceLineNo">988</span>   * @param numMasters Master node number.<a name="line.988"></a>
+<span class="sourceLineNo">989</span>   * @param numRegionServers Number of region servers.<a name="line.989"></a>
+<span class="sourceLineNo">990</span>   * @param numDataNodes Number of datanodes.<a name="line.990"></a>
+<span class="sourceLineNo">991</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.991"></a>
+<span class="sourceLineNo">992</span>   *                      HDFS data node number.<a name="line.992"></a>
+<span class="sourceLineNo">993</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.993"></a>
+<span class="sourceLineNo">994</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.994"></a>
+<span class="sourceLineNo">995</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.995"></a>
+<span class="sourceLineNo">996</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.996"></a>
+<span class="sourceLineNo">997</span>   * @return The mini HBase cluster created.<a name="line.997"></a>
+<span class="sourceLineNo">998</span>   * @see #shutdownMiniCluster()<a name="line.998"></a>
+<span class="sourceLineNo">999</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.999"></a>
+<span class="sourceLineNo">1000</span>   */<a name="line.1000"></a>
+<span class="sourceLineNo">1001</span>  @Deprecated<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes,<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span>      String[] dataNodeHosts, Class&lt;? extends HMaster&gt; masterClass,<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass, boolean createRootDir,<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>      boolean createWALDir) throws Exception {<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>        .numRegionServers(numRegionServers).rsClass(rsClass)<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>        .numDataNodes(numDataNodes).dataNodeHosts(dataNodeHosts)<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>        .createRootDir(createRootDir).createWALDir(createWALDir)<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>        .build();<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>    return startMiniCluster(option);<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span>  }<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span><a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>  /**<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>   * Start up a minicluster of hbase, dfs and zookeeper clusters with given slave node number.<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>   * @param numSlaves slave node number, for both HBase region server and HDFS data node.<a name="line.1018"></a>
 <span class="sourceLineNo">1019</span>   * @see #startMiniCluster(StartMiniClusterOption option)<a name="line.1019"></a>
 <span class="sourceLineNo">1020</span>   * @see #shutdownMiniDFSCluster()<a name="line.1020"></a>
 <span class="sourceLineNo">1021</span>   */<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>  public MiniHBaseCluster startMiniCluster() throws Exception {<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>    return startMiniCluster(StartMiniClusterOption.builder().build());<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>  }<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>   * Start up a mini cluster of hbase, optionally dfs and zookeeper if needed.<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>   * It modifies Configuration.  It homes the cluster data directory under a random<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>   * subdirectory in a directory under System property test.build.data, to be cleaned up on exit.<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>   * @see #shutdownMiniDFSCluster()<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>   */<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>  public MiniHBaseCluster startMiniCluster(StartMiniClusterOption option) throws Exception {<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>    LOG.info("Starting up minicluster with option: {}", option);<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span><a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>    // If we already put up a cluster, fail.<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>    if (miniClusterRunning) {<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>      throw new IllegalStateException("A mini-cluster is already running");<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>    }<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>    miniClusterRunning = true;<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span><a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>    setupClusterTestDir();<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>    System.setProperty(TEST_DIRECTORY_KEY, this.clusterTestDir.getPath());<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span><a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>    // Bring up mini dfs cluster. This spews a bunch of warnings about missing<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>    // scheme. Complaints are 'Scheme is undefined for build/test/data/dfs/name1'.<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>    if (dfsCluster == null) {<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>      LOG.info("STARTING DFS");<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>      dfsCluster = startMiniDFSCluster(option.getNumDataNodes(), option.getDataNodeHosts());<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>    } else {<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>      LOG.info("NOT STARTING DFS");<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>    }<a name="line.1051"></a>
+<span class="sourceLineNo">1022</span>  public MiniHBaseCluster startMiniCluster(int numSlaves) throws Exception {<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).build();<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>    return startMiniCluster(option);<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>  }<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span><a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>  /**<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>   * Start up a minicluster of hbase, dfs and zookeeper all using default options.<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>   * Option default value can be found in {@link StartMiniClusterOption.Builder}.<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span>   * @see #startMiniCluster(StartMiniClusterOption option)<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>   * @see #shutdownMiniDFSCluster()<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>   */<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>  public MiniHBaseCluster startMiniCluster() throws Exception {<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>    return startMiniCluster(StartMiniClusterOption.builder().build());<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>  }<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span><a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>  /**<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>   * Start up a mini cluster of hbase, optionally dfs and zookeeper if needed.<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>   * It modifies Configuration.  It homes the cluster data directory under a random<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>   * subdirectory in a directory under System property test.build.data, to be cleaned up on exit.<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>   * @see #shutdownMiniDFSCluster()<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>   */<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>  public MiniHBaseCluster startMiniCluster(StartMiniClusterOption option) throws Exception {<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>    LOG.info("Starting up minicluster with option: {}", option);<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span><a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>    // If we already put up a cluster, fail.<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>    if (miniClusterRunning) {<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>      throw new IllegalStateException("A mini-cluster is already running");<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>    }<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>    miniClusterRunning = true;<a name="line.1051"></a>
 <span class="sourceLineNo">1052</span><a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>    // Start up a zk cluster.<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>    if (getZkCluster() == null) {<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>      startMiniZKCluster(option.getNumZkServers());<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>    }<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span><a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>    // Start the MiniHBaseCluster<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>    return startMiniHBaseCluster(option);<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>  }<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span><a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>  /**<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>   * Starts up mini hbase cluster.<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>   * Usually you won't want this.  You'll usually want {@link #startMiniCluster()}.<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>   * This is useful when doing stepped startup of clusters.<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>   * @return Reference to the hbase mini hbase cluster.<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>   * @see #startMiniCluster(StartMiniClusterOption)<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>   * @see #shutdownMiniHBaseCluster()<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>   */<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>  public MiniHBaseCluster startMiniHBaseCluster(StartMiniClusterOption option)<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>      throws IOException, InterruptedException {<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>    // Now do the mini hbase cluster.  Set the hbase.rootdir in config.<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>    createRootDir(option.isCreateRootDir());<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>    if (option.isCreateWALDir()) {<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>      createWALRootDir();<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span>    }<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>    // Set the hbase.fs.tmp.dir config to make sure that we have some default value. This is<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>    // for tests that do not read hbase-defaults.xml<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>    setHBaseFsTmpDir();<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span><a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>    // These settings will make the server waits until this exact number of<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>    // regions servers are connected.<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>    if (conf.getInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, -1) == -1) {<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>      conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, option.getNumRegionServers());<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>    }<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>    if (conf.getInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, -1) == -1) {<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>      conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, option.getNumRegionServers());<a name="line.1087"></a>
+<span class="sourceLineNo">1053</span>    setupClusterTestDir();<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>    System.setProperty(TEST_DIRECTORY_KEY, this.clusterTestDir.getPath());<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span><a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>    // Bring up mini dfs cluster. This spews a bunch of warnings about missing<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>    // scheme. Complaints are 'Scheme is undefined for build/test/data/dfs/name1'.<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>    if (dfsCluster == null) {<a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>      LOG.info("STARTING DFS");<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>      dfsCluster = startMiniDFSCluster(option.getNumDataNodes(), option.getDataNodeHosts());<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>    } else {<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>      LOG.info("NOT STARTING DFS");<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>    }<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span><a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>    // Start up a zk cluster.<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>    if (getZkCluster() == null) {<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>      startMiniZKCluster(option.getNumZkServers());<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>    }<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span><a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>    // Start the MiniHBaseCluster<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>    return startMiniHBaseCluster(option);<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>  }<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span><a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>  /**<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>   * Starts up mini hbase cluster.<a name="line.1075"></a>
+<span class="sourceLineNo">1076</span>   * Usually you won't want this.  You'll usually want {@link #startMiniCluster()}.<a name="line.1076"></a>
+<span class="sourceLineNo">1077</span>   * This is useful when doing stepped startup of clusters.<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>   * @return Reference to the hbase mini hbase cluster.<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>   * @see #startMiniCluster(StartMiniClusterOption)<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span>   * @see #shutdownMiniHBaseCluster()<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>   */<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>  public MiniHBaseCluster startMiniHBaseCluster(StartMiniClusterOption option)<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>      throws IOException, InterruptedException {<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>    // Now do the mini hbase cluster.  Set the hbase.rootdir in config.<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>    createRootDir(option.isCreateRootDir());<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>    if (option.isCreateWALDir()) {<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>      createWALRootDir();<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>    Configuration c = new Configuration(this.conf);<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>    TraceUtil.initTracer(c);<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span>    this.hbaseCluster =<a name="line.1092"></a>
-<span class="sourceLineNo">1093</span>        new MiniHBaseCluster(c, option.getNumMasters(), option.getNumRegionServers(),<a name="line.1093"></a>
-<span class="sourceLineNo">1094</span>            option.getRsPorts(), option.getMasterClass(), option.getRsClass());<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>    // Don't leave here till we've done a successful scan of the hbase:meta<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>    Table t = getConnection().getTable(TableName.META_TABLE_NAME);<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    ResultScanner s = t.getScanner(new Scan());<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>    while (s.next() != null) {<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>      continue;<a name="line.1099"></a>
+<span class="sourceLineNo">1089</span>    // Set the hbase.fs.tmp.dir config to make sure that we have some default value. This is<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>    // for tests that do not read hbase-defaults.xml<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>    setHBaseFsTmpDir();<a name="line.1091"></a>
+<span class="sourceLineNo">1092</span><a name="line.1092"></a>
+<span class="sourceLineNo">1093</span>    // These settings will make the server waits until this exact number of<a name="line.1093"></a>
+<span class="sourceLineNo">1094</span>    // regions servers are connected.<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>    if (conf.getInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, -1) == -1) {<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>      conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, option.getNumRegionServers());<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>    }<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span>    if (conf.getInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, -1) == -1) {<a name="line.1098"></a>
+<span class="sourceLineNo">1099</span>      conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, option.getNumRegionServers());<a name="line.1099"></a>
 <span class="sourceLineNo">1100</span>    }<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>    s.close();<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>    t.close();<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span><a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>    getAdmin(); // create immediately the hbaseAdmin<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>    LOG.info("Minicluster is up; activeMaster={}", getHBaseCluster().getMaster());<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span><a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>    return (MiniHBaseCluster) hbaseCluster;<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>   * Starts up mini hbase cluster using default options.<a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>   * Default options can be found in {@link StartMiniClusterOption.Builder}.<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>   * @see #startMiniHBaseCluster(StartMiniClusterOption)<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>   * @see #shutdownMiniHBaseCluster()<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>   */<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>  public MiniHBaseCluster startMiniHBaseCluster() throws IOException, InterruptedException {<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>    return startMiniHBaseCluster(StartMiniClusterOption.builder().build());<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>  }<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span><a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>  /**<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span>   * Starts up mini hbase cluster.<a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>   * Usually you won't want this.  You'll usually want {@link #startMiniCluster()}.<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>   * @param numMasters Master node number.<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>   * @param numRegionServers Number of region servers.<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>   * @return The mini HBase cluster created.<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>   * @see #shutdownMiniHBaseCluster()<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>   * @deprecated Use {@link #startMiniHBaseCluster(StartMiniClusterOption)} instead.<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span>   */<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>  @Deprecated<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>  public MiniHBaseCluster startMiniHBaseCluster(int numMasters, int numRegionServers)<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>      throws IOException, InterruptedException {<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>        .numMasters(numMasters).numRegionServers(numRegionServers).build();<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>    return startMiniHBaseCluster(option);<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>  }<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span><a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>  /**<a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>   * Starts up mini hbase cluster.<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>   * Usually you won't want this.  You'll usually want {@link #startMiniCluster()}.<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>   * @param numMasters Master node number.<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>   * @param numRegionServers Number of region servers.<a name="line.1143"></a>
-<span class="sourceLineNo">1144</span>   * @param rsPorts Ports that RegionServer should use.<a name="line.1144"></a>
-<span class="sourceLineNo">1145</span>   * @return The mini HBase cluster created.<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>   * @see #shutdownMiniHBaseCluster()<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>   * @deprecated Use {@link #startMiniHBaseCluster(StartMiniClusterOption)} instead.<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>   */<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span>  @Deprecated<a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>  public MiniHBaseCluster startMiniHBaseCluster(int numMasters, int numRegionServers,<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>      List&lt;Integer&gt; rsPorts) throws IOException, InterruptedException {<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span>        .numMasters(numMasters).numRegionServers(numRegionServers).rsPorts(rsPorts).build();<a name="line.1153"></a>
-<span class="sourceLineNo">1154</span>    return startMiniHBaseCluster(option);<a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>  }<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span><a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>  /**<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>   * Starts up mini hbase cluster.<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>   * Usually you won't want this.  You'll usually want {@link #startMiniCluster()}.<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.1160"></a>

<TRUNCATED>

[03/29] hbase-site git commit: Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.KeyValueHeapWithCount.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.KeyValueHeapWithCount.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.KeyValueHeapWithCount.html
index 5982fda..5fda559 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.KeyValueHeapWithCount.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.KeyValueHeapWithCount.html
@@ -178,807 +178,813 @@
 <span class="sourceLineNo">170</span>      if (count == null) {<a name="line.170"></a>
 <span class="sourceLineNo">171</span>        count = new AtomicInteger(0);<a name="line.171"></a>
 <span class="sourceLineNo">172</span>      }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      heap = new KeyValueHeapWithCount(scanners, comparator, count);<a name="line.173"></a>
+<span class="sourceLineNo">173</span>      heap = newKVHeap(scanners, comparator);<a name="line.173"></a>
 <span class="sourceLineNo">174</span>    }<a name="line.174"></a>
 <span class="sourceLineNo">175</span><a name="line.175"></a>
 <span class="sourceLineNo">176</span>    @Override<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    protected boolean trySkipToNextRow(Cell cell) throws IOException {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      boolean optimized = super.trySkipToNextRow(cell);<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.179"></a>
-<span class="sourceLineNo">180</span>          + ", optimized=" + optimized);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      if (optimized) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        optimization.incrementAndGet();<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      }<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      return optimized;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>    @Override<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.190"></a>
-<span class="sourceLineNo">191</span>          + ", optimized=" + optimized);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      if (optimized) {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        optimization.incrementAndGet();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      }<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      return optimized;<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 Cell getNextIndexedKey() {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      // Fake block boundaries by having index of next block change as we go through scan.<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      return count.get() &gt; CELL_GRID_BLOCK4_BOUNDARY?<a name="line.201"></a>
-<span class="sourceLineNo">202</span>          PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK5_BOUNDARY]):<a name="line.202"></a>
-<span class="sourceLineNo">203</span>            count.get() &gt; CELL_GRID_BLOCK3_BOUNDARY?<a name="line.203"></a>
-<span class="sourceLineNo">204</span>                PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK4_BOUNDARY]):<a name="line.204"></a>
-<span class="sourceLineNo">205</span>                  count.get() &gt; CELL_GRID_BLOCK2_BOUNDARY?<a name="line.205"></a>
-<span class="sourceLineNo">206</span>                      PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK3_BOUNDARY]):<a name="line.206"></a>
-<span class="sourceLineNo">207</span>                        PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK2_BOUNDARY]);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    }<a name="line.208"></a>
-<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
-<span class="sourceLineNo">210</span><a name="line.210"></a>
-<span class="sourceLineNo">211</span>  private static final int CELL_WITH_VERSIONS_BLOCK2_BOUNDARY = 4;<a name="line.211"></a>
-<span class="sourceLineNo">212</span><a name="line.212"></a>
-<span class="sourceLineNo">213</span>  private static final Cell[] CELL_WITH_VERSIONS = new Cell [] {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    createCell(ONE, CF, ONE, 2L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    createCell(ONE, CF, ONE, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    createCell(ONE, CF, TWO, 2L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    createCell(ONE, CF, TWO, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    // Offset 4 CELL_WITH_VERSIONS_BLOCK2_BOUNDARY<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    createCell(TWO, CF, ONE, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    createCell(TWO, CF, TWO, 1L, KeyValue.Type.Put.getCode(), VALUE),<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>  private static class CellWithVersionsStoreScanner extends StoreScanner {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    // Count of how often optimize is called and of how often it does an optimize.<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    final AtomicInteger optimization = new AtomicInteger(0);<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>    CellWithVersionsStoreScanner(final Scan scan, ScanInfo scanInfo) throws IOException {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      super(scan, scanInfo, scan.getFamilyMap().get(CF),<a name="line.228"></a>
-<span class="sourceLineNo">229</span>          Arrays.&lt;KeyValueScanner&gt; asList(new KeyValueScanner[] {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>              new KeyValueScanFixture(CellComparator.getInstance(), CELL_WITH_VERSIONS) }));<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    }<a name="line.231"></a>
+<span class="sourceLineNo">177</span>    protected KeyValueHeap newKVHeap(List&lt;? extends KeyValueScanner&gt; scanners,<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        CellComparator comparator) throws IOException {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      return new KeyValueHeapWithCount(scanners, comparator, count);<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>    protected boolean trySkipToNextRow(Cell cell) throws IOException {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      boolean optimized = super.trySkipToNextRow(cell);<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.185"></a>
+<span class="sourceLineNo">186</span>          + ", optimized=" + optimized);<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      if (optimized) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>        optimization.incrementAndGet();<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      return optimized;<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>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.196"></a>
+<span class="sourceLineNo">197</span>          + ", optimized=" + optimized);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      if (optimized) {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>        optimization.incrementAndGet();<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      }<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      return optimized;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    }<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>    @Override<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    public Cell getNextIndexedKey() {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      // Fake block boundaries by having index of next block change as we go through scan.<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      return count.get() &gt; CELL_GRID_BLOCK4_BOUNDARY?<a name="line.207"></a>
+<span class="sourceLineNo">208</span>          PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK5_BOUNDARY]):<a name="line.208"></a>
+<span class="sourceLineNo">209</span>            count.get() &gt; CELL_GRID_BLOCK3_BOUNDARY?<a name="line.209"></a>
+<span class="sourceLineNo">210</span>                PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK4_BOUNDARY]):<a name="line.210"></a>
+<span class="sourceLineNo">211</span>                  count.get() &gt; CELL_GRID_BLOCK2_BOUNDARY?<a name="line.211"></a>
+<span class="sourceLineNo">212</span>                      PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK3_BOUNDARY]):<a name="line.212"></a>
+<span class="sourceLineNo">213</span>                        PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK2_BOUNDARY]);<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>  private static final int CELL_WITH_VERSIONS_BLOCK2_BOUNDARY = 4;<a name="line.217"></a>
+<span class="sourceLineNo">218</span><a name="line.218"></a>
+<span class="sourceLineNo">219</span>  private static final Cell[] CELL_WITH_VERSIONS = new Cell [] {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    createCell(ONE, CF, ONE, 2L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    createCell(ONE, CF, ONE, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    createCell(ONE, CF, TWO, 2L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    createCell(ONE, CF, TWO, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    // Offset 4 CELL_WITH_VERSIONS_BLOCK2_BOUNDARY<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    createCell(TWO, CF, ONE, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    createCell(TWO, CF, TWO, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  };<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>  private static class CellWithVersionsStoreScanner extends StoreScanner {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    // Count of how often optimize is called and of how often it does an optimize.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    final AtomicInteger optimization = new AtomicInteger(0);<a name="line.231"></a>
 <span class="sourceLineNo">232</span><a name="line.232"></a>
-<span class="sourceLineNo">233</span>    @Override<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.236"></a>
-<span class="sourceLineNo">237</span>          + ", optimized=" + optimized);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      if (optimized) {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        optimization.incrementAndGet();<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      }<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      return optimized;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    }<a name="line.242"></a>
-<span class="sourceLineNo">243</span><a name="line.243"></a>
-<span class="sourceLineNo">244</span>    @Override<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    public Cell getNextIndexedKey() {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      // Fake block boundaries by having index of next block change as we go through scan.<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      return PrivateCellUtil<a name="line.247"></a>
-<span class="sourceLineNo">248</span>          .createFirstOnRow(CELL_WITH_VERSIONS[CELL_WITH_VERSIONS_BLOCK2_BOUNDARY]);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  private static class CellWithVersionsNoOptimizeStoreScanner extends StoreScanner {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    // Count of how often optimize is called and of how often it does an optimize.<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    final AtomicInteger optimization = new AtomicInteger(0);<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>    CellWithVersionsNoOptimizeStoreScanner(Scan scan, ScanInfo scanInfo) throws IOException {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      super(scan, scanInfo, scan.getFamilyMap().get(CF),<a name="line.257"></a>
-<span class="sourceLineNo">258</span>          Arrays.&lt;KeyValueScanner&gt; asList(new KeyValueScanner[] {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>              new KeyValueScanFixture(CellComparator.getInstance(), CELL_WITH_VERSIONS) }));<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    }<a name="line.260"></a>
+<span class="sourceLineNo">233</span>    CellWithVersionsStoreScanner(final Scan scan, ScanInfo scanInfo) throws IOException {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      super(scan, scanInfo, scan.getFamilyMap().get(CF),<a name="line.234"></a>
+<span class="sourceLineNo">235</span>          Arrays.&lt;KeyValueScanner&gt; asList(new KeyValueScanner[] {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>              new KeyValueScanFixture(CellComparator.getInstance(), CELL_WITH_VERSIONS) }));<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    }<a name="line.237"></a>
+<span class="sourceLineNo">238</span><a name="line.238"></a>
+<span class="sourceLineNo">239</span>    @Override<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.242"></a>
+<span class="sourceLineNo">243</span>          + ", optimized=" + optimized);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      if (optimized) {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        optimization.incrementAndGet();<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      }<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      return optimized;<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    }<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>    @Override<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    public Cell getNextIndexedKey() {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      // Fake block boundaries by having index of next block change as we go through scan.<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      return PrivateCellUtil<a name="line.253"></a>
+<span class="sourceLineNo">254</span>          .createFirstOnRow(CELL_WITH_VERSIONS[CELL_WITH_VERSIONS_BLOCK2_BOUNDARY]);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>  }<a name="line.256"></a>
+<span class="sourceLineNo">257</span><a name="line.257"></a>
+<span class="sourceLineNo">258</span>  private static class CellWithVersionsNoOptimizeStoreScanner extends StoreScanner {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    // Count of how often optimize is called and of how often it does an optimize.<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    final AtomicInteger optimization = new AtomicInteger(0);<a name="line.260"></a>
 <span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>    @Override<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.265"></a>
-<span class="sourceLineNo">266</span>          + ", optimized=" + optimized);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      if (optimized) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        optimization.incrementAndGet();<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      }<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      return optimized;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    }<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>    @Override<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    public Cell getNextIndexedKey() {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      return null;<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">262</span>    CellWithVersionsNoOptimizeStoreScanner(Scan scan, ScanInfo scanInfo) throws IOException {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      super(scan, scanInfo, scan.getFamilyMap().get(CF),<a name="line.263"></a>
+<span class="sourceLineNo">264</span>          Arrays.&lt;KeyValueScanner&gt; asList(new KeyValueScanner[] {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>              new KeyValueScanFixture(CellComparator.getInstance(), CELL_WITH_VERSIONS) }));<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>    @Override<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.271"></a>
+<span class="sourceLineNo">272</span>          + ", optimized=" + optimized);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      if (optimized) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        optimization.incrementAndGet();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      return optimized;<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>  @Test<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  public void testWithColumnCountGetFilter() throws Exception {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    Get get = new Get(ONE);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    get.readAllVersions();<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    get.addFamily(CF);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    get.setFilter(new ColumnCountGetFilter(2));<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>    try (CellWithVersionsNoOptimizeStoreScanner scannerNoOptimize =<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        new CellWithVersionsNoOptimizeStoreScanner(new Scan(get), this.scanInfo)) {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      while (scannerNoOptimize.next(results)) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        continue;<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      }<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      assertEquals(2, results.size());<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      assertTrue(CellUtil.matchingColumn(results.get(0), CELL_WITH_VERSIONS[0]));<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      assertTrue(CellUtil.matchingColumn(results.get(1), CELL_WITH_VERSIONS[2]));<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      assertTrue("Optimize should do some optimizations",<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        scannerNoOptimize.optimization.get() == 0);<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>    get.setFilter(new ColumnCountGetFilter(2));<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    try (CellWithVersionsStoreScanner scanner =<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        new CellWithVersionsStoreScanner(new Scan(get), this.scanInfo)) {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      while (scanner.next(results)) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        continue;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      }<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      assertEquals(2, results.size());<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      assertTrue(CellUtil.matchingColumn(results.get(0), CELL_WITH_VERSIONS[0]));<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      assertTrue(CellUtil.matchingColumn(results.get(1), CELL_WITH_VERSIONS[2]));<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      assertTrue("Optimize should do some optimizations", scanner.optimization.get() &gt; 0);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    }<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  }<a name="line.311"></a>
-<span class="sourceLineNo">312</span><a name="line.312"></a>
-<span class="sourceLineNo">313</span>  /*<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   * Test utility for building a NavigableSet for scanners.<a name="line.314"></a>
-<span class="sourceLineNo">315</span>   * @param strCols<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * @return<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   */<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  NavigableSet&lt;byte[]&gt; getCols(String ...strCols) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    NavigableSet&lt;byte[]&gt; cols = new TreeSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    for (String col : strCols) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      byte[] bytes = Bytes.toBytes(col);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      cols.add(bytes);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    return cols;<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>  @Test<a name="line.327"></a>
-<span class="sourceLineNo">328</span>  public void testFullRowGetDoesNotOverreadWhenRowInsideOneBlock() throws IOException {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    // Do a Get against row two. Row two is inside a block that starts with row TWO but ends with<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    // row TWO_POINT_TWO. We should read one block only.<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    Get get = new Get(TWO);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    Scan scan = new Scan(get);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      while (scanner.next(results)) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        continue;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      assertEquals(4, results.size());<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      // We should have gone the optimize route 5 times totally... an INCLUDE for the four cells<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      // in the row plus the DONE on the end.<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      assertEquals(5, scanner.count.get());<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      // For a full row Get, there should be no opportunity for scanner optimization.<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      assertEquals(0, scanner.optimization.get());<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  }<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  @Test<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  public void testFullRowSpansBlocks() throws IOException {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    // Do a Get against row FOUR. It spans two blocks.<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    Get get = new Get(FOUR);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    Scan scan = new Scan(get);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      while (scanner.next(results)) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        continue;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      }<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      assertEquals(5, results.size());<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      // We should have gone the optimize route 6 times totally... an INCLUDE for the five cells<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      // in the row plus the DONE on the end.<a name="line.363"></a>
-<span class="sourceLineNo">364</span>      assertEquals(6, scanner.count.get());<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      // For a full row Get, there should be no opportunity for scanner optimization.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      assertEquals(0, scanner.optimization.get());<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>  /**<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * Test optimize in StoreScanner. Test that we skip to the next 'block' when we it makes sense<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * reading the block 'index'.<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * @throws IOException<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   */<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  @Test<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  public void testOptimize() throws IOException {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    Scan scan = new Scan();<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    // A scan that just gets the first qualifier on each row of the CELL_GRID<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    scan.addColumn(CF, ONE);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      while (scanner.next(results)) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>        continue;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      }<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      assertEquals(4, results.size());<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      for (Cell cell: results) {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>        assertTrue(Bytes.equals(ONE, 0, ONE.length,<a name="line.389"></a>
-<span class="sourceLineNo">390</span>            cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength()));<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      }<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      assertTrue("Optimize should do some optimizations", scanner.optimization.get() &gt; 0);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    }<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  }<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>  /**<a name="line.396"></a>
-<span class="sourceLineNo">397</span>   * Ensure the optimize Scan method in StoreScanner does not get in the way of a Get doing minimum<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * work... seeking to start of block and then SKIPPING until we find the wanted Cell.<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * This 'simple' scenario mimics case of all Cells fitting inside a single HFileBlock.<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * See HBASE-15392. This test is a little cryptic. Takes a bit of staring to figure what it up to.<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * @throws IOException<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  @Test<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  public void testOptimizeAndGet() throws IOException {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    // First test a Get of two columns in the row R2. Every Get is a Scan. Get columns named<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    // R2 and R3.<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    Get get = new Get(TWO);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    get.addColumn(CF, TWO);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    get.addColumn(CF, THREE);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    Scan scan = new Scan(get);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      // For a Get there should be no more next's after the first call.<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      assertEquals(false, scanner.next(results));<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      // Should be one result only.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      assertEquals(2, results.size());<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      // And we should have gone through optimize twice only.<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      assertEquals("First qcode is SEEK_NEXT_COL and second INCLUDE_AND_SEEK_NEXT_ROW", 3,<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        scanner.count.get());<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  }<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>  /**<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   * Ensure that optimize does not cause the Get to do more seeking than required. Optimize<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   * (see HBASE-15392) was causing us to seek all Cells in a block when a Get Scan if the next block<a name="line.425"></a>
-<span class="sourceLineNo">426</span>   * index/start key was a different row to the current one. A bug. We'd call next too often<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * because we had to exhaust all Cells in the current row making us load the next block just to<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * discard what we read there. This test is a little cryptic. Takes a bit of staring to figure<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * what it up to.<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   * @throws IOException<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   */<a name="line.431"></a>
-<span class="sourceLineNo">432</span>  @Test<a name="line.432"></a>
-<span class="sourceLineNo">433</span>  public void testOptimizeAndGetWithFakedNextBlockIndexStart() throws IOException {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    // First test a Get of second column in the row R2. Every Get is a Scan. Second column has a<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    // qualifier of R2.<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    Get get = new Get(THREE);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    get.addColumn(CF, TWO);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    Scan scan = new Scan(get);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      // For a Get there should be no more next's after the first call.<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      assertEquals(false, scanner.next(results));<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      // Should be one result only.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      assertEquals(1, results.size());<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      // And we should have gone through optimize twice only.<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      assertEquals("First qcode is SEEK_NEXT_COL and second INCLUDE_AND_SEEK_NEXT_ROW", 2,<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        scanner.count.get());<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>  @Test<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  public void testScanTimeRange() throws IOException {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    String r1 = "R1";<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    // returns only 1 of these 2 even though same timestamp<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        create(r1, CF_STR, "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.456"></a>
-<span class="sourceLineNo">457</span>        create(r1, CF_STR, "a", 2, KeyValue.Type.Put, "dont-care"),<a name="line.457"></a>
-<span class="sourceLineNo">458</span>        create(r1, CF_STR, "a", 3, KeyValue.Type.Put, "dont-care"),<a name="line.458"></a>
-<span class="sourceLineNo">459</span>        create(r1, CF_STR, "a", 4, KeyValue.Type.Put, "dont-care"),<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        create(r1, CF_STR, "a", 5, KeyValue.Type.Put, "dont-care"),<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    };<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    List&lt;KeyValueScanner&gt; scanners = Arrays.&lt;KeyValueScanner&gt;asList(<a name="line.462"></a>
-<span class="sourceLineNo">463</span>        new KeyValueScanner[] {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>            new KeyValueScanFixture(CellComparator.getInstance(), kvs)<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    });<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    scanSpec.setTimeRange(0, 6);<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    scanSpec.readAllVersions();<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    List&lt;Cell&gt; results = null;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      results = new ArrayList&lt;&gt;();<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      assertEquals(true, scan.next(results));<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      assertEquals(5, results.size());<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      assertEquals(kvs[kvs.length - 1], results.get(0));<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    }<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    // Scan limited TimeRange<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    scanSpec.setTimeRange(1, 3);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    scanSpec.readAllVersions();<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      results = new ArrayList&lt;&gt;();<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      assertEquals(true, scan.next(results));<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      assertEquals(2, results.size());<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    }<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    // Another range.<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    scanSpec.setTimeRange(5, 10);<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    scanSpec.readAllVersions();<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      results = new ArrayList&lt;&gt;();<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      assertEquals(true, scan.next(results));<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      assertEquals(1, results.size());<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    }<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    // See how TimeRange and Versions interact.<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    // Another range.<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    scanSpec.setTimeRange(0, 10);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    scanSpec.readVersions(3);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      results = new ArrayList&lt;&gt;();<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      assertEquals(true, scan.next(results));<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      assertEquals(3, results.size());<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>  @Test<a name="line.506"></a>
-<span class="sourceLineNo">507</span>  public void testScanSameTimestamp() throws IOException {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    // returns only 1 of these 2 even though same timestamp<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.510"></a>
-<span class="sourceLineNo">511</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    };<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    List&lt;KeyValueScanner&gt; scanners = Arrays.asList(<a name="line.513"></a>
-<span class="sourceLineNo">514</span>        new KeyValueScanner[] {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>            new KeyValueScanFixture(CellComparator.getInstance(), kvs)<a name="line.515"></a>
-<span class="sourceLineNo">516</span>        });<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    // this only uses maxVersions (default=1) and TimeRange (default=all)<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      assertEquals(true, scan.next(results));<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      assertEquals(1, results.size());<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      assertEquals(kvs[0], results.get(0));<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    }<a name="line.525"></a>
-<span class="sourceLineNo">526</span>  }<a name="line.526"></a>
-<span class="sourceLineNo">527</span><a name="line.527"></a>
-<span class="sourceLineNo">528</span>  /*<a name="line.528"></a>
-<span class="sourceLineNo">529</span>   * Test test shows exactly how the matcher's return codes confuses the StoreScanner<a name="line.529"></a>
-<span class="sourceLineNo">530</span>   * and prevent it from doing the right thing.  Seeking once, then nexting twice<a name="line.530"></a>
-<span class="sourceLineNo">531</span>   * should return R1, then R2, but in this case it doesnt.<a name="line.531"></a>
-<span class="sourceLineNo">532</span>   * TODO this comment makes no sense above. Appears to do the right thing.<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   * @throws IOException<a name="line.533"></a>
-<span class="sourceLineNo">534</span>   */<a name="line.534"></a>
-<span class="sourceLineNo">535</span>  @Test<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  public void testWontNextToNext() throws IOException {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    // build the scan file:<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.538"></a>
-<span class="sourceLineNo">539</span>        create("R1", "cf", "a", 2, KeyValue.Type.Put, "dont-care"),<a name="line.539"></a>
-<span class="sourceLineNo">540</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.540"></a>
-<span class="sourceLineNo">541</span>        create("R2", "cf", "a", 1, KeyValue.Type.Put, "dont-care")<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    };<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    List&lt;KeyValueScanner&gt; scanners = scanFixture(kvs);<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    // this only uses maxVersions (default=1) and TimeRange (default=all)<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.548"></a>
-<span class="sourceLineNo">549</span>      scan.next(results);<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      assertEquals(1, results.size());<a name="line.550"></a>
-<span class="sourceLineNo">551</span>      assertEquals(kvs[0], results.get(0));<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      // should be ok...<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      // now scan _next_ again.<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      results.clear();<a name="line.554"></a>
+<span class="sourceLineNo">279</span>    @Override<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    public Cell getNextIndexedKey() {<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>  @Test<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  public void testWithColumnCountGetFilter() throws Exception {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    Get get = new Get(ONE);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    get.readAllVersions();<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    get.addFamily(CF);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    get.setFilter(new ColumnCountGetFilter(2));<a name="line.290"></a>
+<span class="sourceLineNo">291</span><a name="line.291"></a>
+<span class="sourceLineNo">292</span>    try (CellWithVersionsNoOptimizeStoreScanner scannerNoOptimize =<a name="line.292"></a>
+<span class="sourceLineNo">293</span>        new CellWithVersionsNoOptimizeStoreScanner(new Scan(get), this.scanInfo)) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      while (scannerNoOptimize.next(results)) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        continue;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      }<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      assertEquals(2, results.size());<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      assertTrue(CellUtil.matchingColumn(results.get(0), CELL_WITH_VERSIONS[0]));<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      assertTrue(CellUtil.matchingColumn(results.get(1), CELL_WITH_VERSIONS[2]));<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      assertTrue("Optimize should do some optimizations",<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        scannerNoOptimize.optimization.get() == 0);<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>    get.setFilter(new ColumnCountGetFilter(2));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    try (CellWithVersionsStoreScanner scanner =<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        new CellWithVersionsStoreScanner(new Scan(get), this.scanInfo)) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      while (scanner.next(results)) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>        continue;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      assertEquals(2, results.size());<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      assertTrue(CellUtil.matchingColumn(results.get(0), CELL_WITH_VERSIONS[0]));<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      assertTrue(CellUtil.matchingColumn(results.get(1), CELL_WITH_VERSIONS[2]));<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      assertTrue("Optimize should do some optimizations", scanner.optimization.get() &gt; 0);<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    }<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>   * Test utility for building a NavigableSet for scanners.<a name="line.320"></a>
+<span class="sourceLineNo">321</span>   * @param strCols<a name="line.321"></a>
+<span class="sourceLineNo">322</span>   * @return<a name="line.322"></a>
+<span class="sourceLineNo">323</span>   */<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  NavigableSet&lt;byte[]&gt; getCols(String ...strCols) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    NavigableSet&lt;byte[]&gt; cols = new TreeSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    for (String col : strCols) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      byte[] bytes = Bytes.toBytes(col);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      cols.add(bytes);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    }<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    return cols;<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>  @Test<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  public void testFullRowGetDoesNotOverreadWhenRowInsideOneBlock() throws IOException {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    // Do a Get against row two. Row two is inside a block that starts with row TWO but ends with<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    // row TWO_POINT_TWO. We should read one block only.<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    Get get = new Get(TWO);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    Scan scan = new Scan(get);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.340"></a>
+<span class="sourceLineNo">341</span>      while (scanner.next(results)) {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        continue;<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      assertEquals(4, results.size());<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      // We should have gone the optimize route 5 times totally... an INCLUDE for the four cells<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      // in the row plus the DONE on the end.<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      assertEquals(5, scanner.count.get());<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      // For a full row Get, there should be no opportunity for scanner optimization.<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      assertEquals(0, scanner.optimization.get());<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  @Test<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  public void testFullRowSpansBlocks() throws IOException {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    // Do a Get against row FOUR. It spans two blocks.<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    Get get = new Get(FOUR);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    Scan scan = new Scan(get);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      while (scanner.next(results)) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>        continue;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      assertEquals(5, results.size());<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      // We should have gone the optimize route 6 times totally... an INCLUDE for the five cells<a name="line.368"></a>
+<span class="sourceLineNo">369</span>      // in the row plus the DONE on the end.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      assertEquals(6, scanner.count.get());<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      // For a full row Get, there should be no opportunity for scanner optimization.<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      assertEquals(0, scanner.optimization.get());<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><a name="line.375"></a>
+<span class="sourceLineNo">376</span>  /**<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   * Test optimize in StoreScanner. Test that we skip to the next 'block' when we it makes sense<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * reading the block 'index'.<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   * @throws IOException<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   */<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  @Test<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  public void testOptimize() throws IOException {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    Scan scan = new Scan();<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    // A scan that just gets the first qualifier on each row of the CELL_GRID<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    scan.addColumn(CF, ONE);<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      while (scanner.next(results)) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>        continue;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      }<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      assertEquals(4, results.size());<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      for (Cell cell: results) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        assertTrue(Bytes.equals(ONE, 0, ONE.length,<a name="line.395"></a>
+<span class="sourceLineNo">396</span>            cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength()));<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      }<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      assertTrue("Optimize should do some optimizations", scanner.optimization.get() &gt; 0);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    }<a name="line.399"></a>
+<span class="sourceLineNo">400</span>  }<a name="line.400"></a>
+<span class="sourceLineNo">401</span><a name="line.401"></a>
+<span class="sourceLineNo">402</span>  /**<a name="line.402"></a>
+<span class="sourceLineNo">403</span>   * Ensure the optimize Scan method in StoreScanner does not get in the way of a Get doing minimum<a name="line.403"></a>
+<span class="sourceLineNo">404</span>   * work... seeking to start of block and then SKIPPING until we find the wanted Cell.<a name="line.404"></a>
+<span class="sourceLineNo">405</span>   * This 'simple' scenario mimics case of all Cells fitting inside a single HFileBlock.<a name="line.405"></a>
+<span class="sourceLineNo">406</span>   * See HBASE-15392. This test is a little cryptic. Takes a bit of staring to figure what it up to.<a name="line.406"></a>
+<span class="sourceLineNo">407</span>   * @throws IOException<a name="line.407"></a>
+<span class="sourceLineNo">408</span>   */<a name="line.408"></a>
+<span class="sourceLineNo">409</span>  @Test<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  public void testOptimizeAndGet() throws IOException {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    // First test a Get of two columns in the row R2. Every Get is a Scan. Get columns named<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    // R2 and R3.<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    Get get = new Get(TWO);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    get.addColumn(CF, TWO);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    get.addColumn(CF, THREE);<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    Scan scan = new Scan(get);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      // For a Get there should be no more next's after the first call.<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      assertEquals(false, scanner.next(results));<a name="line.420"></a>
+<span class="sourceLineNo">421</span>      // Should be one result only.<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      assertEquals(2, results.size());<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      // And we should have gone through optimize twice only.<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      assertEquals("First qcode is SEEK_NEXT_COL and second INCLUDE_AND_SEEK_NEXT_ROW", 3,<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        scanner.count.get());<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><a name="line.428"></a>
+<span class="sourceLineNo">429</span>  /**<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * Ensure that optimize does not cause the Get to do more seeking than required. Optimize<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   * (see HBASE-15392) was causing us to seek all Cells in a block when a Get Scan if the next block<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   * index/start key was a different row to the current one. A bug. We'd call next too often<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   * because we had to exhaust all Cells in the current row making us load the next block just to<a name="line.433"></a>
+<span class="sourceLineNo">434</span>   * discard what we read there. This test is a little cryptic. Takes a bit of staring to figure<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   * what it up to.<a name="line.435"></a>
+<span class="sourceLineNo">436</span>   * @throws IOException<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   */<a name="line.437"></a>
+<span class="sourceLineNo">438</span>  @Test<a name="line.438"></a>
+<span class="sourceLineNo">439</span>  public void testOptimizeAndGetWithFakedNextBlockIndexStart() throws IOException {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    // First test a Get of second column in the row R2. Every Get is a Scan. Second column has a<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    // qualifier of R2.<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    Get get = new Get(THREE);<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    get.addColumn(CF, TWO);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    Scan scan = new Scan(get);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      // For a Get there should be no more next's after the first call.<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      assertEquals(false, scanner.next(results));<a name="line.448"></a>
+<span class="sourceLineNo">449</span>      // Should be one result only.<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      assertEquals(1, results.size());<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      // And we should have gone through optimize twice only.<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      assertEquals("First qcode is SEEK_NEXT_COL and second INCLUDE_AND_SEEK_NEXT_ROW", 2,<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        scanner.count.get());<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>  @Test<a name="line.457"></a>
+<span class="sourceLineNo">458</span>  public void testScanTimeRange() throws IOException {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    String r1 = "R1";<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    // returns only 1 of these 2 even though same timestamp<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.461"></a>
+<span class="sourceLineNo">462</span>        create(r1, CF_STR, "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.462"></a>
+<span class="sourceLineNo">463</span>        create(r1, CF_STR, "a", 2, KeyValue.Type.Put, "dont-care"),<a name="line.463"></a>
+<span class="sourceLineNo">464</span>        create(r1, CF_STR, "a", 3, KeyValue.Type.Put, "dont-care"),<a name="line.464"></a>
+<span class="sourceLineNo">465</span>        create(r1, CF_STR, "a", 4, KeyValue.Type.Put, "dont-care"),<a name="line.465"></a>
+<span class="sourceLineNo">466</span>        create(r1, CF_STR, "a", 5, KeyValue.Type.Put, "dont-care"),<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    };<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    List&lt;KeyValueScanner&gt; scanners = Arrays.&lt;KeyValueScanner&gt;asList(<a name="line.468"></a>
+<span class="sourceLineNo">469</span>        new KeyValueScanner[] {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>            new KeyValueScanFixture(CellComparator.getInstance(), kvs)<a name="line.470"></a>
+<span class="sourceLineNo">471</span>    });<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    scanSpec.setTimeRange(0, 6);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    scanSpec.readAllVersions();<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    List&lt;Cell&gt; results = null;<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>      results = new ArrayList&lt;&gt;();<a name="line.477"></a>
+<span class="sourceLineNo">478</span>      assertEquals(true, scan.next(results));<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      assertEquals(5, results.size());<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      assertEquals(kvs[kvs.length - 1], results.get(0));<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    }<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    // Scan limited TimeRange<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    scanSpec.setTimeRange(1, 3);<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    scanSpec.readAllVersions();<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      results = new ArrayList&lt;&gt;();<a name="line.487"></a>
+<span class="sourceLineNo">488</span>      assertEquals(true, scan.next(results));<a name="line.488"></a>
+<span class="sourceLineNo">489</span>      assertEquals(2, results.size());<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    }<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    // Another range.<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    scanSpec.setTimeRange(5, 10);<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    scanSpec.readAllVersions();<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.495"></a>
+<span class="sourceLineNo">496</span>      results = new ArrayList&lt;&gt;();<a name="line.496"></a>
+<span class="sourceLineNo">497</span>      assertEquals(true, scan.next(results));<a name="line.497"></a>
+<span class="sourceLineNo">498</span>      assertEquals(1, results.size());<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    }<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    // See how TimeRange and Versions interact.<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    // Another range.<a name="line.501"></a>
+<span class="sourceLineNo">502</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    scanSpec.setTimeRange(0, 10);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    scanSpec.readVersions(3);<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.505"></a>
+<span class="sourceLineNo">506</span>      results = new ArrayList&lt;&gt;();<a name="line.506"></a>
+<span class="sourceLineNo">507</span>      assertEquals(true, scan.next(results));<a name="line.507"></a>
+<span class="sourceLineNo">508</span>      assertEquals(3, results.size());<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><a name="line.511"></a>
+<span class="sourceLineNo">512</span>  @Test<a name="line.512"></a>
+<span class="sourceLineNo">513</span>  public void testScanSameTimestamp() throws IOException {<a name="line.513"></a>
+<span class="sourceLineNo">514</span>    // returns only 1 of these 2 even though same timestamp<a name="line.514"></a>
+<span class="sourceLineNo">515</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.515"></a>
+<span class="sourceLineNo">516</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.516"></a>
+<span class="sourceLineNo">517</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    };<a name="line.518"></a>
+<span class="sourceLineNo">519</span>    List&lt;KeyValueScanner&gt; scanners = Arrays.asList(<a name="line.519"></a>
+<span class="sourceLineNo">520</span>        new KeyValueScanner[] {<a name="line.520"></a>
+<span class="sourceLineNo">521</span>            new KeyValueScanFixture(CellComparator.getInstance(), kvs)<a name="line.521"></a>
+<span class="sourceLineNo">522</span>        });<a name="line.522"></a>
+<span class="sourceLineNo">523</span><a name="line.523"></a>
+<span class="sourceLineNo">524</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    // this only uses maxVersions (default=1) and TimeRange (default=all)<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.526"></a>
+<span class="sourceLineNo">527</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.527"></a>
+<span class="sourceLineNo">528</span>      assertEquals(true, scan.next(results));<a name="line.528"></a>
+<span class="sourceLineNo">529</span>      assertEquals(1, results.size());<a name="line.529"></a>
+<span class="sourceLineNo">530</span>      assertEquals(kvs[0], results.get(0));<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    }<a name="line.531"></a>
+<span class="sourceLineNo">532</span>  }<a name="line.532"></a>
+<span class="sourceLineNo">533</span><a name="line.533"></a>
+<span class="sourceLineNo">534</span>  /*<a name="line.534"></a>
+<span class="sourceLineNo">535</span>   * Test test shows exactly how the matcher's return codes confuses the StoreScanner<a name="line.535"></a>
+<span class="sourceLineNo">536</span>   * and prevent it from doing the right thing.  Seeking once, then nexting twice<a name="line.536"></a>
+<span class="sourceLineNo">537</span>   * should return R1, then R2, but in this case it doesnt.<a name="line.537"></a>
+<span class="sourceLineNo">538</span>   * TODO this comment makes no sense above. Appears to do the right thing.<a name="line.538"></a>
+<span class="sourceLineNo">539</span>   * @throws IOException<a name="line.539"></a>
+<span class="sourceLineNo">540</span>   */<a name="line.540"></a>
+<span class="sourceLineNo">541</span>  @Test<a name="line.541"></a>
+<span class="sourceLineNo">542</span>  public void testWontNextToNext() throws IOException {<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    // build the scan file:<a name="line.543"></a>
+<span class="sourceLineNo">544</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.544"></a>
+<span class="sourceLineNo">545</span>        create("R1", "cf", "a", 2, KeyValue.Type.Put, "dont-care"),<a name="line.545"></a>
+<span class="sourceLineNo">546</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.546"></a>
+<span class="sourceLineNo">547</span>        create("R2", "cf", "a", 1, KeyValue.Type.Put, "dont-care")<a name="line.547"></a>
+<span class="sourceLineNo">548</span>    };<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    List&lt;KeyValueScanner&gt; scanners = scanFixture(kvs);<a name="line.549"></a>
+<span class="sourceLineNo">550</span><a name="line.550"></a>
+<span class="sourceLineNo">551</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    // this only uses maxVersions (default=1) and TimeRange (default=all)<a name="line.552"></a>
+<span class="sourceLineNo">553</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.553"></a>
+<span class="sourceLineNo">554</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.554"></a>
 <span class="sourceLineNo">555</span>      scan.next(results);<a name="line.555"></a>
 <span class="sourceLineNo">556</span>      assertEquals(1, results.size());<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      assertEquals(kvs[2], results.get(0));<a name="line.557"></a>
-<span class="sourceLineNo">558</span><a name="line.558"></a>
-<span class="sourceLineNo">559</span>      results.clear();<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      scan.next(results);<a name="line.560"></a>
-<span class="sourceLineNo">561</span>      assertEquals(0, results.size());<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">557</span>      assertEquals(kvs[0], results.get(0));<a name="line.557"></a>
+<span class="sourceLineNo">558</span>      // should be ok...<a name="line.558"></a>
+<span class="sourceLineNo">559</span>      // now scan _next_ again.<a name="line.559"></a>
+<span class="sourceLineNo">560</span>      results.clear();<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      scan.next(results);<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      assertEquals(1, results.size());<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      assertEquals(kvs[2], results.get(0));<a name="line.563"></a>
 <span class="sourceLineNo">564</span><a name="line.564"></a>
-<span class="sourceLineNo">565</span><a name="line.565"></a>
-<span class="sourceLineNo">566</span>  @Test<a name="line.566"></a>
-<span class="sourceLineNo">567</span>  public void testDeleteVersionSameTimestamp() throws IOException {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    KeyValue [] kvs = new KeyValue [] {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.569"></a>
-<span class="sourceLineNo">570</span>        create("R1", "cf", "a", 1, KeyValue.Type.Delete, "dont-care"),<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    };<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    List&lt;KeyValueScanner&gt; scanners = scanFixture(kvs);<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.574"></a>
-<span class="sourceLineNo">575</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      assertFalse(scan.next(results));<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      assertEquals(0, results.size());<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    }<a name="line.578"></a>
-<span class="sourceLineNo">579</span>  }<a name="line.579"></a>
-<span class="sourceLineNo">580</span><a name="line.580"></a>
-<span class="sourceLineNo">581</span>  /*<a name="line.581"></a>
-<span class="sourceLineNo">582</span>   * Test the case where there is a delete row 'in front of' the next row, the scanner<a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * will move to the next row.<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   */<a name="line.584"></a>
-<span class="sourceLineNo">585</span>  @Test<a name="line.585"></a>
-<span class="sourceLineNo">586</span>  public void testDeletedRowThenGoodRow() throws IOException {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    KeyValue [] kvs = new KeyValue [] {<a name="line.587"></a>
-<span class="sourceLineNo">588</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.588"></a>
-<span class="sourceLineNo">589</span>        create("R1", "cf", "a", 1, KeyValue.Type.Delete, "dont-care"),<a name="line.589"></a>
-<span class="sourceLineNo">590</span>        create("R2", "cf", "a", 20, KeyValue.Type.Put, "dont-care")<a name="line.590"></a>
-<span class="sourceLineNo">591</span>    };<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    List&lt;KeyValueScanner&gt; scanners = scanFixture(kvs);<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.595"></a>
-<span class="sourceLineNo">596</span>      assertEquals(true, scan.next(results));<a name="line.596"></a>
-<span class="sourceLineNo">597</span>      assertEquals(0, results.size());<a name="line.597"></a>
-<span class="sourceLineNo">598</span><a name="line.598"></a>
-<span class="sourceLineNo">599</span>      assertEquals(true, scan.next(results));<a name="line.599"></a>
-<span class="sourceLineNo">600</span>      assertEquals(1, results.size());<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      assertEquals(kvs[2], results.get(0));<a name="line.601"></a>
-<span class="sourceLineNo">602</span><a name="line.602"></a>
-<span class="sourceLineNo">603</span>      assertEquals(false, scan.next(results));<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    }<a name="line.604"></a>
-<span class="sourceLineNo">605</span>  }<a name="line.605"></a>
-<span class="sourceLineNo">606</span><a name="line.606"></a>
-<span class="sourceLineNo">607</span>  @Test<a name="line.607"></a>
-<span class="sourceLineNo">608</span>  public void testDeleteVersionMaskingMultiplePuts() throws IOException {<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    long now = System.currentTimeMillis();<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    KeyValue [] kvs1 = new KeyValue[] {<a name="line.610"></a>
-<span class="sourceLineNo">611</span>        create("R1", "cf", "a", now, KeyValue.Type.Put, "dont-care"),<a name="line.611"></a>
-<span class="sourceLineNo">612</span>        create("R1", "cf", "a", now, KeyValue.Type.Delete, "dont-care")<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    };<a name="line.613"></a>
-<span class="sourceLineNo">614</span>    KeyValue [] kvs2 = new KeyValue[] {<a name="line.614"></a>
-<span class="sourceLineNo">615</span>        create("R1", "cf", "a", now-500, KeyValue.Type.Put, "dont-care"),<a name="line.615"></a>
-<span class="sourceLineNo">616</span>        create("R1", "cf", "a", now-100, KeyValue.Type.Put, "dont-care"),<a name="line.616"></a>
-<span class="sourceLineNo">617</span>        create("R1", "cf", "a", now, KeyValue.Type.Put, "dont-care")<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    };<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    List&lt;KeyValueScanner&gt; scanners = scanFixture(kvs1, kvs2);<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>    try (StoreScanner scan = new StoreScanner(new Scan().withStartRow(Bytes.toBytes("R1")),<a name="line.621"></a>
-<span class="sourceLineNo">622</span>        scanInfo, getCols("a"), scanners)) {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.623"></a>
-<span class="sourceLineNo">624</span>      // the two put at ts=now will be masked by the 1 delete, and<a name="line.624"></a>
-<span class="sourceLineNo">625</span>      // since the scan default returns 1 version we'll return the newest<a name="line.625"></a>
-<span class="sourceLineNo">626</span>      // key, which is kvs[2], now-100.<a name="line.626"></a>
-<span class="sourceLineNo">627</span>      assertEquals(true, scan.next(results));<a name="line.627"></a>
-<span class="sourceLineNo">628</span>      assertEquals(1, results.size());<a name="line.628"></a>
-<span class="sourceLineNo">629</span>      assertEquals(kvs2[1], results.get(0));<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    }<a name="line.630"></a>
-<span class="sourceLineNo">631</span>  }<a name="line.631"></a>
-<span class="sourceLineNo">632</span><a name="line.632"></a>
-<span class="sourceLineNo">633</span>  @Test<a name="line.633"></a>
-<span class="sourceLineNo">634</span>  public void testDeleteVersionsMixedAndMultipleVersionReturn() throws IOException {<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    long now = System.currentTimeMillis();<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    KeyValue [] kvs1 = new KeyValue[] {<a name="line.636"></a>
-<span class="sourceLineNo">637</span>        create("R1", "cf", "a", now, KeyValue.Type.Put, "dont-care"),<a name="line.637"></a>
-<span class="sourceLineNo">638</span>        create("R1", "cf", "a", now, KeyValue.Type.Delete, "dont-care")<a name="line.638"></a>
-<span class="sourceLineNo">639</span>    };<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    KeyValue [] kvs2 = new KeyValue[] {<a name="line.640"></a>
-<span class="sourceLineNo">641</span>        create("R1", "cf", "a", now-500, KeyValue.Type.Put, "dont-care"),<a name="line.641"></a>
-<span class="sourceLineNo">642</span>        create("R1", "cf", "a", now+500, KeyValue.Type.Put, "dont-care"),<a name="line.642"></a>
+<span class="sourceLineNo">565</span>      results.clear();<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      scan.next(results);<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      assert

<TRUNCATED>

[08/29] hbase-site git commit: Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html
index ba27788..fe6a726 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html
@@ -26,924 +26,967 @@
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.client;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
 <span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.HConstants.RPC_CODEC_CONF_KEY;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.ipc.RpcClient.DEFAULT_CODEC_CLASS;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import static org.junit.Assert.assertArrayEquals;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.junit.Assert.assertEquals;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import static org.junit.Assert.assertFalse;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import static org.junit.Assert.assertNotNull;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import static org.junit.Assert.assertNull;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import static org.junit.Assert.assertTrue;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import static org.junit.Assert.fail;<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.util.ArrayList;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.util.List;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.concurrent.TimeUnit;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.function.Consumer;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.stream.IntStream;<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.CompareOperator;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.HConstants;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.HTestConst;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.MiniHBaseCluster;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.TableName;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.filter.BinaryComparator;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.filter.ColumnPrefixFilter;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.filter.ColumnRangeFilter;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.filter.QualifierFilter;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.testclassification.ClientTests;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.junit.After;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.junit.AfterClass;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.junit.Before;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.junit.BeforeClass;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.junit.ClassRule;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.junit.Rule;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.junit.Test;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.junit.experimental.categories.Category;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.junit.rules.TestName;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.slf4j.Logger;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.slf4j.LoggerFactory;<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span>/**<a name="line.71"></a>
-<span class="sourceLineNo">072</span> * A client-side test, mostly testing scanners with various parameters.<a name="line.72"></a>
-<span class="sourceLineNo">073</span> */<a name="line.73"></a>
-<span class="sourceLineNo">074</span>@Category({MediumTests.class, ClientTests.class})<a name="line.74"></a>
-<span class="sourceLineNo">075</span>public class TestScannersFromClientSide {<a name="line.75"></a>
-<span class="sourceLineNo">076</span><a name="line.76"></a>
-<span class="sourceLineNo">077</span>  @ClassRule<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.78"></a>
-<span class="sourceLineNo">079</span>      HBaseClassTestRule.forClass(TestScannersFromClientSide.class);<a name="line.79"></a>
-<span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>  private static final Logger LOG = LoggerFactory.getLogger(TestScannersFromClientSide.class);<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>  private final static HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  private static byte [] ROW = Bytes.toBytes("testRow");<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  private static byte [] FAMILY = Bytes.toBytes("testFamily");<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  private static byte [] QUALIFIER = Bytes.toBytes("testQualifier");<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  private static byte [] VALUE = Bytes.toBytes("testValue");<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  @Rule<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  public TestName name = new TestName();<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>  /**<a name="line.92"></a>
-<span class="sourceLineNo">093</span>   * @throws java.lang.Exception<a name="line.93"></a>
-<span class="sourceLineNo">094</span>   */<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  @BeforeClass<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  public static void setUpBeforeClass() throws Exception {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    conf.setLong(HConstants.HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE_KEY, 10 * 1024 * 1024);<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    TEST_UTIL.startMiniCluster(3);<a name="line.99"></a>
-<span class="sourceLineNo">100</span>  }<a name="line.100"></a>
-<span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span>  /**<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * @throws java.lang.Exception<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   */<a name="line.104"></a>
-<span class="sourceLineNo">105</span>  @AfterClass<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public static void tearDownAfterClass() throws Exception {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    TEST_UTIL.shutdownMiniCluster();<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>  /**<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   * @throws java.lang.Exception<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   */<a name="line.112"></a>
-<span class="sourceLineNo">113</span>  @Before<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  public void setUp() throws Exception {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    // Nothing to do.<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>  /**<a name="line.118"></a>
-<span class="sourceLineNo">119</span>   * @throws java.lang.Exception<a name="line.119"></a>
-<span class="sourceLineNo">120</span>   */<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  @After<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public void tearDown() throws Exception {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    // Nothing to do.<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  }<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  /**<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   * Test from client side for batch of scan<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   *<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   * @throws Exception<a name="line.129"></a>
-<span class="sourceLineNo">130</span>   */<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  @Test<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  public void testScanBatch() throws Exception {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    byte [][] QUALIFIERS = HTestConst.makeNAscii(QUALIFIER, 8);<a name="line.134"></a>
-<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span>    Table ht = TEST_UTIL.createTable(tableName, FAMILY);<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>    Put put;<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    Scan scan;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    Delete delete;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    Result result;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    ResultScanner scanner;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    boolean toLog = true;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    List&lt;Cell&gt; kvListExp;<a name="line.144"></a>
-<span class="sourceLineNo">145</span><a name="line.145"></a>
-<span class="sourceLineNo">146</span>    // table: row, family, c0:0, c1:1, ... , c7:7<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    put = new Put(ROW);<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    for (int i=0; i &lt; QUALIFIERS.length; i++) {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      KeyValue kv = new KeyValue(ROW, FAMILY, QUALIFIERS[i], i, VALUE);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      put.add(kv);<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    }<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    ht.put(put);<a name="line.152"></a>
-<span class="sourceLineNo">153</span><a name="line.153"></a>
-<span class="sourceLineNo">154</span>    // table: row, family, c0:0, c1:1, ..., c6:2, c6:6 , c7:7<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    put = new Put(ROW);<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    KeyValue kv = new KeyValue(ROW, FAMILY, QUALIFIERS[6], 2, VALUE);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    put.add(kv);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    ht.put(put);<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>    // delete upto ts: 3<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    delete = new Delete(ROW);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    delete.addFamily(FAMILY, 3);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    ht.delete(delete);<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span>    // without batch<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    scan = new Scan().withStartRow(ROW);<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    scan.setMaxVersions();<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    scanner = ht.getScanner(scan);<a name="line.168"></a>
-<span class="sourceLineNo">169</span><a name="line.169"></a>
-<span class="sourceLineNo">170</span>    // c4:4, c5:5, c6:6, c7:7<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    kvListExp = new ArrayList&lt;&gt;();<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    kvListExp.add(new KeyValue(ROW, FAMILY, QUALIFIERS[4], 4, VALUE));<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    kvListExp.add(new KeyValue(ROW, FAMILY, QUALIFIERS[5], 5, VALUE));<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    kvListExp.add(new KeyValue(ROW, FAMILY, QUALIFIERS[6], 6, VALUE));<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    kvListExp.add(new KeyValue(ROW, FAMILY, QUALIFIERS[7], 7, VALUE));<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    result = scanner.next();<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    verifyResult(result, kvListExp, toLog, "Testing first batch of scan");<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span>    // with batch<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    scan =  new Scan().withStartRow(ROW);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    scan.setMaxVersions();<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    scan.setBatch(2);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    scanner = ht.getScanner(scan);<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span>    // First batch: c4:4, c5:5<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    kvListExp = new ArrayList&lt;&gt;();<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    kvListExp.add(new KeyValue(ROW, FAMILY, QUALIFIERS[4], 4, VALUE));<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    kvListExp.add(new KeyValue(ROW, FAMILY, QUALIFIERS[5], 5, VALUE));<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    result = scanner.next();<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    verifyResult(result, kvListExp, toLog, "Testing first batch of scan");<a name="line.190"></a>
-<span class="sourceLineNo">191</span><a name="line.191"></a>
-<span class="sourceLineNo">192</span>    // Second batch: c6:6, c7:7<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    kvListExp = new ArrayList&lt;&gt;();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    kvListExp.add(new KeyValue(ROW, FAMILY, QUALIFIERS[6], 6, VALUE));<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    kvListExp.add(new KeyValue(ROW, FAMILY, QUALIFIERS[7], 7, VALUE));<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    result = scanner.next();<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    verifyResult(result, kvListExp, toLog, "Testing second batch of scan");<a name="line.197"></a>
-<span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span>  }<a name="line.199"></a>
-<span class="sourceLineNo">200</span><a name="line.200"></a>
-<span class="sourceLineNo">201</span>  @Test<a name="line.201"></a>
-<span class="sourceLineNo">202</span>  public void testMaxResultSizeIsSetToDefault() throws Exception {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    Table ht = TEST_UTIL.createTable(tableName, FAMILY);<a name="line.204"></a>
-<span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>    // The max result size we expect the scan to use by default.<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    long expectedMaxResultSize =<a name="line.207"></a>
-<span class="sourceLineNo">208</span>        TEST_UTIL.getConfiguration().getLong(HConstants.HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE_KEY,<a name="line.208"></a>
-<span class="sourceLineNo">209</span>          HConstants.DEFAULT_HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE);<a name="line.209"></a>
-<span class="sourceLineNo">210</span><a name="line.210"></a>
-<span class="sourceLineNo">211</span>    int numRows = 5;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    byte[][] ROWS = HTestConst.makeNAscii(ROW, numRows);<a name="line.212"></a>
-<span class="sourceLineNo">213</span><a name="line.213"></a>
-<span class="sourceLineNo">214</span>    int numQualifiers = 10;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    byte[][] QUALIFIERS = HTestConst.makeNAscii(QUALIFIER, numQualifiers);<a name="line.215"></a>
-<span class="sourceLineNo">216</span><a name="line.216"></a>
-<span class="sourceLineNo">217</span>    // Specify the cell size such that a single row will be larger than the default<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    // value of maxResultSize. This means that Scan RPCs should return at most a single<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    // result back to the client.<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    int cellSize = (int) (expectedMaxResultSize / (numQualifiers - 1));<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    byte[] cellValue = Bytes.createMaxByteArray(cellSize);<a name="line.221"></a>
-<span class="sourceLineNo">222</span><a name="line.222"></a>
-<span class="sourceLineNo">223</span>    Put put;<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    List&lt;Put&gt; puts = new ArrayList&lt;&gt;();<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    for (int row = 0; row &lt; ROWS.length; row++) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      put = new Put(ROWS[row]);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      for (int qual = 0; qual &lt; QUALIFIERS.length; qual++) {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>        KeyValue kv = new KeyValue(ROWS[row], FAMILY, QUALIFIERS[qual], cellValue);<a name="line.228"></a>
-<span class="sourceLineNo">229</span>        put.add(kv);<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      }<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      puts.add(put);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    }<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    ht.put(puts);<a name="line.233"></a>
-<span class="sourceLineNo">234</span><a name="line.234"></a>
-<span class="sourceLineNo">235</span>    // Create a scan with the default configuration.<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    Scan scan = new Scan();<a name="line.236"></a>
-<span class="sourceLineNo">237</span><a name="line.237"></a>
-<span class="sourceLineNo">238</span>    ResultScanner scanner = ht.getScanner(scan);<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    assertTrue(scanner instanceof ClientScanner);<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    ClientScanner clientScanner = (ClientScanner) scanner;<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>    // Call next to issue a single RPC to the server<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    scanner.next();<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    // The scanner should have, at most, a single result in its cache. If there more results exists<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    // in the cache it means that more than the expected max result size was fetched.<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    assertTrue("The cache contains: " + clientScanner.getCacheSize() + " results",<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      clientScanner.getCacheSize() &lt;= 1);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  }<a name="line.249"></a>
-<span class="sourceLineNo">250</span><a name="line.250"></a>
-<span class="sourceLineNo">251</span>  /**<a name="line.251"></a>
-<span class="sourceLineNo">252</span>   * Scan on not existing table should throw the exception with correct message<a name="line.252"></a>
-<span class="sourceLineNo">253</span>   */<a name="line.253"></a>
-<span class="sourceLineNo">254</span>  @Test<a name="line.254"></a>
-<span class="sourceLineNo">255</span>  public void testScannerForNotExistingTable() {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    String[] tableNames = {"A", "Z", "A:A", "Z:Z"};<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    for(String tableName : tableNames) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      try {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        Table table = TEST_UTIL.getConnection().getTable(TableName.valueOf(tableName));<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        testSmallScan(table, true, 1, 5);<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        fail("TableNotFoundException was not thrown");<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      } catch (TableNotFoundException e) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        // We expect that the message for TableNotFoundException would have only the table name only<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        // Otherwise that would mean that localeRegionInMeta doesn't work properly<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        assertEquals(e.getMessage(), tableName);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      } catch (Exception e) {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        fail("Unexpected exception " + e.getMessage());<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      }<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    }<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  }<a name="line.270"></a>
-<span class="sourceLineNo">271</span><a name="line.271"></a>
-<span class="sourceLineNo">272</span>  @Test<a name="line.272"></a>
-<span class="sourceLineNo">273</span>  public void testSmallScan() throws Exception {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>    int numRows = 10;<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    byte[][] ROWS = HTestConst.makeNAscii(ROW, numRows);<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>    int numQualifiers = 10;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    byte[][] QUALIFIERS = HTestConst.makeNAscii(QUALIFIER, numQualifiers);<a name="line.280"></a>
-<span class="sourceLineNo">281</span><a name="line.281"></a>
-<span class="sourceLineNo">282</span>    Table ht = TEST_UTIL.createTable(tableName, FAMILY);<a name="line.282"></a>
-<span class="sourceLineNo">283</span><a name="line.283"></a>
-<span class="sourceLineNo">284</span>    Put put;<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    List&lt;Put&gt; puts = new ArrayList&lt;&gt;();<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    for (int row = 0; row &lt; ROWS.length; row++) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      put = new Put(ROWS[row]);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      for (int qual = 0; qual &lt; QUALIFIERS.length; qual++) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        KeyValue kv = new KeyValue(ROWS[row], FAMILY, QUALIFIERS[qual], VALUE);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        put.add(kv);<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      }<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      puts.add(put);<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    }<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    ht.put(puts);<a name="line.294"></a>
-<span class="sourceLineNo">295</span><a name="line.295"></a>
-<span class="sourceLineNo">296</span>    int expectedRows = numRows;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    int expectedCols = numRows * numQualifiers;<a name="line.297"></a>
-<span class="sourceLineNo">298</span><a name="line.298"></a>
-<span class="sourceLineNo">299</span>    // Test normal and reversed<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    testSmallScan(ht, true, expectedRows, expectedCols);<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    testSmallScan(ht, false, expectedRows, expectedCols);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>  }<a name="line.302"></a>
-<span class="sourceLineNo">303</span><a name="line.303"></a>
-<span class="sourceLineNo">304</span>  /**<a name="line.304"></a>
-<span class="sourceLineNo">305</span>   * Run through a variety of test configurations with a small scan<a name="line.305"></a>
-<span class="sourceLineNo">306</span>   * @param table<a name="line.306"></a>
-<span class="sourceLineNo">307</span>   * @param reversed<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * @param rows<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * @param columns<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * @throws Exception<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   */<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  private void testSmallScan(Table table, boolean reversed, int rows, int columns) throws Exception {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    Scan baseScan = new Scan();<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    baseScan.setReversed(reversed);<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    baseScan.setSmall(true);<a name="line.315"></a>
-<span class="sourceLineNo">316</span><a name="line.316"></a>
-<span class="sourceLineNo">317</span>    Scan scan = new Scan(baseScan);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    verifyExpectedCounts(table, scan, rows, columns);<a name="line.318"></a>
-<span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>    scan = new Scan(baseScan);<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    scan.setMaxResultSize(1);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    verifyExpectedCounts(table, scan, rows, columns);<a name="line.322"></a>
-<span class="sourceLineNo">323</span><a name="line.323"></a>
-<span class="sourceLineNo">324</span>    scan = new Scan(baseScan);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    scan.setMaxResultSize(1);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    scan.setCaching(Integer.MAX_VALUE);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    verifyExpectedCounts(table, scan, rows, columns);<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>  private void verifyExpectedCounts(Table table, Scan scan, int expectedRowCount,<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      int expectedCellCount) throws Exception {<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    ResultScanner scanner = table.getScanner(scan);<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>    int rowCount = 0;<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    int cellCount = 0;<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    Result r = null;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    while ((r = scanner.next()) != null) {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      rowCount++;<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      cellCount += r.rawCells().length;<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    }<a name="line.340"></a>
-<span class="sourceLineNo">341</span><a name="line.341"></a>
-<span class="sourceLineNo">342</span>    assertTrue("Expected row count: " + expectedRowCount + " Actual row count: " + rowCount,<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        expectedRowCount == rowCount);<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    assertTrue("Expected cell count: " + expectedCellCount + " Actual cell count: " + cellCount,<a name="line.344"></a>
-<span class="sourceLineNo">345</span>        expectedCellCount == cellCount);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    scanner.close();<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  }<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  /**<a name="line.349"></a>
-<span class="sourceLineNo">350</span>   * Test from client side for get with maxResultPerCF set<a name="line.350"></a>
-<span class="sourceLineNo">351</span>   *<a name="line.351"></a>
-<span class="sourceLineNo">352</span>   * @throws Exception<a name="line.352"></a>
-<span class="sourceLineNo">353</span>   */<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  @Test<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  public void testGetMaxResults() throws Exception {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    byte [][] FAMILIES = HTestConst.makeNAscii(FAMILY, 3);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    byte [][] QUALIFIERS = HTestConst.makeNAscii(QUALIFIER, 20);<a name="line.358"></a>
-<span class="sourceLineNo">359</span><a name="line.359"></a>
-<span class="sourceLineNo">360</span>    Table ht = TEST_UTIL.createTable(tableName, FAMILIES);<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>    Get get;<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    Put put;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    Result result;<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    boolean toLog = true;<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    List&lt;Cell&gt; kvListExp;<a name="line.366"></a>
-<span class="sourceLineNo">367</span><a name="line.367"></a>
-<span class="sourceLineNo">368</span>    kvListExp = new ArrayList&lt;&gt;();<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    // Insert one CF for row[0]<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    put = new Put(ROW);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    for (int i=0; i &lt; 10; i++) {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      KeyValue kv = new KeyValue(ROW, FAMILIES[0], QUALIFIERS[i], 1, VALUE);<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      put.add(kv);<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      kvListExp.add(kv);<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    }<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    ht.put(put);<a name="line.376"></a>
-<span class="sourceLineNo">377</span><a name="line.377"></a>
-<span class="sourceLineNo">378</span>    get = new Get(ROW);<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    result = ht.get(get);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    verifyResult(result, kvListExp, toLog, "Testing without setting maxResults");<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>    get = new Get(ROW);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    get.setMaxResultsPerColumnFamily(2);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    result = ht.get(get);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    kvListExp = new ArrayList&lt;&gt;();<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    kvListExp.add(new KeyValue(ROW, FAMILIES[0], QUALIFIERS[0], 1, VALUE));<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    kvListExp.add(new KeyValue(ROW, FAMILIES[0], QUALIFIERS[1], 1, VALUE));<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    verifyResult(result, kvListExp, toLog, "Testing basic setMaxResults");<a name="line.388"></a>
-<span class="sourceLineNo">389</span><a name="line.389"></a>
-<span class="sourceLineNo">390</span>    // Filters: ColumnRangeFilter<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    get = new Get(ROW);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    get.setMaxResultsPerColumnFamily(5);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    get.setFilter(new ColumnRangeFilter(QUALIFIERS[2], true, QUALIFIERS[5],<a name="line.393"></a>
-<span class="sourceLineNo">394</span>                                        true));<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    result = ht.get(get);<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    kvListExp = new ArrayList&lt;&gt;();<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    kvListExp.add(new KeyValue(ROW, FAMILIES[0], QUALIFIERS[2], 1, VALUE));<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    kvListExp.add(new KeyValue(ROW, FAMILIES[0], QUALIFIERS[3], 1, VALUE));<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    kvListExp.add(new KeyValue(ROW, FAMILIES[0], QUALIFIERS[4], 1, VALUE));<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    kvListExp.add(new KeyValue(ROW, FAMILIES[0], QUALIFIERS[5], 1, VALUE));<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    verifyResult(result, kvListExp, toLog, "Testing single CF with CRF");<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>    // Insert two more CF for row[0]<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    // 20 columns for CF2, 10 columns for CF1<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    put = new Put(ROW);<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    for (int i=0; i &lt; QUALIFIERS.length; i++) {<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      KeyValue kv = new KeyValue(ROW, FAMILIES[2], QUALIFIERS[i], 1, VALUE);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      put.add(kv);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    }<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    ht.put(put);<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>    put = new Put(ROW);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    for (int i=0; i &lt; 10; i++) {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      KeyValue kv = new KeyValue(ROW, FAMILIES[1], QUALIFIERS[i], 1, VALUE);<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      put.add(kv);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    }<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    ht.put(put);<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>    get = new Get(ROW);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    get.setMaxResultsPerColumnFamily(12);<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    get.addFamily(FAMILIES[1]);<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    get.addFamily(FAMILIES[2]);<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    result = ht.get(get);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    kvListExp = new ArrayList&lt;&gt;();<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    //Exp: CF1:q0, ..., q9, CF2: q0, q1, q10, q11, ..., q19<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    for (int i=0; i &lt; 10; i++) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      kvListExp.add(new KeyValue(ROW, FAMILIES[1], QUALIFIERS[i], 1, VALUE));<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    for (int i=0; i &lt; 2; i++) {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        kvListExp.add(new KeyValue(ROW, FAMILIES[2], QUALIFIERS[i], 1, VALUE));<a name="line.430"></a>
-<span class="sourceLineNo">431</span>      }<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    for (int i=10; i &lt; 20; i++) {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      kvListExp.add(new KeyValue(ROW, FAMILIES[2], QUALIFIERS[i], 1, VALUE));<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    }<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    verifyResult(result, kvListExp, toLog, "Testing multiple CFs");<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>    // Filters: ColumnRangeFilter and ColumnPrefixFilter<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    get = new Get(ROW);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    get.setMaxResultsPerColumnFamily(3);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    get.setFilter(new ColumnRangeFilter(QUALIFIERS[2], true, null, true));<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    result = ht.get(get);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    kvListExp = new ArrayList&lt;&gt;();<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    for (int i=2; i &lt; 5; i++) {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      kvListExp.add(new KeyValue(ROW, FAMILIES[0], QUALIFIERS[i], 1, VALUE));<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    }<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    for (int i=2; i &lt; 5; i++) {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      kvListExp.add(new KeyValue(ROW, FAMILIES[1], QUALIFIERS[i], 1, VALUE));<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    }<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    for (int i=2; i &lt; 5; i++) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      kvListExp.add(new KeyValue(ROW, FAMILIES[2], QUALIFIERS[i], 1, VALUE));<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    }<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    verifyResult(result, kvListExp, toLog, "Testing multiple CFs + CRF");<a name="line.452"></a>
-<span class="sourceLineNo">453</span><a name="line.453"></a>
-<span class="sourceLineNo">454</span>    get = new Get(ROW);<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    get.setMaxResultsPerColumnFamily(7);<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    get.setFilter(new ColumnPrefixFilter(QUALIFIERS[1]));<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    result = ht.get(get);<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    kvListExp = new ArrayList&lt;&gt;();<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    kvListExp.add(new KeyValue(ROW, FAMILIES[0], QUALIFIERS[1], 1, VALUE));<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    kvListExp.add(new KeyValue(ROW, FAMILIES[1], QUALIFIERS[1], 1, VALUE));<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    kvListExp.add(new KeyValue(ROW, FAMILIES[2], QUALIFIERS[1], 1, VALUE));<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    for (int i=10; i &lt; 16; i++) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      kvListExp.add(new KeyValue(ROW, FAMILIES[2], QUALIFIERS[i], 1, VALUE));<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    }<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    verifyResult(result, kvListExp, toLog, "Testing multiple CFs + PFF");<a name="line.465"></a>
-<span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>  }<a name="line.467"></a>
-<span class="sourceLineNo">468</span><a name="line.468"></a>
-<span class="sourceLineNo">469</span>  /**<a name="line.469"></a>
-<span class="sourceLineNo">470</span>   * Test from client side for scan with maxResultPerCF set<a name="line.470"></a>
-<span class="sourceLineNo">471</span>   *<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   * @throws Exception<a name="line.472"></a>
-<span class="sourceLineNo">473</span>   */<a name="line.473"></a>
-<span class="sourceLineNo">474</span>  @Test<a name="line.474"></a>
-<span class="sourceLineNo">475</span>  public void testScanMaxResults() throws Exception {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    byte [][] ROWS = HTestConst.makeNAscii(ROW, 2);<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    byte [][] FAMILIES = HTestConst.makeNAscii(FAMILY, 3);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    byte [][] QUALIFIERS = HTestConst.makeNAscii(QUALIFIER, 10);<a name="line.479"></a>
-<span class="sourceLineNo">480</span><a name="line.480"></a>
-<span class="sourceLineNo">481</span>    Table ht = TEST_UTIL.createTable(tableName, FAMILIES);<a name="line.481"></a>
-<span class="sourceLineNo">482</span><a name="line.482"></a>
-<span class="sourceLineNo">483</span>    Put put;<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    Scan scan;<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    Result result;<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    boolean toLog = true;<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    List&lt;Cell&gt; kvListExp, kvListScan;<a name="line.487"></a>
-<span class="sourceLineNo">488</span><a name="line.488"></a>
-<span class="sourceLineNo">489</span>    kvListExp = new ArrayList&lt;&gt;();<a name="line.489"></a>
-<span class="sourceLineNo">490</span><a name="line.490"></a>
-<span class="sourceLineNo">491</span>    for (int r=0; r &lt; ROWS.length; r++) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      put = new Put(ROWS[r]);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      for (int c=0; c &lt; FAMILIES.length; c++) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>        for (int q=0; q &lt; QUALIFIERS.length; q++) {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>          KeyValue kv = new KeyValue(ROWS[r], FAMILIES[c], QUALIFIERS[q], 1, VALUE);<a name="line.495"></a>
-<span class="sourceLineNo">496</span>          put.add(kv);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>          if (q &lt; 4) {<a name="line.497"></a>
-<span class="sourceLineNo">498</span>            kvListExp.add(kv);<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>      }<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      ht.put(put);<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>    scan = new Scan();<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    scan.setMaxResultsPerColumnFamily(4);<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    ResultScanner scanner = ht.getScanner(scan);<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    kvListScan = new ArrayList&lt;&gt;();<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    while ((result = scanner.next()) != null) {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      for (Cell kv : result.listCells()) {<a name="line.510"></a>
-<span class="sourceLineNo">511</span>        kvListScan.add(kv);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      }<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    }<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    result = Result.create(kvListScan);<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    verifyResult(result, kvListExp, toLog, "Testing scan with maxResults");<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>  }<a name="line.517"></a>
-<span class="sourceLineNo">518</span><a name="line.518"></a>
-<span class="sourceLineNo">519</span>  /**<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   * Test from client side for get with rowOffset<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   *<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   * @throws Exception<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   */<a name="line.523"></a>
-<span class="sourceLineNo">524</span>  @Test<a name="line.524"></a>
-<span class="sourceLineNo">525</span>  public void testGetRowOffset() throws Exception {<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    byte [][] FAMILIES = HTestConst.makeNAscii(FAMILY, 3);<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    byte [][] QUALIFIERS = HTestConst.makeNAscii(QUALIFIER, 20);<a name="line.528"></a>
-<span class="sourceLineNo">529</span><a name="line.529"></a>
-<span class="sourceLineNo">530</span>    Table ht = TEST_UTIL.createTable(tableName, FAMILIES);<a name="line.530"></a>
-<span class="sourceLineNo">531</span><a name="line.531"></a>
-<span class="sourceLineNo">532</span>    Get get;<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    Put put;<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    Result result;<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    boolean toLog = true;<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    List&lt;Cell&gt; kvListExp;<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>    // Insert one CF for row<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    kvListExp = new ArrayList&lt;&gt;();<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    put = new Put(ROW);<a name="line.540"></a>
-<span class="sourceLineNo">541</span>    for (int i=0; i &lt; 10; i++) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      KeyValue kv = new KeyValue(ROW, FAMILIES[0], QUALIFIERS[i], 1, VALUE);<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      put.add(kv);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>      // skipping first two kvs<a name="line.544"></a>
-<span class="sourceLineNo">545</span>      if (i &lt; 2) continue;<a name="line.545"></a>
-<span class="sourceLineNo">546</span>      kvListExp.add(kv);<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    }<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    ht.put(put);<a name="line.548"></a>
-<span class="sourceLineNo">549</span><a name="line.549"></a>
-<span class="sourceLineNo">550</span>    //setting offset to 2<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    get = new Get(ROW);<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    get.setRowOffsetPerColumnFamily(2);<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    result = ht.get(get);<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    verifyResult(result, kvListExp, toLog, "Testing basic setRowOffset");<a name="line.554"></a>
-<span class="sourceLineNo">555</span><a name="line.555"></a>
-<span class="sourceLineNo">556</span>    //setting offset to 20<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    get = new Get(ROW);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>    get.setRowOffsetPerColumnFamily(20);<a name="line.558"></a>
-<span class="sourceLineNo">559</span>    result = ht.get(get);<a name="line.559"></a>
-<span class="sourceLineNo">560</span>    kvListExp = new ArrayList&lt;&gt;();<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    verifyResult(result, kvListExp, toLog, "Testing offset &gt; #kvs");<a name="line.561"></a>
-<span class="sourceLineNo">562</span><a name="line.562"></a>
-<span class="sourceLineNo">563</span>    //offset + maxResultPerCF<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    get = new Get(ROW);<a name="line.564"></a>
-<span class="sourceLineNo">565</span>    get.setRowOffsetPerColumnFamily(4);<a name="line.565"></a>
-<span class="sourceLineNo">566</span>    get.setMaxResultsPerColumnFamily(5);<a name="line.566"></a>
-<span class="sourceLineNo">567</span>    result = ht.get(get);<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    kvListExp = new ArrayList&lt;&gt;();<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    for (int i=4; i &lt; 9; i++) {<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      kvListExp.add(new KeyValue(ROW, FAMILIES[0], QUALIFIERS[i], 1, VALUE));<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    }<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    verifyResult(result, kvListExp, toLog,<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      "Testing offset + setMaxResultsPerCF");<a name="line.573"></a>
-<span class="sourceLineNo">574</span><a name="line.574"></a>
-<span class="sourceLineNo">575</span>    // Filters: ColumnRangeFilter<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    get = new Get(ROW);<a name="line.576"></a>
-<span class="sourceLineNo">577</span>    get.setRowOffsetPerColumnFamily(1);<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    get.setFilter(new ColumnRangeFilter(QUALIFIERS[2], true, QUALIFIERS[5],<a name="line.578"></a>
-<span class="sourceLineNo">579</span>                                        true));<a name="line.579"></a>
-<span class="sourceLineNo">580</span>    result = ht.get(get);<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    kvListExp = new ArrayList&lt;&gt;();<a name="line.581"></a>
-<span class="sourceLineNo">582</span>    kvListExp.add(new KeyValue(ROW, FAMILIES[0], QUALIFIERS[3], 1, VALUE));<a name="line.582"></a>
-<span class="sourceLineNo">583</span>    kvListExp.add(new KeyValue(ROW, FAMILIES[0], QUALIFIERS[4], 1, VALUE));<a name="line.583"></a>
-<span class="sourceLineNo">584</span>    kvListExp.add(new KeyValue(ROW, FAMILIES[0], QUALIFIERS[5], 1, VALUE));<a name="line.584"></a>
-<span class="sourceLineNo">585</span>    verifyResult(result, kvListExp, toLog, "Testing offset with CRF");<a name="line.585"></a>
-<span class="sourceLineNo">586</span><a name="line.586"></a>
-<span class="sourceLineNo">587</span>    // Insert into two more CFs for row<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    // 10 columns for CF2, 10 columns for CF1<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    for(int j=2; j &gt; 0; j--) {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>      put = new Put(ROW);<a name="line.590"></a>
-<span class="sourceLineNo">591</span>      for (int i=0; i &lt; 10; i++) {<a name="line.591"></a>
-<span class="sourceLineNo">592</span>        KeyValue kv = new KeyValue(ROW, FAMILIES[j], QUALIFIERS[i], 1, VALUE);<a name="line.592"></a>
-<span class="sourceLineNo">593</span>        put.add(kv);<a name="line.593"></a>
-<span class="sourceLineNo">594</span>      }<a name="line.594"></a>
-<span class="sourceLineNo">595</span>      ht.put(put);<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>    get = new Get(ROW);<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    get.setRowOffsetPerColumnFamily(4);<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    get.setMaxResultsPerColumnFamily(2);<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    get.addFamily(FAMILIES[1]);<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    get.addFamily(FAMILIES[2]);<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    result = ht.get(get);<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    kvListExp = new ArrayList&lt;&gt;();<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    //Exp: CF1:q4, q5, CF2: q4, q5<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    kvListExp.add(new KeyValue(ROW, FAMILIES[1], QUALIFIERS[4], 1, VALUE));<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    kvListExp.add(new KeyValue(ROW, FAMILIES[1], QUALIFIERS[5], 1, VALUE));<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    kvListExp.add(new KeyValue(ROW, FAMILIES[2], QUALIFIERS[4], 1, VALUE));<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    kvListExp.add(new KeyValue(ROW, FAMILIES[2], QUALIFIERS[5], 1, VALUE));<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    verifyResult(result, kvListExp, toLog,<a name="line.610"></a>
-<span class="sourceLineNo">611</span>       "Testing offset + multiple CFs + maxResults");<a name="line.611"></a>
-<span class="sourceLineNo">612</span>  }<a name="line.612"></a>
-<span class="sourceLineNo">613</span><a name="line.613"></a>
-<span class="sourceLineNo">614</span>  @Test<a name="line.614"></a>
-<span class="sourceLineNo">615</span>  public void testScanRawDeleteFamilyVersion() throws Exception {<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.616"></a>
-<span class="sourceLineNo">617</span>    TEST_UTIL.createTable(tableName, FAMILY);<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    Configuration conf = new Configuration(TEST_UTIL.getConfiguration());<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    conf.set(RPC_CODEC_CONF_KEY, "");<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    conf.set(DEFAULT_CODEC_CLASS, "");<a name="line.620"></a>
-<span class="sourceLineNo">621</span>    try (Connection connection = ConnectionFactory.createConnection(conf);<a name="line.621"></a>
-<span class="sourceLineNo">622</span>        Table table = connection.getTable(tableName)) {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      Delete delete = new Delete(ROW);<a name="line.623"></a>
-<span class="sourceLineNo">624</span>      delete.addFamilyVersion(FAMILY, 0L);<a name="line.624"></a>
-<span class="sourceLineNo">625</span>      table.delete(delete);<a name="line.625"></a>
-<span class="sourceLineNo">626</span>      Scan scan = new Scan(ROW).setRaw(true);<a name="line.626"></a>
-<span class="sourceLineNo">627</span>      ResultScanner scanner = table.getScanner(scan);<a name="line.627"></a>
-<span class="sourceLineNo">628</span>      int count = 0;<a name="line.628"></a>
-<span class="sourceLineNo">629</span>      while (scanner.next() != null) {<a name="line.629"></a>
-<span class="sourceLineNo">630</span>        count++;<a name="line.630"></a>
-<span class="sourceLineNo">631</span>      }<a name="line.631"></a>
-<span class="sourceLineNo">632</span>      assertEquals(1, count);<a name="line.632"></a>
-<span class="sourceLineNo">633</span>    } finally {<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      TEST_UTIL.deleteTable(tableName);<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    }<a name="line.635"></a>
-<span class="sourceLineNo">636</span>  }<a name="line.636"></a>
-<span class="sourceLineNo">637</span><a name="line.637"></a>
-<span class="sourceLineNo">638</span>  /**<a name="line.638"></a>
-<span class="sourceLineNo">639</span>   * Test from client side for scan while the region is reopened<a name="line.639"></a>
-<span class="sourceLineNo">640</span>   * on the same region server.<a name="line.640"></a>
-<span class="sourceLineNo">641</span>   *<a name="line.641"></a>
-<span class="sourceLineNo">642</span>   * @throws Exception<a name="line.642"></a>
-<span class="sourceLineNo">643</span>   */<a name="line.643"></a>
-<span class="sourceLineNo">644</span>  @Test<a name="line.644"></a>
-<span class="sourceLineNo">645</span>  public void testScanOnReopenedRegion() throws Exception {<a name="line.645"></a>
-<span class="sourceLineNo">646</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    byte [][] QUALIFIERS = HTestConst.makeNAscii(QUALIFIER, 2);<a name="line.647"></a>
-<span class="sourceLineNo">648</span><a name="line.648"></a>
-<span class="sourceLineNo">649</span>    Table ht = TEST_UTIL.createTable(tableName, FAMILY);<a name="line.649"></a>
-<span class="sourceLineNo">650</span><a name="line.650"></a>
-<span class="sourceLineNo">651</span>    Put put;<a name="line.651"></a>
-<span class="sourceLineNo">652</span>    Scan scan;<a name="line.652"></a>
-<span class="sourceLineNo">653</span>    Result result;<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    ResultScanner scanner;<a name="line.654"></a>
-<span class="sourceLineNo">655</span>    boolean toLog = false;<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    List&lt;Cell&gt; kvListExp;<a name="line.656"></a>
-<span class="sourceLineNo">657</span><a name="line.657"></a>
-<span class="sourceLineNo">658</span>    // table: row, family, c0:0, c1:1<a name="line.658"></a>
-<span class="sourceLineNo">659</span>    put = new Put(ROW);<a name="line.659"></a>
-<span class="sourceLineNo">660</span>    for (int i=0; i &lt; QUALIFIERS.length; i++) {<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      KeyValue kv = new KeyValue(ROW, FAMILY, QUALIFIERS[i], i, VALUE);<a name="line.661"></a>
-<span class="sourceLineNo">662</span>      put.add(kv);<a name="line.662"></a>
-<span class="sourceLineNo">663</span>    }<a name="line.663"></a>
-<span class="sourceLineNo">664</span>    ht.put(put);<a name="line.664"></a>
-<span class="sourceLineNo">665</span><a name="line.665"></a>
-<span class="sourceLineNo">666</span>    scan = new Scan().withStartRow(ROW);<a name="line.666"></a>
-<span class="sourceLineNo">667</span>    scanner = ht.getScanner(scan);<a name="line.667"></a>
-<span class="sourceLineNo">668</span><a name="line.668"></a>
-<span class="sourceLineNo">669</span>    HRegionLocation loc;<a name="line.669"></a>
-<span class="sourceLineNo">670</span><a name="line.670"></a>
-<span class="sourceLineNo">671</span>    try (RegionLocator locator = TEST_UTIL.getConnection().getRegionLocator(tableName)) {<a name="line.671"></a>
-<span class="sourceLineNo">672</span>      loc = locator.getRegionLocation(ROW);<a name="line.672"></a>
-<span class="sourceLineNo">673</span>    }<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    HRegionInfo hri = loc.getRegionInfo();<a name="line.674"></a>
-<span class="sourceLineNo">675</span>    MiniHBaseCluster cluster = TEST_UTIL.getMiniHBaseCluster();<a name="line.675"></a>
-<span class="sourceLineNo">676</span>    byte[] regionName = hri.getRegionName();<a name="line.676"></a>
-<span class="sourceLineNo">677</span>    int i = cluster.getServerWith(regionName);<a name="line.677"></a>
-<span class="sourceLineNo">678</span>    HRegionServer rs = cluster.getRegionServer(i);<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    LOG.info("Unassigning " + hri);<a name="line.679"></a>
-<span class="sourceLineNo">680</span>    TEST_UTIL.getAdmin().unassign(hri.getRegionName(), true);<a name="line.680"></a>
-<span class="sourceLineNo">681</span>    long startTime = EnvironmentEdgeManager.currentTime();<a name="line.681"></a>
-<span class="sourceLineNo">682</span>    long timeOut = 10000;<a name="line.682"></a>
-<span class="sourceLineNo">683</span>    boolean offline = false;<a name="line.683"></a>
-<span class="sourceLineNo">684</span>    while (true) {<a name="line.684"></a>
-<span class="sourceLineNo">685</span>      if (rs.getOnlineRegion(regionName) == null) {<a name="line.685"></a>
-<span class="sourceLineNo">686</span>        offline = true;<a name="line.686"></a>
-<span class="sourceLineNo">687</span>        break;<a name="line.687"></a>
-<span class="sourceLineNo">688</span>      }<a name="line.688"></a>
-<span class="sourceLineNo">689</span>      assertTrue("Timed out in closing the testing region",<a name="line.689"></a>
-<span class="sourceLineNo">690</span>        EnvironmentEdgeManager.currentTime() &lt; startTime + timeOut);<a name="line.690"></a>
-<span class="sourceLineNo">691</span>    }<a name="line.691"></a>
-<span class="sourceLineNo">692</span>    assertTrue(offline);<a name="line.692"></a>
-<span class="sourceLineNo">693</span>    LOG.info("Assigning " + hri);<a name="line.693"></a>
-<span class="sourceLineNo">694</span>    TEST_UTIL.getAdmin().assign(hri.getRegionName());<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    startTime = EnvironmentEdgeManager.currentTime();<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    while (true) {<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      rs = cluster.getRegionServer(cluster.getServerWith(regionName));<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      if (rs != null &amp;&amp; rs.getOnlineRegion(regionName) != null) {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>        offline = false;<a name="line.699"></a>
-<span class="sourceLineNo">700</span>        break;<a name="line.700"></a>
-<span class="sourceLineNo">701</span>      }<a name="line.701"></a>
-<span class="sourceLineNo">702</span>      assertTrue("Timed out in open the testing region",<a name="line.702"></a>
-<span class="sourceLineNo">703</span>        EnvironmentEdgeManager.currentTime() &lt; startTime + timeOut);<a name="line.703"></a>
-<span class="sourceLineNo">704</span>    }<a name="line.704"></a>
-<span class="sourceLineNo">705</span>    assertFalse(offline);<a name="line.705"></a>
-<span class="sourceLineNo">706</span><a name="line.706"></a>
-<span class="sourceLineNo">707</span>    // c0:0, c1:1<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    kvListExp = new ArrayList&lt;&gt;();<a name="line.708"></a>
-<span class="sourceLineNo">709</span>    kvListExp.add(new KeyValue(ROW, FAMILY, QUALIFIERS[0], 0, VALUE));<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    kvListExp.add(new KeyValue(ROW, FAMILY, QUALIFIERS[1], 1, VALUE));<a name="line.710"></a>
-<span class="sourceLineNo">711</span>    result = scanner.next();<a name="line.711"></a>
-<span class="sourceLineNo">712</span>    verifyResult(result, kvListExp, toLog, "Testing scan on re-opened region");<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>  @Test<a name="line.715"></a>
-<span class="sourceLineNo">716</span>  public void testAsyncScannerWithSmallData() throws Exception {<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    testAsyncScanner(TableName.valueOf(name.getMethodName()),<a name="line.717"></a>
-<span class="sourceLineNo">718</span>      2,<a name="line.718"></a>
-<span class="sourceLineNo">719</span>      3,<a name="line.719"></a>
-<span class="sourceLineNo">720</span>      10,<a name="line.720"></a>
-<span class="sourceLineNo">721</span>      -1,<a name="line.721"></a>
-<span class="sourceLineNo">722</span>      null);<a name="line.722"></a>
-<span class="sourceLineNo">723</span>  }<a name="line.723"></a>
-<span class="sourceLineNo">724</span><a name="line.724"></a>
-<span class="sourceLineNo">725</span>  @Test<a name="line.725"></a>
-<span class="sourceLineNo">726</span>  public void testAsyncScannerWithManyRows() throws Exception {<a name="line.726"></a>
-<span class="sourceLineNo">727</span>    testAsyncScanner(TableName.valueOf(name.getMethodName()),<a name="line.727"></a>
-<span class="sourceLineNo">728</span>      30000,<a name="line.728"></a>
-<span class="sourceLineNo">729</span>      1,<a name="line.729"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.client.TestFromClientSide3.generateHugeValue;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.ipc.RpcClient.DEFAULT_CODEC_CLASS;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.junit.Assert.assertArrayEquals;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.junit.Assert.assertEquals;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import static org.junit.Assert.assertFalse;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import static org.junit.Assert.assertNotNull;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import static org.junit.Assert.assertNull;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import static org.junit.Assert.assertTrue;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import static org.junit.Assert.fail;<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.util.ArrayList;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.util.List;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.concurrent.TimeUnit;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.function.Consumer;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.stream.IntStream;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.conf.Configuration;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.Cell;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.CompareOperator;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.HColumnDescriptor;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.HConstants;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.HTestConst;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.MiniHBaseCluster;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.TableName;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.TableNotFoundException;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.filter.BinaryComparator;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.filter.ColumnPrefixFilter;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.filter.ColumnRangeFilter;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.filter.QualifierFilter;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.testclassification.ClientTests;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.junit.After;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.junit.AfterClass;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.junit.Before;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.junit.BeforeClass;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.junit.ClassRule;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.junit.Rule;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.junit.Test;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.junit.experimental.categories.Category;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.junit.rules.TestName;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.slf4j.Logger;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.slf4j.LoggerFactory;<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>/**<a name="line.72"></a>
+<span class="sourceLineNo">073</span> * A client-side test, mostly testing scanners with various parameters.<a name="line.73"></a>
+<span class="sourceLineNo">074</span> */<a name="line.74"></a>
+<span class="sourceLineNo">075</span>@Category({MediumTests.class, ClientTests.class})<a name="line.75"></a>
+<span class="sourceLineNo">076</span>public class TestScannersFromClientSide {<a name="line.76"></a>
+<span class="sourceLineNo">077</span><a name="line.77"></a>
+<span class="sourceLineNo">078</span>  @ClassRule<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      HBaseClassTestRule.forClass(TestScannersFromClientSide.class);<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>  private static final Logger LOG = LoggerFactory.getLogger(TestScannersFromClientSide.class);<a name="line.82"></a>
+<span class="sourceLineNo">083</span><a name="line.83"></a>
+<span class="sourceLineNo">084</span>  private final static HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.84"></a>
+<span class="sourceLineNo">085</span>  private static byte [] ROW = Bytes.toBytes("testRow");<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  private static byte [] FAMILY = Bytes.toBytes("testFamily");<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  private static byte [] QUALIFIER = Bytes.toBytes("testQualifier");<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  private static byte [] VALUE = Bytes.toBytes("testValue");<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>  @Rule<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  public TestName name = new TestName();<a name="line.91"></a>
+<span class="sourceLineNo">092</span><a name="line.92"></a>
+<span class="sourceLineNo">093</span>  /**<a name="line.93"></a>
+<span class="sourceLineNo">094</span>   * @throws java.lang.Exception<a name="line.94"></a>
+<span class="sourceLineNo">095</span>   */<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  @BeforeClass<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  public static void setUpBeforeClass() throws Exception {<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    Configuration conf = TEST_UTIL.getConfiguration();<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    conf.setLong(HConstants.HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE_KEY, 10 * 1024 * 1024);<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    TEST_UTIL.startMiniCluster(3);<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>   * @throws java.lang.Exception<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  @AfterClass<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  public static void tearDownAfterClass() throws Exception {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    TEST_UTIL.shutdownMiniCluster();<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>  /**<a name="line.111"></a>
+<span class="sourceLineNo">112</span>   * @throws java.lang.Exception<a name="line.112"></a>
+<span class="sourceLineNo">113</span>   */<a name="line.113"></a>
+<span class="sourceLineNo">114</span>  @Before<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  public void setUp() throws Exception {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    // Nothing to do.<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  }<a name="line.117"></a>
+<span class="sourceLineNo">118</span><a name="line.118"></a>
+<span class="sourceLineNo">119</span>  /**<a name="line.119"></a>
+<span class="sourceLineNo">120</span>   * @throws java.lang.Exception<a name="line.120"></a>
+<span class="sourceLineNo">121</span>   */<a name="line.121"></a>
+<span class="sourceLineNo">122</span>  @After<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  public void tearDown() throws Exception {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    // Nothing to do.<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  }<a name="line.125"></a>
+<span class="sourceLineNo">126</span><a name="line.126"></a>
+<span class="sourceLineNo">127</span>  /**<a name="line.127"></a>
+<span class="sourceLineNo">128</span>   * Test from client side for batch of scan<a name="line.128"></a>
+<span class="sourceLineNo">129</span>   *<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * @throws Exception<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   */<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  @Test<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  public void testScanBatch() throws Exception {<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    byte [][] QUALIFIERS = HTestConst.makeNAscii(QUALIFIER, 8);<a name="line.135"></a>
+<span class="sourceLineNo">136</span><a name="line.136"></a>
+<span class="sourceLineNo">137</span>    Table ht = TEST_UTIL.createTable(tableName, FAMILY);<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>    Put put;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    Scan scan;<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    Delete delete;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    Result result;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    ResultScanner scanner;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    boolean toLog = true;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    List&lt;Cell&gt; kvListExp;<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>    // table: row, family, c0:0, c1:1, ... , c7:7<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    put = new Put(ROW);<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    for (int i=0; i &lt; QUALIFIERS.length; i++) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      KeyValue kv = new KeyValue(ROW, FAMILY, QUALIFIERS[i], i, VALUE);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      put.add(kv);<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    }<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    ht.put(put);<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>    // table: row, family, c0:0, c1:1, ..., c6:2, c6:6 , c7:7<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    put = new Put(ROW);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    KeyValue kv = new KeyValue(ROW, FAMILY, QUALIFIERS[6], 2, VALUE);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    put.add(kv);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    ht.put(put);<a name="line.159"></a>
+<span class="sourceLineNo">160</span><a name="line.160"></a>
+<span class="sourceLineNo">161</span>    // delete upto ts: 3<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    delete = new Delete(ROW);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    delete.addFamily(FAMILY, 3);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    ht.delete(delete);<a name="line.164"></a>
+<span class="sourceLineNo">165</span><a name="line.165"></a>
+<span class="sourceLineNo">166</span>    // without batch<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    scan = new Scan().withStartRow(ROW);<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    scan.setMaxVersions();<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    scanner = ht.getScanner(scan);<a name="line.169"></a>
+<span class="sourceLineNo">170</span><a name="line.170"></a>
+<span class="sourceLineNo">171</span>    // c4:4, c5:5, c6:6, c7:7<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    kvListExp = new ArrayList&lt;&gt;();<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    kvListExp.add(new KeyValue(ROW, FAMILY, QUALIFIERS[4], 4, VALUE));<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    kvListExp.add(new KeyValue(ROW, FAMILY, QUALIFIERS[5], 5, VALUE));<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    kvListExp.add(new KeyValue(ROW, FAMILY, QUALIFIERS[6], 6, VALUE));<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    kvListExp.add(new KeyValue(ROW, FAMILY, QUALIFIERS[7], 7, VALUE));<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    result = scanner.next();<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    verifyResult(result, kvListExp, toLog, "Testing first batch of scan");<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>    // with batch<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    scan =  new Scan().withStartRow(ROW);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    scan.setMaxVersions();<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    scan.setBatch(2);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    scanner = ht.getScanner(scan);<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>    // First batch: c4:4, c5:5<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    kvListExp = new ArrayList&lt;&gt;();<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    kvListExp.add(new KeyValue(ROW, FAMILY, QUALIFIERS[4], 4, VALUE));<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    kvListExp.add(new KeyValue(ROW, FAMILY, QUALIFIERS[5], 5, VALUE));<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    result = scanner.next();<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    verifyResult(result, kvListExp, toLog, "Testing first batch of scan");<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>    // Second batch: c6:6, c7:7<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    kvListExp = new ArrayList&lt;&gt;();<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    kvListExp.add(new KeyValue(ROW, FAMILY, QUALIFIERS[6], 6, VALUE));<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    kvListExp.add(new KeyValue(ROW, FAMILY, QUALIFIERS[7], 7, VALUE));<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    result = scanner.next();<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    verifyResult(result, kvListExp, toLog, "Testing second batch of scan");<a name="line.198"></a>
+<span class="sourceLineNo">199</span><a name="line.199"></a>
+<span class="sourceLineNo">200</span>  }<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>  @Test<a name="line.202"></a>
+<span class="sourceLineNo">203</span>  public void testMaxResultSizeIsSetToDefault() throws Exception {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    Table ht = TEST_UTIL.createTable(tableName, FAMILY);<a name="line.205"></a>
+<span class="sourceLineNo">206</span><a name="line.206"></a>
+<span class="sourceLineNo">207</span>    // The max result size we expect the scan to use by default.<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    long expectedMaxResultSize =<a name="line.208"></a>
+<span class="sourceLineNo">209</span>        TEST_UTIL.getConfiguration().getLong(HConstants.HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE_KEY,<a name="line.209"></a>
+<span class="sourceLineNo">210</span>          HConstants.DEFAULT_HBASE_CLIENT_SCANNER_MAX_RESULT_SIZE);<a name="line.210"></a>
+<span class="sourceLineNo">211</span><a name="line.211"></a>
+<span class="sourceLineNo">212</span>    int numRows = 5;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    byte[][] ROWS = HTestConst.makeNAscii(ROW, numRows);<a name="line.213"></a>
+<span class="sourceLineNo">214</span><a name="line.214"></a>
+<span class="sourceLineNo">215</span>    int numQualifiers = 10;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    byte[][] QUALIFIERS = HTestConst.makeNAscii(QUALIFIER, numQualifiers);<a name="line.216"></a>
+<span class="sourceLineNo">217</span><a name="line.217"></a>
+<span class="sourceLineNo">218</span>    // Specify the cell size such that a single row will be larger than the default<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    // value of maxResultSize. This means that Scan RPCs should return at most a single<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    // result back to the client.<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    int cellSize = (int) (expectedMaxResultSize / (numQualifiers - 1));<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    byte[] cellValue = Bytes.createMaxByteArray(cellSize);<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>    Put put;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    List&lt;Put&gt; puts = new ArrayList&lt;&gt;();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    for (int row = 0; row &lt; ROWS.length; row++) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      put = new Put(ROWS[row]);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      for (int qual = 0; qual &lt; QUALIFIERS.length; qual++) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>        KeyValue kv = new KeyValue(ROWS[row], FAMILY, QUALIFIERS[qual], cellValue);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>        put.add(kv);<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      }<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      puts.add(put);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    }<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    ht.put(puts);<a name="line.234"></a>
+<span class="sourceLineNo">235</span><a name="line.235"></a>
+<span class="sourceLineNo">236</span>    // Create a scan with the default configuration.<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    Scan scan = new Scan();<a name="line.237"></a>
+<span class="sourceLineNo">238</span><a name="line.238"></a>
+<span class="sourceLineNo">239</span>    ResultScanner scanner = ht.getScanner(scan);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    assertTrue(scanner instanceof ClientScanner);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    ClientScanner clientScanner = (ClientScanner) scanner;<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span>    // Call next to issue a single RPC to the server<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    scanner.next();<a na

<TRUNCATED>

[11/29] hbase-site git commit: Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html
index 5c3d7f4..ef2cd13 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html
@@ -721,3236 +721,3236 @@
 <span class="sourceLineNo">713</span>      new Path(root, "mapreduce-am-staging-root-dir").toString());<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>  /**<a name="line.717"></a>
-<span class="sourceLineNo">718</span>   *  Get the HBase setting for dfs.client.read.shortcircuit from the conf or a system property.<a name="line.718"></a>
-<span class="sourceLineNo">719</span>   *  This allows to specify this parameter on the command line.<a name="line.719"></a>
-<span class="sourceLineNo">720</span>   *   If not set, default is true.<a name="line.720"></a>
-<span class="sourceLineNo">721</span>   */<a name="line.721"></a>
-<span class="sourceLineNo">722</span>  public boolean isReadShortCircuitOn(){<a name="line.722"></a>
-<span class="sourceLineNo">723</span>    final String propName = "hbase.tests.use.shortcircuit.reads";<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    String readOnProp = System.getProperty(propName);<a name="line.724"></a>
-<span class="sourceLineNo">725</span>    if (readOnProp != null){<a name="line.725"></a>
-<span class="sourceLineNo">726</span>      return  Boolean.parseBoolean(readOnProp);<a name="line.726"></a>
-<span class="sourceLineNo">727</span>    } else {<a name="line.727"></a>
-<span class="sourceLineNo">728</span>      return conf.getBoolean(propName, false);<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><a name="line.731"></a>
-<span class="sourceLineNo">732</span>  /** Enable the short circuit read, unless configured differently.<a name="line.732"></a>
-<span class="sourceLineNo">733</span>   * Set both HBase and HDFS settings, including skipping the hdfs checksum checks.<a name="line.733"></a>
-<span class="sourceLineNo">734</span>   */<a name="line.734"></a>
-<span class="sourceLineNo">735</span>  private void enableShortCircuit() {<a name="line.735"></a>
-<span class="sourceLineNo">736</span>    if (isReadShortCircuitOn()) {<a name="line.736"></a>
-<span class="sourceLineNo">737</span>      String curUser = System.getProperty("user.name");<a name="line.737"></a>
-<span class="sourceLineNo">738</span>      LOG.info("read short circuit is ON for user " + curUser);<a name="line.738"></a>
-<span class="sourceLineNo">739</span>      // read short circuit, for hdfs<a name="line.739"></a>
-<span class="sourceLineNo">740</span>      conf.set("dfs.block.local-path-access.user", curUser);<a name="line.740"></a>
-<span class="sourceLineNo">741</span>      // read short circuit, for hbase<a name="line.741"></a>
-<span class="sourceLineNo">742</span>      conf.setBoolean("dfs.client.read.shortcircuit", true);<a name="line.742"></a>
-<span class="sourceLineNo">743</span>      // Skip checking checksum, for the hdfs client and the datanode<a name="line.743"></a>
-<span class="sourceLineNo">744</span>      conf.setBoolean("dfs.client.read.shortcircuit.skip.checksum", true);<a name="line.744"></a>
-<span class="sourceLineNo">745</span>    } else {<a name="line.745"></a>
-<span class="sourceLineNo">746</span>      LOG.info("read short circuit is OFF");<a name="line.746"></a>
-<span class="sourceLineNo">747</span>    }<a name="line.747"></a>
-<span class="sourceLineNo">748</span>  }<a name="line.748"></a>
-<span class="sourceLineNo">749</span><a name="line.749"></a>
-<span class="sourceLineNo">750</span>  private String createDirAndSetProperty(final String relPath, String property) {<a name="line.750"></a>
-<span class="sourceLineNo">751</span>    String path = getDataTestDir(relPath).toString();<a name="line.751"></a>
-<span class="sourceLineNo">752</span>    System.setProperty(property, path);<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    conf.set(property, path);<a name="line.753"></a>
-<span class="sourceLineNo">754</span>    new File(path).mkdirs();<a name="line.754"></a>
-<span class="sourceLineNo">755</span>    LOG.info("Setting " + property + " to " + path + " in system properties and HBase conf");<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    return path;<a name="line.756"></a>
-<span class="sourceLineNo">757</span>  }<a name="line.757"></a>
-<span class="sourceLineNo">758</span><a name="line.758"></a>
-<span class="sourceLineNo">759</span>  /**<a name="line.759"></a>
-<span class="sourceLineNo">760</span>   * Shuts down instance created by call to {@link #startMiniDFSCluster(int)}<a name="line.760"></a>
-<span class="sourceLineNo">761</span>   * or does nothing.<a name="line.761"></a>
-<span class="sourceLineNo">762</span>   * @throws IOException<a name="line.762"></a>
-<span class="sourceLineNo">763</span>   */<a name="line.763"></a>
-<span class="sourceLineNo">764</span>  public void shutdownMiniDFSCluster() throws IOException {<a name="line.764"></a>
-<span class="sourceLineNo">765</span>    if (this.dfsCluster != null) {<a name="line.765"></a>
-<span class="sourceLineNo">766</span>      // The below throws an exception per dn, AsynchronousCloseException.<a name="line.766"></a>
-<span class="sourceLineNo">767</span>      this.dfsCluster.shutdown();<a name="line.767"></a>
-<span class="sourceLineNo">768</span>      dfsCluster = null;<a name="line.768"></a>
-<span class="sourceLineNo">769</span>      dataTestDirOnTestFS = null;<a name="line.769"></a>
-<span class="sourceLineNo">770</span>      FSUtils.setFsDefault(this.conf, new Path("file:///"));<a name="line.770"></a>
-<span class="sourceLineNo">771</span>    }<a name="line.771"></a>
-<span class="sourceLineNo">772</span>  }<a name="line.772"></a>
-<span class="sourceLineNo">773</span><a name="line.773"></a>
-<span class="sourceLineNo">774</span>  /**<a name="line.774"></a>
-<span class="sourceLineNo">775</span>   * Start up a minicluster of hbase, dfs, and zookeeper where WAL's walDir is created separately.<a name="line.775"></a>
-<span class="sourceLineNo">776</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.776"></a>
-<span class="sourceLineNo">777</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.777"></a>
-<span class="sourceLineNo">778</span>   * @return The mini HBase cluster created.<a name="line.778"></a>
-<span class="sourceLineNo">779</span>   * @see #shutdownMiniCluster()<a name="line.779"></a>
-<span class="sourceLineNo">780</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.780"></a>
-<span class="sourceLineNo">781</span>   */<a name="line.781"></a>
-<span class="sourceLineNo">782</span>  @Deprecated<a name="line.782"></a>
-<span class="sourceLineNo">783</span>  public MiniHBaseCluster startMiniCluster(boolean createWALDir) throws Exception {<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.784"></a>
-<span class="sourceLineNo">785</span>        .createWALDir(createWALDir).build();<a name="line.785"></a>
-<span class="sourceLineNo">786</span>    return startMiniCluster(option);<a name="line.786"></a>
-<span class="sourceLineNo">787</span>  }<a name="line.787"></a>
-<span class="sourceLineNo">788</span><a name="line.788"></a>
-<span class="sourceLineNo">789</span>  /**<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.791"></a>
-<span class="sourceLineNo">792</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.792"></a>
-<span class="sourceLineNo">793</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.793"></a>
-<span class="sourceLineNo">794</span>   * @return The mini HBase cluster created.<a name="line.794"></a>
-<span class="sourceLineNo">795</span>   * @see #shutdownMiniCluster()<a name="line.795"></a>
-<span class="sourceLineNo">796</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.796"></a>
-<span class="sourceLineNo">797</span>   */<a name="line.797"></a>
-<span class="sourceLineNo">798</span>  @Deprecated<a name="line.798"></a>
-<span class="sourceLineNo">799</span>  public MiniHBaseCluster startMiniCluster(int numSlaves, boolean createRootDir)<a name="line.799"></a>
-<span class="sourceLineNo">800</span>  throws Exception {<a name="line.800"></a>
-<span class="sourceLineNo">801</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.801"></a>
-<span class="sourceLineNo">802</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).createRootDir(createRootDir).build();<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    return startMiniCluster(option);<a name="line.803"></a>
-<span class="sourceLineNo">804</span>  }<a name="line.804"></a>
-<span class="sourceLineNo">805</span><a name="line.805"></a>
-<span class="sourceLineNo">806</span>  /**<a name="line.806"></a>
-<span class="sourceLineNo">807</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.807"></a>
-<span class="sourceLineNo">808</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.808"></a>
-<span class="sourceLineNo">809</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.809"></a>
-<span class="sourceLineNo">810</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.810"></a>
-<span class="sourceLineNo">811</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.811"></a>
-<span class="sourceLineNo">812</span>   * @return The mini HBase cluster created.<a name="line.812"></a>
-<span class="sourceLineNo">813</span>   * @see #shutdownMiniCluster()<a name="line.813"></a>
-<span class="sourceLineNo">814</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.814"></a>
-<span class="sourceLineNo">815</span>   */<a name="line.815"></a>
-<span class="sourceLineNo">816</span>  @Deprecated<a name="line.816"></a>
-<span class="sourceLineNo">817</span>  public MiniHBaseCluster startMiniCluster(int numSlaves, boolean createRootDir,<a name="line.817"></a>
-<span class="sourceLineNo">818</span>      boolean createWALDir) throws Exception {<a name="line.818"></a>
-<span class="sourceLineNo">819</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.819"></a>
-<span class="sourceLineNo">820</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).createRootDir(createRootDir)<a name="line.820"></a>
-<span class="sourceLineNo">821</span>        .createWALDir(createWALDir).build();<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    return startMiniCluster(option);<a name="line.822"></a>
-<span class="sourceLineNo">823</span>  }<a name="line.823"></a>
-<span class="sourceLineNo">824</span><a name="line.824"></a>
-<span class="sourceLineNo">825</span>  /**<a name="line.825"></a>
-<span class="sourceLineNo">826</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.826"></a>
-<span class="sourceLineNo">827</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.827"></a>
-<span class="sourceLineNo">828</span>   * @param numMasters Master node number.<a name="line.828"></a>
-<span class="sourceLineNo">829</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.829"></a>
-<span class="sourceLineNo">830</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.830"></a>
-<span class="sourceLineNo">831</span>   * @return The mini HBase cluster created.<a name="line.831"></a>
-<span class="sourceLineNo">832</span>   * @see #shutdownMiniCluster()<a name="line.832"></a>
-<span class="sourceLineNo">833</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.833"></a>
-<span class="sourceLineNo">834</span>   */<a name="line.834"></a>
-<span class="sourceLineNo">835</span>  @Deprecated<a name="line.835"></a>
-<span class="sourceLineNo">836</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, boolean createRootDir)<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    throws Exception {<a name="line.837"></a>
-<span class="sourceLineNo">838</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.838"></a>
-<span class="sourceLineNo">839</span>        .numMasters(numMasters).numRegionServers(numSlaves).createRootDir(createRootDir)<a name="line.839"></a>
-<span class="sourceLineNo">840</span>        .numDataNodes(numSlaves).build();<a name="line.840"></a>
-<span class="sourceLineNo">841</span>    return startMiniCluster(option);<a name="line.841"></a>
-<span class="sourceLineNo">842</span>  }<a name="line.842"></a>
-<span class="sourceLineNo">843</span><a name="line.843"></a>
-<span class="sourceLineNo">844</span>  /**<a name="line.844"></a>
-<span class="sourceLineNo">845</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.845"></a>
-<span class="sourceLineNo">846</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.846"></a>
-<span class="sourceLineNo">847</span>   * @param numMasters Master node number.<a name="line.847"></a>
-<span class="sourceLineNo">848</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.848"></a>
-<span class="sourceLineNo">849</span>   * @return The mini HBase cluster created.<a name="line.849"></a>
-<span class="sourceLineNo">850</span>   * @see #shutdownMiniCluster()<a name="line.850"></a>
-<span class="sourceLineNo">851</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.851"></a>
-<span class="sourceLineNo">852</span>   */<a name="line.852"></a>
-<span class="sourceLineNo">853</span>  @Deprecated<a name="line.853"></a>
-<span class="sourceLineNo">854</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves) throws Exception {<a name="line.854"></a>
-<span class="sourceLineNo">855</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.855"></a>
-<span class="sourceLineNo">856</span>        .numMasters(numMasters).numRegionServers(numSlaves).numDataNodes(numSlaves).build();<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    return startMiniCluster(option);<a name="line.857"></a>
-<span class="sourceLineNo">858</span>  }<a name="line.858"></a>
-<span class="sourceLineNo">859</span><a name="line.859"></a>
-<span class="sourceLineNo">860</span>  /**<a name="line.860"></a>
-<span class="sourceLineNo">861</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.861"></a>
-<span class="sourceLineNo">862</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.862"></a>
-<span class="sourceLineNo">863</span>   * @param numMasters Master node number.<a name="line.863"></a>
-<span class="sourceLineNo">864</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.864"></a>
-<span class="sourceLineNo">865</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.865"></a>
-<span class="sourceLineNo">866</span>   *                      HDFS data node number.<a name="line.866"></a>
-<span class="sourceLineNo">867</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.867"></a>
-<span class="sourceLineNo">868</span>   * @return The mini HBase cluster created.<a name="line.868"></a>
-<span class="sourceLineNo">869</span>   * @see #shutdownMiniCluster()<a name="line.869"></a>
-<span class="sourceLineNo">870</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.870"></a>
-<span class="sourceLineNo">871</span>   */<a name="line.871"></a>
-<span class="sourceLineNo">872</span>  @Deprecated<a name="line.872"></a>
-<span class="sourceLineNo">873</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts,<a name="line.873"></a>
-<span class="sourceLineNo">874</span>      boolean createRootDir) throws Exception {<a name="line.874"></a>
-<span class="sourceLineNo">875</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.875"></a>
-<span class="sourceLineNo">876</span>        .numMasters(numMasters).numRegionServers(numSlaves).createRootDir(createRootDir)<a name="line.876"></a>
-<span class="sourceLineNo">877</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts).build();<a name="line.877"></a>
-<span class="sourceLineNo">878</span>    return startMiniCluster(option);<a name="line.878"></a>
-<span class="sourceLineNo">879</span>  }<a name="line.879"></a>
-<span class="sourceLineNo">880</span><a name="line.880"></a>
-<span class="sourceLineNo">881</span>  /**<a name="line.881"></a>
-<span class="sourceLineNo">882</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.882"></a>
-<span class="sourceLineNo">883</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.883"></a>
-<span class="sourceLineNo">884</span>   * @param numMasters Master node number.<a name="line.884"></a>
-<span class="sourceLineNo">885</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.885"></a>
-<span class="sourceLineNo">886</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.886"></a>
-<span class="sourceLineNo">887</span>   *                      HDFS data node number.<a name="line.887"></a>
-<span class="sourceLineNo">888</span>   * @return The mini HBase cluster created.<a name="line.888"></a>
-<span class="sourceLineNo">889</span>   * @see #shutdownMiniCluster()<a name="line.889"></a>
-<span class="sourceLineNo">890</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.890"></a>
-<span class="sourceLineNo">891</span>   */<a name="line.891"></a>
-<span class="sourceLineNo">892</span>  @Deprecated<a name="line.892"></a>
-<span class="sourceLineNo">893</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts)<a name="line.893"></a>
-<span class="sourceLineNo">894</span>      throws Exception {<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.895"></a>
-<span class="sourceLineNo">896</span>        .numMasters(numMasters).numRegionServers(numSlaves)<a name="line.896"></a>
-<span class="sourceLineNo">897</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts).build();<a name="line.897"></a>
-<span class="sourceLineNo">898</span>    return startMiniCluster(option);<a name="line.898"></a>
-<span class="sourceLineNo">899</span>  }<a name="line.899"></a>
-<span class="sourceLineNo">900</span><a name="line.900"></a>
-<span class="sourceLineNo">901</span>  /**<a name="line.901"></a>
-<span class="sourceLineNo">902</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.902"></a>
-<span class="sourceLineNo">903</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.903"></a>
-<span class="sourceLineNo">904</span>   * @param numMasters Master node number.<a name="line.904"></a>
-<span class="sourceLineNo">905</span>   * @param numRegionServers Number of region servers.<a name="line.905"></a>
-<span class="sourceLineNo">906</span>   * @param numDataNodes Number of datanodes.<a name="line.906"></a>
-<span class="sourceLineNo">907</span>   * @return The mini HBase cluster created.<a name="line.907"></a>
-<span class="sourceLineNo">908</span>   * @see #shutdownMiniCluster()<a name="line.908"></a>
-<span class="sourceLineNo">909</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.909"></a>
-<span class="sourceLineNo">910</span>   */<a name="line.910"></a>
-<span class="sourceLineNo">911</span>  @Deprecated<a name="line.911"></a>
-<span class="sourceLineNo">912</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes)<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      throws Exception {<a name="line.913"></a>
-<span class="sourceLineNo">914</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.914"></a>
-<span class="sourceLineNo">915</span>        .numMasters(numMasters).numRegionServers(numRegionServers).numDataNodes(numDataNodes)<a name="line.915"></a>
-<span class="sourceLineNo">916</span>        .build();<a name="line.916"></a>
-<span class="sourceLineNo">917</span>    return startMiniCluster(option);<a name="line.917"></a>
-<span class="sourceLineNo">918</span>  }<a name="line.918"></a>
-<span class="sourceLineNo">919</span><a name="line.919"></a>
-<span class="sourceLineNo">920</span>  /**<a name="line.920"></a>
-<span class="sourceLineNo">921</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.921"></a>
-<span class="sourceLineNo">922</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.922"></a>
-<span class="sourceLineNo">923</span>   * @param numMasters Master node number.<a name="line.923"></a>
-<span class="sourceLineNo">924</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.924"></a>
-<span class="sourceLineNo">925</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.925"></a>
-<span class="sourceLineNo">926</span>   *                      HDFS data node number.<a name="line.926"></a>
-<span class="sourceLineNo">927</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.927"></a>
-<span class="sourceLineNo">928</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.928"></a>
-<span class="sourceLineNo">929</span>   * @return The mini HBase cluster created.<a name="line.929"></a>
-<span class="sourceLineNo">930</span>   * @see #shutdownMiniCluster()<a name="line.930"></a>
-<span class="sourceLineNo">931</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.931"></a>
-<span class="sourceLineNo">932</span>   */<a name="line.932"></a>
-<span class="sourceLineNo">933</span>  @Deprecated<a name="line.933"></a>
-<span class="sourceLineNo">934</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts,<a name="line.934"></a>
-<span class="sourceLineNo">935</span>      Class&lt;? extends HMaster&gt; masterClass,<a name="line.935"></a>
-<span class="sourceLineNo">936</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass)<a name="line.936"></a>
-<span class="sourceLineNo">937</span>      throws Exception {<a name="line.937"></a>
-<span class="sourceLineNo">938</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.938"></a>
-<span class="sourceLineNo">939</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.939"></a>
-<span class="sourceLineNo">940</span>        .numRegionServers(numSlaves).rsClass(rsClass)<a name="line.940"></a>
-<span class="sourceLineNo">941</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts)<a name="line.941"></a>
-<span class="sourceLineNo">942</span>        .build();<a name="line.942"></a>
-<span class="sourceLineNo">943</span>    return startMiniCluster(option);<a name="line.943"></a>
-<span class="sourceLineNo">944</span>  }<a name="line.944"></a>
-<span class="sourceLineNo">945</span><a name="line.945"></a>
-<span class="sourceLineNo">946</span>  /**<a name="line.946"></a>
-<span class="sourceLineNo">947</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.947"></a>
-<span class="sourceLineNo">948</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.948"></a>
-<span class="sourceLineNo">949</span>   * @param numMasters Master node number.<a name="line.949"></a>
-<span class="sourceLineNo">950</span>   * @param numRegionServers Number of region servers.<a name="line.950"></a>
-<span class="sourceLineNo">951</span>   * @param numDataNodes Number of datanodes.<a name="line.951"></a>
-<span class="sourceLineNo">952</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.952"></a>
-<span class="sourceLineNo">953</span>   *                      HDFS data node number.<a name="line.953"></a>
-<span class="sourceLineNo">954</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.954"></a>
-<span class="sourceLineNo">955</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.955"></a>
-<span class="sourceLineNo">956</span>   * @return The mini HBase cluster created.<a name="line.956"></a>
-<span class="sourceLineNo">957</span>   * @see #shutdownMiniCluster()<a name="line.957"></a>
-<span class="sourceLineNo">958</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.958"></a>
-<span class="sourceLineNo">959</span>   */<a name="line.959"></a>
-<span class="sourceLineNo">960</span>  @Deprecated<a name="line.960"></a>
-<span class="sourceLineNo">961</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes,<a name="line.961"></a>
-<span class="sourceLineNo">962</span>      String[] dataNodeHosts, Class&lt;? extends HMaster&gt; masterClass,<a name="line.962"></a>
-<span class="sourceLineNo">963</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass)<a name="line.963"></a>
-<span class="sourceLineNo">964</span>    throws Exception {<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.965"></a>
-<span class="sourceLineNo">966</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.966"></a>
-<span class="sourceLineNo">967</span>        .numRegionServers(numRegionServers).rsClass(rsClass)<a name="line.967"></a>
-<span class="sourceLineNo">968</span>        .numDataNodes(numDataNodes).dataNodeHosts(dataNodeHosts)<a name="line.968"></a>
-<span class="sourceLineNo">969</span>        .build();<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    return startMiniCluster(option);<a name="line.970"></a>
-<span class="sourceLineNo">971</span>  }<a name="line.971"></a>
-<span class="sourceLineNo">972</span><a name="line.972"></a>
-<span class="sourceLineNo">973</span>  /**<a name="line.973"></a>
-<span class="sourceLineNo">974</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.974"></a>
-<span class="sourceLineNo">975</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.975"></a>
-<span class="sourceLineNo">976</span>   * @param numMasters Master node number.<a name="line.976"></a>
-<span class="sourceLineNo">977</span>   * @param numRegionServers Number of region servers.<a name="line.977"></a>
-<span class="sourceLineNo">978</span>   * @param numDataNodes Number of datanodes.<a name="line.978"></a>
-<span class="sourceLineNo">979</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.979"></a>
-<span class="sourceLineNo">980</span>   *                      HDFS data node number.<a name="line.980"></a>
-<span class="sourceLineNo">981</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.981"></a>
-<span class="sourceLineNo">982</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.982"></a>
-<span class="sourceLineNo">983</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.983"></a>
-<span class="sourceLineNo">984</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.984"></a>
-<span class="sourceLineNo">985</span>   * @return The mini HBase cluster created.<a name="line.985"></a>
-<span class="sourceLineNo">986</span>   * @see #shutdownMiniCluster()<a name="line.986"></a>
-<span class="sourceLineNo">987</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.987"></a>
-<span class="sourceLineNo">988</span>   */<a name="line.988"></a>
-<span class="sourceLineNo">989</span>  @Deprecated<a name="line.989"></a>
-<span class="sourceLineNo">990</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes,<a name="line.990"></a>
-<span class="sourceLineNo">991</span>      String[] dataNodeHosts, Class&lt;? extends HMaster&gt; masterClass,<a name="line.991"></a>
-<span class="sourceLineNo">992</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass, boolean createRootDir,<a name="line.992"></a>
-<span class="sourceLineNo">993</span>      boolean createWALDir) throws Exception {<a name="line.993"></a>
-<span class="sourceLineNo">994</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.994"></a>
-<span class="sourceLineNo">995</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.995"></a>
-<span class="sourceLineNo">996</span>        .numRegionServers(numRegionServers).rsClass(rsClass)<a name="line.996"></a>
-<span class="sourceLineNo">997</span>        .numDataNodes(numDataNodes).dataNodeHosts(dataNodeHosts)<a name="line.997"></a>
-<span class="sourceLineNo">998</span>        .createRootDir(createRootDir).createWALDir(createWALDir)<a name="line.998"></a>
-<span class="sourceLineNo">999</span>        .build();<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>    return startMiniCluster(option);<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>  }<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span><a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>  /**<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>   * Start up a minicluster of hbase, dfs and zookeeper clusters with given slave node number.<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>   * @param numSlaves slave node number, for both HBase region server and HDFS data node.<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>   * @see #startMiniCluster(StartMiniClusterOption option)<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>   * @see #shutdownMiniDFSCluster()<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>   */<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>  public MiniHBaseCluster startMiniCluster(int numSlaves) throws Exception {<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).build();<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    return startMiniCluster(option);<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>  }<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span><a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>  /**<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>   * Start up a minicluster of hbase, dfs and zookeeper all using default options.<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>   * Option default value can be found in {@link StartMiniClusterOption.Builder}.<a name="line.1018"></a>
+<span class="sourceLineNo">716</span>  /**<a name="line.716"></a>
+<span class="sourceLineNo">717</span>   *  Check whether the tests should assume NEW_VERSION_BEHAVIOR when creating<a name="line.717"></a>
+<span class="sourceLineNo">718</span>   *  new column families. Default to false.<a name="line.718"></a>
+<span class="sourceLineNo">719</span>   */<a name="line.719"></a>
+<span class="sourceLineNo">720</span>  public boolean isNewVersionBehaviorEnabled(){<a name="line.720"></a>
+<span class="sourceLineNo">721</span>    final String propName = "hbase.tests.new.version.behavior";<a name="line.721"></a>
+<span class="sourceLineNo">722</span>    String v = System.getProperty(propName);<a name="line.722"></a>
+<span class="sourceLineNo">723</span>    if (v != null){<a name="line.723"></a>
+<span class="sourceLineNo">724</span>      return Boolean.parseBoolean(v);<a name="line.724"></a>
+<span class="sourceLineNo">725</span>    }<a name="line.725"></a>
+<span class="sourceLineNo">726</span>    return false;<a name="line.726"></a>
+<span class="sourceLineNo">727</span>  }<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>   *  Get the HBase setting for dfs.client.read.shortcircuit from the conf or a system property.<a name="line.730"></a>
+<span class="sourceLineNo">731</span>   *  This allows to specify this parameter on the command line.<a name="line.731"></a>
+<span class="sourceLineNo">732</span>   *   If not set, default is true.<a name="line.732"></a>
+<span class="sourceLineNo">733</span>   */<a name="line.733"></a>
+<span class="sourceLineNo">734</span>  public boolean isReadShortCircuitOn(){<a name="line.734"></a>
+<span class="sourceLineNo">735</span>    final String propName = "hbase.tests.use.shortcircuit.reads";<a name="line.735"></a>
+<span class="sourceLineNo">736</span>    String readOnProp = System.getProperty(propName);<a name="line.736"></a>
+<span class="sourceLineNo">737</span>    if (readOnProp != null){<a name="line.737"></a>
+<span class="sourceLineNo">738</span>      return  Boolean.parseBoolean(readOnProp);<a name="line.738"></a>
+<span class="sourceLineNo">739</span>    } else {<a name="line.739"></a>
+<span class="sourceLineNo">740</span>      return conf.getBoolean(propName, false);<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><a name="line.743"></a>
+<span class="sourceLineNo">744</span>  /** Enable the short circuit read, unless configured differently.<a name="line.744"></a>
+<span class="sourceLineNo">745</span>   * Set both HBase and HDFS settings, including skipping the hdfs checksum checks.<a name="line.745"></a>
+<span class="sourceLineNo">746</span>   */<a name="line.746"></a>
+<span class="sourceLineNo">747</span>  private void enableShortCircuit() {<a name="line.747"></a>
+<span class="sourceLineNo">748</span>    if (isReadShortCircuitOn()) {<a name="line.748"></a>
+<span class="sourceLineNo">749</span>      String curUser = System.getProperty("user.name");<a name="line.749"></a>
+<span class="sourceLineNo">750</span>      LOG.info("read short circuit is ON for user " + curUser);<a name="line.750"></a>
+<span class="sourceLineNo">751</span>      // read short circuit, for hdfs<a name="line.751"></a>
+<span class="sourceLineNo">752</span>      conf.set("dfs.block.local-path-access.user", curUser);<a name="line.752"></a>
+<span class="sourceLineNo">753</span>      // read short circuit, for hbase<a name="line.753"></a>
+<span class="sourceLineNo">754</span>      conf.setBoolean("dfs.client.read.shortcircuit", true);<a name="line.754"></a>
+<span class="sourceLineNo">755</span>      // Skip checking checksum, for the hdfs client and the datanode<a name="line.755"></a>
+<span class="sourceLineNo">756</span>      conf.setBoolean("dfs.client.read.shortcircuit.skip.checksum", true);<a name="line.756"></a>
+<span class="sourceLineNo">757</span>    } else {<a name="line.757"></a>
+<span class="sourceLineNo">758</span>      LOG.info("read short circuit is OFF");<a name="line.758"></a>
+<span class="sourceLineNo">759</span>    }<a name="line.759"></a>
+<span class="sourceLineNo">760</span>  }<a name="line.760"></a>
+<span class="sourceLineNo">761</span><a name="line.761"></a>
+<span class="sourceLineNo">762</span>  private String createDirAndSetProperty(final String relPath, String property) {<a name="line.762"></a>
+<span class="sourceLineNo">763</span>    String path = getDataTestDir(relPath).toString();<a name="line.763"></a>
+<span class="sourceLineNo">764</span>    System.setProperty(property, path);<a name="line.764"></a>
+<span class="sourceLineNo">765</span>    conf.set(property, path);<a name="line.765"></a>
+<span class="sourceLineNo">766</span>    new File(path).mkdirs();<a name="line.766"></a>
+<span class="sourceLineNo">767</span>    LOG.info("Setting " + property + " to " + path + " in system properties and HBase conf");<a name="line.767"></a>
+<span class="sourceLineNo">768</span>    return path;<a name="line.768"></a>
+<span class="sourceLineNo">769</span>  }<a name="line.769"></a>
+<span class="sourceLineNo">770</span><a name="line.770"></a>
+<span class="sourceLineNo">771</span>  /**<a name="line.771"></a>
+<span class="sourceLineNo">772</span>   * Shuts down instance created by call to {@link #startMiniDFSCluster(int)}<a name="line.772"></a>
+<span class="sourceLineNo">773</span>   * or does nothing.<a name="line.773"></a>
+<span class="sourceLineNo">774</span>   * @throws IOException<a name="line.774"></a>
+<span class="sourceLineNo">775</span>   */<a name="line.775"></a>
+<span class="sourceLineNo">776</span>  public void shutdownMiniDFSCluster() throws IOException {<a name="line.776"></a>
+<span class="sourceLineNo">777</span>    if (this.dfsCluster != null) {<a name="line.777"></a>
+<span class="sourceLineNo">778</span>      // The below throws an exception per dn, AsynchronousCloseException.<a name="line.778"></a>
+<span class="sourceLineNo">779</span>      this.dfsCluster.shutdown();<a name="line.779"></a>
+<span class="sourceLineNo">780</span>      dfsCluster = null;<a name="line.780"></a>
+<span class="sourceLineNo">781</span>      dataTestDirOnTestFS = null;<a name="line.781"></a>
+<span class="sourceLineNo">782</span>      FSUtils.setFsDefault(this.conf, new Path("file:///"));<a name="line.782"></a>
+<span class="sourceLineNo">783</span>    }<a name="line.783"></a>
+<span class="sourceLineNo">784</span>  }<a name="line.784"></a>
+<span class="sourceLineNo">785</span><a name="line.785"></a>
+<span class="sourceLineNo">786</span>  /**<a name="line.786"></a>
+<span class="sourceLineNo">787</span>   * Start up a minicluster of hbase, dfs, and zookeeper where WAL's walDir is created separately.<a name="line.787"></a>
+<span class="sourceLineNo">788</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.788"></a>
+<span class="sourceLineNo">789</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.789"></a>
+<span class="sourceLineNo">790</span>   * @return The mini HBase cluster created.<a name="line.790"></a>
+<span class="sourceLineNo">791</span>   * @see #shutdownMiniCluster()<a name="line.791"></a>
+<span class="sourceLineNo">792</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.792"></a>
+<span class="sourceLineNo">793</span>   */<a name="line.793"></a>
+<span class="sourceLineNo">794</span>  @Deprecated<a name="line.794"></a>
+<span class="sourceLineNo">795</span>  public MiniHBaseCluster startMiniCluster(boolean createWALDir) throws Exception {<a name="line.795"></a>
+<span class="sourceLineNo">796</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.796"></a>
+<span class="sourceLineNo">797</span>        .createWALDir(createWALDir).build();<a name="line.797"></a>
+<span class="sourceLineNo">798</span>    return startMiniCluster(option);<a name="line.798"></a>
+<span class="sourceLineNo">799</span>  }<a name="line.799"></a>
+<span class="sourceLineNo">800</span><a name="line.800"></a>
+<span class="sourceLineNo">801</span>  /**<a name="line.801"></a>
+<span class="sourceLineNo">802</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.802"></a>
+<span class="sourceLineNo">803</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.803"></a>
+<span class="sourceLineNo">804</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.804"></a>
+<span class="sourceLineNo">805</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.805"></a>
+<span class="sourceLineNo">806</span>   * @return The mini HBase cluster created.<a name="line.806"></a>
+<span class="sourceLineNo">807</span>   * @see #shutdownMiniCluster()<a name="line.807"></a>
+<span class="sourceLineNo">808</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.808"></a>
+<span class="sourceLineNo">809</span>   */<a name="line.809"></a>
+<span class="sourceLineNo">810</span>  @Deprecated<a name="line.810"></a>
+<span class="sourceLineNo">811</span>  public MiniHBaseCluster startMiniCluster(int numSlaves, boolean createRootDir)<a name="line.811"></a>
+<span class="sourceLineNo">812</span>  throws Exception {<a name="line.812"></a>
+<span class="sourceLineNo">813</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.813"></a>
+<span class="sourceLineNo">814</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).createRootDir(createRootDir).build();<a name="line.814"></a>
+<span class="sourceLineNo">815</span>    return startMiniCluster(option);<a name="line.815"></a>
+<span class="sourceLineNo">816</span>  }<a name="line.816"></a>
+<span class="sourceLineNo">817</span><a name="line.817"></a>
+<span class="sourceLineNo">818</span>  /**<a name="line.818"></a>
+<span class="sourceLineNo">819</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.819"></a>
+<span class="sourceLineNo">820</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.820"></a>
+<span class="sourceLineNo">821</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.821"></a>
+<span class="sourceLineNo">822</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.822"></a>
+<span class="sourceLineNo">823</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.823"></a>
+<span class="sourceLineNo">824</span>   * @return The mini HBase cluster created.<a name="line.824"></a>
+<span class="sourceLineNo">825</span>   * @see #shutdownMiniCluster()<a name="line.825"></a>
+<span class="sourceLineNo">826</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.826"></a>
+<span class="sourceLineNo">827</span>   */<a name="line.827"></a>
+<span class="sourceLineNo">828</span>  @Deprecated<a name="line.828"></a>
+<span class="sourceLineNo">829</span>  public MiniHBaseCluster startMiniCluster(int numSlaves, boolean createRootDir,<a name="line.829"></a>
+<span class="sourceLineNo">830</span>      boolean createWALDir) throws Exception {<a name="line.830"></a>
+<span class="sourceLineNo">831</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.831"></a>
+<span class="sourceLineNo">832</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).createRootDir(createRootDir)<a name="line.832"></a>
+<span class="sourceLineNo">833</span>        .createWALDir(createWALDir).build();<a name="line.833"></a>
+<span class="sourceLineNo">834</span>    return startMiniCluster(option);<a name="line.834"></a>
+<span class="sourceLineNo">835</span>  }<a name="line.835"></a>
+<span class="sourceLineNo">836</span><a name="line.836"></a>
+<span class="sourceLineNo">837</span>  /**<a name="line.837"></a>
+<span class="sourceLineNo">838</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.838"></a>
+<span class="sourceLineNo">839</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.839"></a>
+<span class="sourceLineNo">840</span>   * @param numMasters Master node number.<a name="line.840"></a>
+<span class="sourceLineNo">841</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.841"></a>
+<span class="sourceLineNo">842</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.842"></a>
+<span class="sourceLineNo">843</span>   * @return The mini HBase cluster created.<a name="line.843"></a>
+<span class="sourceLineNo">844</span>   * @see #shutdownMiniCluster()<a name="line.844"></a>
+<span class="sourceLineNo">845</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.845"></a>
+<span class="sourceLineNo">846</span>   */<a name="line.846"></a>
+<span class="sourceLineNo">847</span>  @Deprecated<a name="line.847"></a>
+<span class="sourceLineNo">848</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, boolean createRootDir)<a name="line.848"></a>
+<span class="sourceLineNo">849</span>    throws Exception {<a name="line.849"></a>
+<span class="sourceLineNo">850</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.850"></a>
+<span class="sourceLineNo">851</span>        .numMasters(numMasters).numRegionServers(numSlaves).createRootDir(createRootDir)<a name="line.851"></a>
+<span class="sourceLineNo">852</span>        .numDataNodes(numSlaves).build();<a name="line.852"></a>
+<span class="sourceLineNo">853</span>    return startMiniCluster(option);<a name="line.853"></a>
+<span class="sourceLineNo">854</span>  }<a name="line.854"></a>
+<span class="sourceLineNo">855</span><a name="line.855"></a>
+<span class="sourceLineNo">856</span>  /**<a name="line.856"></a>
+<span class="sourceLineNo">857</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.857"></a>
+<span class="sourceLineNo">858</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.858"></a>
+<span class="sourceLineNo">859</span>   * @param numMasters Master node number.<a name="line.859"></a>
+<span class="sourceLineNo">860</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.860"></a>
+<span class="sourceLineNo">861</span>   * @return The mini HBase cluster created.<a name="line.861"></a>
+<span class="sourceLineNo">862</span>   * @see #shutdownMiniCluster()<a name="line.862"></a>
+<span class="sourceLineNo">863</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.863"></a>
+<span class="sourceLineNo">864</span>   */<a name="line.864"></a>
+<span class="sourceLineNo">865</span>  @Deprecated<a name="line.865"></a>
+<span class="sourceLineNo">866</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves) throws Exception {<a name="line.866"></a>
+<span class="sourceLineNo">867</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.867"></a>
+<span class="sourceLineNo">868</span>        .numMasters(numMasters).numRegionServers(numSlaves).numDataNodes(numSlaves).build();<a name="line.868"></a>
+<span class="sourceLineNo">869</span>    return startMiniCluster(option);<a name="line.869"></a>
+<span class="sourceLineNo">870</span>  }<a name="line.870"></a>
+<span class="sourceLineNo">871</span><a name="line.871"></a>
+<span class="sourceLineNo">872</span>  /**<a name="line.872"></a>
+<span class="sourceLineNo">873</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.873"></a>
+<span class="sourceLineNo">874</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.874"></a>
+<span class="sourceLineNo">875</span>   * @param numMasters Master node number.<a name="line.875"></a>
+<span class="sourceLineNo">876</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.876"></a>
+<span class="sourceLineNo">877</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.877"></a>
+<span class="sourceLineNo">878</span>   *                      HDFS data node number.<a name="line.878"></a>
+<span class="sourceLineNo">879</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.879"></a>
+<span class="sourceLineNo">880</span>   * @return The mini HBase cluster created.<a name="line.880"></a>
+<span class="sourceLineNo">881</span>   * @see #shutdownMiniCluster()<a name="line.881"></a>
+<span class="sourceLineNo">882</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.882"></a>
+<span class="sourceLineNo">883</span>   */<a name="line.883"></a>
+<span class="sourceLineNo">884</span>  @Deprecated<a name="line.884"></a>
+<span class="sourceLineNo">885</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts,<a name="line.885"></a>
+<span class="sourceLineNo">886</span>      boolean createRootDir) throws Exception {<a name="line.886"></a>
+<span class="sourceLineNo">887</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.887"></a>
+<span class="sourceLineNo">888</span>        .numMasters(numMasters).numRegionServers(numSlaves).createRootDir(createRootDir)<a name="line.888"></a>
+<span class="sourceLineNo">889</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts).build();<a name="line.889"></a>
+<span class="sourceLineNo">890</span>    return startMiniCluster(option);<a name="line.890"></a>
+<span class="sourceLineNo">891</span>  }<a name="line.891"></a>
+<span class="sourceLineNo">892</span><a name="line.892"></a>
+<span class="sourceLineNo">893</span>  /**<a name="line.893"></a>
+<span class="sourceLineNo">894</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.894"></a>
+<span class="sourceLineNo">895</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.895"></a>
+<span class="sourceLineNo">896</span>   * @param numMasters Master node number.<a name="line.896"></a>
+<span class="sourceLineNo">897</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.897"></a>
+<span class="sourceLineNo">898</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.898"></a>
+<span class="sourceLineNo">899</span>   *                      HDFS data node number.<a name="line.899"></a>
+<span class="sourceLineNo">900</span>   * @return The mini HBase cluster created.<a name="line.900"></a>
+<span class="sourceLineNo">901</span>   * @see #shutdownMiniCluster()<a name="line.901"></a>
+<span class="sourceLineNo">902</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.902"></a>
+<span class="sourceLineNo">903</span>   */<a name="line.903"></a>
+<span class="sourceLineNo">904</span>  @Deprecated<a name="line.904"></a>
+<span class="sourceLineNo">905</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts)<a name="line.905"></a>
+<span class="sourceLineNo">906</span>      throws Exception {<a name="line.906"></a>
+<span class="sourceLineNo">907</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.907"></a>
+<span class="sourceLineNo">908</span>        .numMasters(numMasters).numRegionServers(numSlaves)<a name="line.908"></a>
+<span class="sourceLineNo">909</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts).build();<a name="line.909"></a>
+<span class="sourceLineNo">910</span>    return startMiniCluster(option);<a name="line.910"></a>
+<span class="sourceLineNo">911</span>  }<a name="line.911"></a>
+<span class="sourceLineNo">912</span><a name="line.912"></a>
+<span class="sourceLineNo">913</span>  /**<a name="line.913"></a>
+<span class="sourceLineNo">914</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.914"></a>
+<span class="sourceLineNo">915</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.915"></a>
+<span class="sourceLineNo">916</span>   * @param numMasters Master node number.<a name="line.916"></a>
+<span class="sourceLineNo">917</span>   * @param numRegionServers Number of region servers.<a name="line.917"></a>
+<span class="sourceLineNo">918</span>   * @param numDataNodes Number of datanodes.<a name="line.918"></a>
+<span class="sourceLineNo">919</span>   * @return The mini HBase cluster created.<a name="line.919"></a>
+<span class="sourceLineNo">920</span>   * @see #shutdownMiniCluster()<a name="line.920"></a>
+<span class="sourceLineNo">921</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.921"></a>
+<span class="sourceLineNo">922</span>   */<a name="line.922"></a>
+<span class="sourceLineNo">923</span>  @Deprecated<a name="line.923"></a>
+<span class="sourceLineNo">924</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes)<a name="line.924"></a>
+<span class="sourceLineNo">925</span>      throws Exception {<a name="line.925"></a>
+<span class="sourceLineNo">926</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.926"></a>
+<span class="sourceLineNo">927</span>        .numMasters(numMasters).numRegionServers(numRegionServers).numDataNodes(numDataNodes)<a name="line.927"></a>
+<span class="sourceLineNo">928</span>        .build();<a name="line.928"></a>
+<span class="sourceLineNo">929</span>    return startMiniCluster(option);<a name="line.929"></a>
+<span class="sourceLineNo">930</span>  }<a name="line.930"></a>
+<span class="sourceLineNo">931</span><a name="line.931"></a>
+<span class="sourceLineNo">932</span>  /**<a name="line.932"></a>
+<span class="sourceLineNo">933</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.933"></a>
+<span class="sourceLineNo">934</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.934"></a>
+<span class="sourceLineNo">935</span>   * @param numMasters Master node number.<a name="line.935"></a>
+<span class="sourceLineNo">936</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.936"></a>
+<span class="sourceLineNo">937</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.937"></a>
+<span class="sourceLineNo">938</span>   *                      HDFS data node number.<a name="line.938"></a>
+<span class="sourceLineNo">939</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.939"></a>
+<span class="sourceLineNo">940</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.940"></a>
+<span class="sourceLineNo">941</span>   * @return The mini HBase cluster created.<a name="line.941"></a>
+<span class="sourceLineNo">942</span>   * @see #shutdownMiniCluster()<a name="line.942"></a>
+<span class="sourceLineNo">943</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.943"></a>
+<span class="sourceLineNo">944</span>   */<a name="line.944"></a>
+<span class="sourceLineNo">945</span>  @Deprecated<a name="line.945"></a>
+<span class="sourceLineNo">946</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts,<a name="line.946"></a>
+<span class="sourceLineNo">947</span>      Class&lt;? extends HMaster&gt; masterClass,<a name="line.947"></a>
+<span class="sourceLineNo">948</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass)<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      throws Exception {<a name="line.949"></a>
+<span class="sourceLineNo">950</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.951"></a>
+<span class="sourceLineNo">952</span>        .numRegionServers(numSlaves).rsClass(rsClass)<a name="line.952"></a>
+<span class="sourceLineNo">953</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts)<a name="line.953"></a>
+<span class="sourceLineNo">954</span>        .build();<a name="line.954"></a>
+<span class="sourceLineNo">955</span>    return startMiniCluster(option);<a name="line.955"></a>
+<span class="sourceLineNo">956</span>  }<a name="line.956"></a>
+<span class="sourceLineNo">957</span><a name="line.957"></a>
+<span class="sourceLineNo">958</span>  /**<a name="line.958"></a>
+<span class="sourceLineNo">959</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.959"></a>
+<span class="sourceLineNo">960</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.960"></a>
+<span class="sourceLineNo">961</span>   * @param numMasters Master node number.<a name="line.961"></a>
+<span class="sourceLineNo">962</span>   * @param numRegionServers Number of region servers.<a name="line.962"></a>
+<span class="sourceLineNo">963</span>   * @param numDataNodes Number of datanodes.<a name="line.963"></a>
+<span class="sourceLineNo">964</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.964"></a>
+<span class="sourceLineNo">965</span>   *                      HDFS data node number.<a name="line.965"></a>
+<span class="sourceLineNo">966</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.966"></a>
+<span class="sourceLineNo">967</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.967"></a>
+<span class="sourceLineNo">968</span>   * @return The mini HBase cluster created.<a name="line.968"></a>
+<span class="sourceLineNo">969</span>   * @see #shutdownMiniCluster()<a name="line.969"></a>
+<span class="sourceLineNo">970</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.970"></a>
+<span class="sourceLineNo">971</span>   */<a name="line.971"></a>
+<span class="sourceLineNo">972</span>  @Deprecated<a name="line.972"></a>
+<span class="sourceLineNo">973</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes,<a name="line.973"></a>
+<span class="sourceLineNo">974</span>      String[] dataNodeHosts, Class&lt;? extends HMaster&gt; masterClass,<a name="line.974"></a>
+<span class="sourceLineNo">975</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass)<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    throws Exception {<a name="line.976"></a>
+<span class="sourceLineNo">977</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.977"></a>
+<span class="sourceLineNo">978</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.978"></a>
+<span class="sourceLineNo">979</span>        .numRegionServers(numRegionServers).rsClass(rsClass)<a name="line.979"></a>
+<span class="sourceLineNo">980</span>        .numDataNodes(numDataNodes).dataNodeHosts(dataNodeHosts)<a name="line.980"></a>
+<span class="sourceLineNo">981</span>        .build();<a name="line.981"></a>
+<span class="sourceLineNo">982</span>    return startMiniCluster(option);<a name="line.982"></a>
+<span class="sourceLineNo">983</span>  }<a name="line.983"></a>
+<span class="sourceLineNo">984</span><a name="line.984"></a>
+<span class="sourceLineNo">985</span>  /**<a name="line.985"></a>
+<span class="sourceLineNo">986</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.986"></a>
+<span class="sourceLineNo">987</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.987"></a>
+<span class="sourceLineNo">988</span>   * @param numMasters Master node number.<a name="line.988"></a>
+<span class="sourceLineNo">989</span>   * @param numRegionServers Number of region servers.<a name="line.989"></a>
+<span class="sourceLineNo">990</span>   * @param numDataNodes Number of datanodes.<a name="line.990"></a>
+<span class="sourceLineNo">991</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.991"></a>
+<span class="sourceLineNo">992</span>   *                      HDFS data node number.<a name="line.992"></a>
+<span class="sourceLineNo">993</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.993"></a>
+<span class="sourceLineNo">994</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.994"></a>
+<span class="sourceLineNo">995</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.995"></a>
+<span class="sourceLineNo">996</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.996"></a>
+<span class="sourceLineNo">997</span>   * @return The mini HBase cluster created.<a name="line.997"></a>
+<span class="sourceLineNo">998</span>   * @see #shutdownMiniCluster()<a name="line.998"></a>
+<span class="sourceLineNo">999</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.999"></a>
+<span class="sourceLineNo">1000</span>   */<a name="line.1000"></a>
+<span class="sourceLineNo">1001</span>  @Deprecated<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes,<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span>      String[] dataNodeHosts, Class&lt;? extends HMaster&gt; masterClass,<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass, boolean createRootDir,<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>      boolean createWALDir) throws Exception {<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>        .numRegionServers(numRegionServers).rsClass(rsClass)<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>        .numDataNodes(numDataNodes).dataNodeHosts(dataNodeHosts)<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>        .createRootDir(createRootDir).createWALDir(createWALDir)<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>        .build();<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>    return startMiniCluster(option);<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span>  }<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span><a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>  /**<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>   * Start up a minicluster of hbase, dfs and zookeeper clusters with given slave node number.<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>   * @param numSlaves slave node number, for both HBase region server and HDFS data node.<a name="line.1018"></a>
 <span class="sourceLineNo">1019</span>   * @see #startMiniCluster(StartMiniClusterOption option)<a name="line.1019"></a>
 <span class="sourceLineNo">1020</span>   * @see #shutdownMiniDFSCluster()<a name="line.1020"></a>
 <span class="sourceLineNo">1021</span>   */<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>  public MiniHBaseCluster startMiniCluster() throws Exception {<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>    return startMiniCluster(StartMiniClusterOption.builder().build());<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>  }<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>   * Start up a mini cluster of hbase, optionally dfs and zookeeper if needed.<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>   * It modifies Configuration.  It homes the cluster data directory under a random<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>   * subdirectory in a directory under System property test.build.data, to be cleaned up on exit.<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>   * @see #shutdownMiniDFSCluster()<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>   */<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>  public MiniHBaseCluster startMiniCluster(StartMiniClusterOption option) throws Exception {<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>    LOG.info("Starting up minicluster with option: {}", option);<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span><a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>    // If we already put up a cluster, fail.<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>    if (miniClusterRunning) {<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>      throw new IllegalStateException("A mini-cluster is already running");<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>    }<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>    miniClusterRunning = true;<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span><a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>    setupClusterTestDir();<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>    System.setProperty(TEST_DIRECTORY_KEY, this.clusterTestDir.getPath());<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span><a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>    // Bring up mini dfs cluster. This spews a bunch of warnings about missing<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>    // scheme. Complaints are 'Scheme is undefined for build/test/data/dfs/name1'.<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>    if (dfsCluster == null) {<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>      LOG.info("STARTING DFS");<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>      dfsCluster = startMiniDFSCluster(option.getNumDataNodes(), option.getDataNodeHosts());<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>    } else {<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>      LOG.info("NOT STARTING DFS");<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>    }<a name="line.1051"></a>
+<span class="sourceLineNo">1022</span>  public MiniHBaseCluster startMiniCluster(int numSlaves) throws Exception {<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).build();<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>    return startMiniCluster(option);<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>  }<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span><a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>  /**<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>   * Start up a minicluster of hbase, dfs and zookeeper all using default options.<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>   * Option default value can be found in {@link StartMiniClusterOption.Builder}.<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span>   * @see #startMiniCluster(StartMiniClusterOption option)<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>   * @see #shutdownMiniDFSCluster()<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>   */<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>  public MiniHBaseCluster startMiniCluster() throws Exception {<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>    return startMiniCluster(StartMiniClusterOption.builder().build());<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>  }<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span><a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>  /**<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>   * Start up a mini cluster of hbase, optionally dfs and zookeeper if needed.<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>   * It modifies Configuration.  It homes the cluster data directory under a random<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>   * subdirectory in a directory under System property test.build.data, to be cleaned up on exit.<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>   * @see #shutdownMiniDFSCluster()<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>   */<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>  public MiniHBaseCluster startMiniCluster(StartMiniClusterOption option) throws Exception {<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>    LOG.info("Starting up minicluster with option: {}", option);<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span><a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>    // If we already put up a cluster, fail.<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>    if (miniClusterRunning) {<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>      throw new IllegalStateException("A mini-cluster is already running");<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>    }<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>    miniClusterRunning = true;<a name="line.1051"></a>
 <span class="sourceLineNo">1052</span><a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>    // Start up a zk cluster.<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>    if (getZkCluster() == null) {<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>      startMiniZKCluster(option.getNumZkServers());<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>    }<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span><a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>    // Start the MiniHBaseCluster<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>    return startMiniHBaseCluster(option);<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>  }<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span><a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>  /**<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>   * Starts up mini hbase cluster.<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>   * Usually you won't want this.  You'll usually want {@link #startMiniCluster()}.<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>   * This is useful when doing stepped startup of clusters.<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>   * @return Reference to the hbase mini hbase cluster.<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>   * @see #startMiniCluster(StartMiniClusterOption)<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>   * @see #shutdownMiniHBaseCluster()<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>   */<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>  public MiniHBaseCluster startMiniHBaseCluster(StartMiniClusterOption option)<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>      throws IOException, InterruptedException {<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>    // Now do the mini hbase cluster.  Set the hbase.rootdir in config.<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>    createRootDir(option.isCreateRootDir());<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>    if (option.isCreateWALDir()) {<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>      createWALRootDir();<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span>    }<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>    // Set the hbase.fs.tmp.dir config to make sure that we have some default value. This is<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>    // for tests that do not read hbase-defaults.xml<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>    setHBaseFsTmpDir();<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span><a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>    // These settings will make the server waits until this exact number of<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>    // regions servers are connected.<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>    if (conf.getInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, -1) == -1) {<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>      conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, option.getNumRegionServers());<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>    }<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>    if (conf.getInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, -1) == -1) {<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>      conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, option.getNumRegionServers());<a name="line.1087"></a>
+<span class="sourceLineNo">1053</span>    setupClusterTestDir();<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>    System.setProperty(TEST_DIRECTORY_KEY, this.clusterTestDir.getPath());<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span><a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>    // Bring up mini dfs cluster. This spews a bunch of warnings about missing<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>    // scheme. Complaints are 'Scheme is undefined for build/test/data/dfs/name1'.<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>    if (dfsCluster == null) {<a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>      LOG.info("STARTING DFS");<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>      dfsCluster = startMiniDFSCluster(option.getNumDataNodes(), option.getDataNodeHosts());<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>    } else {<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>      LOG.info("NOT STARTING DFS");<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>    }<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span><a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>    // Start up a zk cluster.<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>    if (getZkCluster() == null) {<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>      startMiniZKCluster(option.getNumZkServers());<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>    }<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span><a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>    // Start the MiniHBaseCluster<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>    return startMiniHBaseCluster(option);<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>  }<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span><a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>  /**<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>   * Starts up mini hbase cluster.<a name="line.1075"></a>
+<span class="sourceLineNo">1076</span>   * Usually you won't want this.  You'll usually want {@link #startMiniCluster()}.<a name="line.1076"></a>
+<span class="sourceLineNo">1077</span>   * This is useful when doing stepped startup of clusters.<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>   * @return Reference to the hbase mini hbase cluster.<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>   * @see #startMiniCluster(StartMiniClusterOption)<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span>   * @see #shutdownMiniHBaseCluster()<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>   */<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>  public MiniHBaseCluster startMiniHBaseCluster(StartMiniClusterOption option)<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>      throws IOException, InterruptedException {<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>    // Now do the mini hbase cluster.  Set the hbase.rootdir in config.<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>    createRootDir(option.isCreateRootDir());<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>    if (option.isCreateWALDir()) {<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>      createWALRootDir();<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>    Configuration c = new Configuration(this.conf);<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>    TraceUtil.initTracer(c);<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span>    this.hbaseCluster =<a name="line.1092"></a>
-<span class="sourceLineNo">1093</span>        new MiniHBaseCluster(c, option.getNumMasters(), option.getNumRegionServers(),<a name="line.1093"></a>
-<span class="sourceLineNo">1094</span>            option.getRsPorts(), option.getMasterClass(), option.getRsClass());<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>    // Don't leave here till we've done a successful scan of the hbase:meta<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>    Table t = getConnection().getTable(TableName.META_TABLE_NAME);<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    ResultScanner s = t.getScanner(new Scan());<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>    while (s.next() != null) {<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>      continue;<a name="line.1099"></a>
+<span class="sourceLineNo">1089</span>    // Set the hbase.fs.tmp.dir config to make sure that we have some default value. This is<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>    // for tests that do not read hbase-defaults.xml<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>    setHBaseFsTmpDir();<a name="line.1091"></a>
+<span class="sourceLineNo">1092</span><a name="line.1092"></a>
+<span class="sourceLineNo">1093</span>    // These settings will make the server waits until this exact number of<a name="line.1093"></a>
+<span class="sourceLineNo">1094</span>    // regions servers are connected.<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>    if (conf.getInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, -1) == -1) {<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>      conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, option.getNumRegionServers());<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>    }<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span>    if (conf.getInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, -1) == -1) {<a name="line.1098"></a>
+<span class="sourceLineNo">1099</span>      conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, option.getNumRegionServers());<a name="line.1099"></a>
 <span class="sourceLineNo">1100</span>    }<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>    s.close();<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>    t.close();<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span><a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>    getAdmin(); // create immediately the hbaseAdmin<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>    LOG.info("Minicluster is up; activeMaster={}", getHBaseCluster().getMaster());<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span><a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>    return (MiniHBaseCluster) hbaseCluster;<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>   * Starts up mini hbase cluster using default options.<a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>   * Default options can be found in {@link StartMiniClusterOption.Builder}.<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>   * @see #startMiniHBaseCluster(StartMiniClusterOption)<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>   * @see #shutdownMiniHBaseCluster()<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>   */<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>  public MiniHBaseCluster startMiniHBaseCluster() throws IOException, InterruptedException {<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>    return startMiniHBaseCluster(StartMiniClusterOption.builder().build());<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>  }<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span><a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>  /**<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span>   * Starts up mini hbase cluster.<a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>   * Usually you won't want this.  You'll usually want {@link #startMiniCluster()}.<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>   * @param numMasters Master node number.<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>   * @param numRegionServers Number of region servers.<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>   * @return The mini HBase cluster created.<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>   * @see #shutdownMiniHBaseCluster()<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>   * @deprecated Use {@link #startMiniHBaseCluster(StartMiniClusterOption)} instead.<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span>   */<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>  @Deprecated<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>  public MiniHBaseCluster startMiniHBaseCluster(int numMasters, int numRegionServers)<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>      throws IOException, InterruptedException {<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>        .numMasters(numMasters).numRegionServers(numRegionServers).build();<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>    return startMiniHBaseCluster(option);<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>  }<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span><a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>  /**<a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>   * Starts up mini hbase cluster.<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>   * Usually you won't want this.  You'll usually want {@link #startMiniCluster()}.<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>   * @param numMasters Master node number.<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>   * @param numRegionServers Number of region servers.<a name="line.1143"></a>
-<span class="sourceLineNo">1144</span>   * @param rsPorts Ports that RegionServer should use.<a name="line.1144"></a>
-<span class="sourceLineNo">1145</span>   * @return The mini HBase cluster created.<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>   * @see #shutdownMiniHBaseCluster()<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>   * @deprecated Use {@link #startMiniHBaseCluster(StartMiniClusterOption)} instead.<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>   */<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span>  @Deprecated<a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>  public MiniHBaseCluster startMiniHBaseCluster(int numMasters, int numRegionServers,<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>      List&lt;Integer&gt; rsPorts) throws IOException, InterruptedException {<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span>        .numMasters(numMasters).numRegionServers(numRegionServers).rsPorts(rsPorts).build();<a name="line.1153"></a>
-<span class="sourceLineNo">1154</span>    return startMiniHBaseCluster(option);<a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>  }<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span><a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>  /**<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>   * Starts up mini hbase cluster.<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>   * Usually you won't want this.  You'll usually want {@link #startMiniCluster()}.<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>   * All other options will use default values,

<TRUNCATED>

[18/29] hbase-site git commit: Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html b/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html
index d8921a9..4fc045a 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":10,"i2":10,"i3":10,"i4":9,"i5":9,"i6":10,"i7":10,"i8":10,"i9":10,"i10":9,"i11":9,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":9,"i18":10,"i19":10,"i20":9,"i21":10,"i22":10,"i23":42,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":41,"i30":41,"i31":10,"i32":10,"i33":10,"i34":42,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":9,"i41":9,"i42":9,"i43":9,"i44":9,"i45":9,"i46":9,"i47":10,"i48":9,"i49":9,"i50":9,"i51":9,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":10,"i70":10,"i71":10,"i72":10,"i73":10,"i74":42,"i75":42,"i76":10,"i77":10,"i78":10,"i79":10,"i80":10,"i81":10,"i82":9,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":10,"i91":10,"i92":10,"i93":10,"i94":10,"i95":10,"i96":10,"i97":10,"i98":10,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":9,"i105":9,"i106":10,"i107":9,"i108":10,"i109":10,"i110":10,"i11
 1":10,"i112":10,"i113":10,"i114":10,"i115":10,"i116":10,"i117":10,"i118":9,"i119":9,"i120":9,"i121":42,"i122":10,"i123":10,"i124":10,"i125":9,"i126":42,"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":9,"i140":10,"i141":10,"i142":10,"i143":10,"i144":10,"i145":10,"i146":10,"i147":10,"i148":10,"i149":10,"i150":10,"i151":10,"i152":10,"i153":10,"i154":9,"i155":9,"i156":9,"i157":10,"i158":10,"i159":10,"i160":10,"i161":10,"i162":9,"i163":9,"i164":10,"i165":10,"i166":9,"i167":10,"i168":10,"i169":10,"i170":10,"i171":10,"i172":10,"i173":9,"i174":9,"i175":10,"i176":10,"i177":10,"i178":10,"i179":10,"i180":10,"i181":10,"i182":10,"i183":42,"i184":10,"i185":42,"i186":42,"i187":42,"i188":42,"i189":42,"i190":42,"i191":42,"i192":42,"i193":42,"i194":42,"i195":10,"i196":10,"i197":10,"i198":10,"i199":10,"i200":10,"i201":10,"i202":42,"i203":42,"i204":42,"i205":10,"i206":10,"i207":10,"i208":10,"i209":10,"i210":10,"i211":10,"i21
 2":10,"i213":10,"i214":10,"i215":10,"i216":10,"i217":10,"i218":10,"i219":10,"i220":9,"i221":10,"i222":10,"i223":10,"i224":10,"i225":10,"i226":10,"i227":10,"i228":10,"i229":10,"i230":10,"i231":10,"i232":10,"i233":10,"i234":10,"i235":10};
+var methods = {"i0":9,"i1":10,"i2":10,"i3":10,"i4":9,"i5":9,"i6":10,"i7":10,"i8":10,"i9":10,"i10":9,"i11":9,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":9,"i18":10,"i19":10,"i20":9,"i21":10,"i22":10,"i23":42,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":41,"i30":41,"i31":10,"i32":10,"i33":10,"i34":42,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":9,"i41":9,"i42":9,"i43":9,"i44":9,"i45":9,"i46":9,"i47":10,"i48":9,"i49":9,"i50":9,"i51":9,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":10,"i70":10,"i71":10,"i72":10,"i73":10,"i74":42,"i75":42,"i76":10,"i77":10,"i78":10,"i79":10,"i80":10,"i81":10,"i82":9,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":10,"i91":10,"i92":10,"i93":10,"i94":10,"i95":10,"i96":10,"i97":10,"i98":10,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":9,"i105":9,"i106":10,"i107":9,"i108":10,"i109":10,"i110":10,"i11
 1":10,"i112":10,"i113":10,"i114":10,"i115":10,"i116":10,"i117":10,"i118":9,"i119":9,"i120":9,"i121":42,"i122":10,"i123":10,"i124":10,"i125":9,"i126":42,"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":9,"i140":10,"i141":10,"i142":10,"i143":10,"i144":10,"i145":10,"i146":10,"i147":10,"i148":10,"i149":10,"i150":10,"i151":10,"i152":10,"i153":10,"i154":10,"i155":9,"i156":9,"i157":9,"i158":10,"i159":10,"i160":10,"i161":10,"i162":10,"i163":9,"i164":9,"i165":10,"i166":10,"i167":9,"i168":10,"i169":10,"i170":10,"i171":10,"i172":10,"i173":10,"i174":9,"i175":9,"i176":10,"i177":10,"i178":10,"i179":10,"i180":10,"i181":10,"i182":10,"i183":10,"i184":42,"i185":10,"i186":42,"i187":42,"i188":42,"i189":42,"i190":42,"i191":42,"i192":42,"i193":42,"i194":42,"i195":42,"i196":10,"i197":10,"i198":10,"i199":10,"i200":10,"i201":10,"i202":10,"i203":42,"i204":42,"i205":42,"i206":10,"i207":10,"i208":10,"i209":10,"i210":10,"i211":10,"i21
 2":10,"i213":10,"i214":10,"i215":10,"i216":10,"i217":10,"i218":10,"i219":10,"i220":10,"i221":9,"i222":10,"i223":10,"i224":10,"i225":10,"i226":10,"i227":10,"i228":10,"i229":10,"i230":10,"i231":10,"i232":10,"i233":10,"i234":10,"i235":10,"i236":10};
 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";
@@ -1367,41 +1367,48 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </tr>
 <tr id="i141" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#isNewVersionBehaviorEnabled--">isNewVersionBehaviorEnabled</a></span>()</code>
+<div class="block">Check whether the tests should assume NEW_VERSION_BEHAVIOR when creating
+  new column families.</div>
+</td>
+</tr>
+<tr id="i142" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#isReadShortCircuitOn--">isReadShortCircuitOn</a></span>()</code>
 <div class="block">Get the HBase setting for dfs.client.read.shortcircuit from the conf or a system property.</div>
 </td>
 </tr>
-<tr id="i142" class="altColor">
+<tr id="i143" class="rowColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#isTargetTable-byte:A-org.apache.hadoop.hbase.Cell-">isTargetTable</a></span>(byte[]&nbsp;inRow,
              org.apache.hadoop.hbase.Cell&nbsp;c)</code>&nbsp;</td>
 </tr>
-<tr id="i143" class="rowColor">
+<tr id="i144" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#killMiniHBaseCluster--">killMiniHBaseCluster</a></span>()</code>
 <div class="block">Abruptly Shutdown HBase mini cluster.</div>
 </td>
 </tr>
-<tr id="i144" class="altColor">
+<tr id="i145" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadNumericRows-org.apache.hadoop.hbase.client.Table-byte:A-int-int-">loadNumericRows</a></span>(org.apache.hadoop.hbase.client.Table&nbsp;t,
                byte[]&nbsp;f,
                int&nbsp;startRow,
                int&nbsp;endRow)</code>&nbsp;</td>
 </tr>
-<tr id="i145" class="rowColor">
+<tr id="i146" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRandomRows-org.apache.hadoop.hbase.client.Table-byte:A-int-int-">loadRandomRows</a></span>(org.apache.hadoop.hbase.client.Table&nbsp;t,
               byte[]&nbsp;f,
               int&nbsp;rowSize,
               int&nbsp;totalRows)</code>&nbsp;</td>
 </tr>
-<tr id="i146" class="altColor">
+<tr id="i147" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-">loadRegion</a></span>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r,
           byte[]&nbsp;f)</code>&nbsp;</td>
 </tr>
-<tr id="i147" class="rowColor">
+<tr id="i148" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-boolean-">loadRegion</a></span>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;r,
           byte[]&nbsp;f,
@@ -1409,26 +1416,26 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Load region with rows from 'aaa' to 'zzz'.</div>
 </td>
 </tr>
-<tr id="i148" class="altColor">
+<tr id="i149" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion-org.apache.hadoop.hbase.regionserver.Region-byte:A-">loadRegion</a></span>(org.apache.hadoop.hbase.regionserver.Region&nbsp;r,
           byte[]&nbsp;f)</code>&nbsp;</td>
 </tr>
-<tr id="i149" class="rowColor">
+<tr id="i150" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A-">loadTable</a></span>(org.apache.hadoop.hbase.client.Table&nbsp;t,
          byte[]&nbsp;f)</code>
 <div class="block">Load table with rows from 'aaa' to 'zzz'.</div>
 </td>
 </tr>
-<tr id="i150" class="altColor">
+<tr id="i151" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A:A-">loadTable</a></span>(org.apache.hadoop.hbase.client.Table&nbsp;t,
          byte[][]&nbsp;f)</code>
 <div class="block">Load table of multiple column families with rows from 'aaa' to 'zzz'.</div>
 </td>
 </tr>
-<tr id="i151" class="rowColor">
+<tr id="i152" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A:A-byte:A-">loadTable</a></span>(org.apache.hadoop.hbase.client.Table&nbsp;t,
          byte[][]&nbsp;f,
@@ -1436,7 +1443,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Load table of multiple column families with rows from 'aaa' to 'zzz'.</div>
 </td>
 </tr>
-<tr id="i152" class="altColor">
+<tr id="i153" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A:A-byte:A-boolean-">loadTable</a></span>(org.apache.hadoop.hbase.client.Table&nbsp;t,
          byte[][]&nbsp;f,
@@ -1445,7 +1452,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Load table of multiple column families with rows from 'aaa' to 'zzz'.</div>
 </td>
 </tr>
-<tr id="i153" class="rowColor">
+<tr id="i154" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A-boolean-">loadTable</a></span>(org.apache.hadoop.hbase.client.Table&nbsp;t,
          byte[]&nbsp;f,
@@ -1453,114 +1460,114 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Load table with rows from 'aaa' to 'zzz'.</div>
 </td>
 </tr>
-<tr id="i154" class="altColor">
+<tr id="i155" class="rowColor">
 <td class="colFirst"><code>private static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#memStoreTSAndTagsCombination--">memStoreTSAndTagsCombination</a></span>()</code>
 <div class="block">Create combination of memstoreTS and tags</div>
 </td>
 </tr>
-<tr id="i155" class="rowColor">
+<tr id="i156" class="altColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#memStoreTSTagsAndOffheapCombination--">memStoreTSTagsAndOffheapCombination</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i156" class="altColor">
+<tr id="i157" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#modifyTableSync-org.apache.hadoop.hbase.client.Admin-org.apache.hadoop.hbase.client.TableDescriptor-">modifyTableSync</a></span>(org.apache.hadoop.hbase.client.Admin&nbsp;admin,
                org.apache.hadoop.hbase.client.TableDescriptor&nbsp;desc)</code>
 <div class="block">Modify a table, synchronous.</div>
 </td>
 </tr>
-<tr id="i157" class="rowColor">
+<tr id="i158" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#moveRegionAndWait-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">moveRegionAndWait</a></span>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;destRegion,
                  org.apache.hadoop.hbase.ServerName&nbsp;destServer)</code>
 <div class="block">Move region to destination server and wait till region is completely moved and online</div>
 </td>
 </tr>
-<tr id="i158" class="altColor">
+<tr id="i159" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/Waiter.ExplainingPredicate.html" title="interface in org.apache.hadoop.hbase">Waiter.ExplainingPredicate</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateNoRegionsInTransition--">predicateNoRegionsInTransition</a></span>()</code>
 <div class="block">Returns a <a href="../../../../org/apache/hadoop/hbase/Waiter.Predicate.html" title="interface in org.apache.hadoop.hbase"><code>Waiter.Predicate</code></a> for checking that there are no regions in transition in master</div>
 </td>
 </tr>
-<tr id="i159" class="rowColor">
+<tr id="i160" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/Waiter.Predicate.html" title="interface in org.apache.hadoop.hbase">Waiter.Predicate</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateTableAvailable-org.apache.hadoop.hbase.TableName-">predicateTableAvailable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</code>
 <div class="block">Returns a <a href="../../../../org/apache/hadoop/hbase/Waiter.Predicate.html" title="interface in org.apache.hadoop.hbase"><code>Waiter.Predicate</code></a> for checking that table is enabled</div>
 </td>
 </tr>
-<tr id="i160" class="altColor">
+<tr id="i161" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/Waiter.Predicate.html" title="interface in org.apache.hadoop.hbase">Waiter.Predicate</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateTableDisabled-org.apache.hadoop.hbase.TableName-">predicateTableDisabled</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</code>
 <div class="block">Returns a <a href="../../../../org/apache/hadoop/hbase/Waiter.Predicate.html" title="interface in org.apache.hadoop.hbase"><code>Waiter.Predicate</code></a> for checking that table is enabled</div>
 </td>
 </tr>
-<tr id="i161" class="rowColor">
+<tr id="i162" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/Waiter.Predicate.html" title="interface in org.apache.hadoop.hbase">Waiter.Predicate</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateTableEnabled-org.apache.hadoop.hbase.TableName-">predicateTableEnabled</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</code>
 <div class="block">Returns a <a href="../../../../org/apache/hadoop/hbase/Waiter.Predicate.html" title="interface in org.apache.hadoop.hbase"><code>Waiter.Predicate</code></a> for checking that table is enabled</div>
 </td>
 </tr>
-<tr id="i162" class="altColor">
+<tr id="i163" class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#randomFreePort--">randomFreePort</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i163" class="rowColor">
+<tr id="i164" class="altColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#randomMultiCastAddress--">randomMultiCastAddress</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i164" class="altColor">
+<tr id="i165" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#restartHBaseCluster-int-">restartHBaseCluster</a></span>(int&nbsp;servers)</code>
 <div class="block">Starts the hbase cluster up again after shutting it down previously in a
  test.</div>
 </td>
 </tr>
-<tr id="i165" class="rowColor">
+<tr id="i166" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#restartHBaseCluster-int-java.util.List-">restartHBaseCluster</a></span>(int&nbsp;servers,
                    <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;ports)</code>&nbsp;</td>
 </tr>
-<tr id="i166" class="altColor">
+<tr id="i167" class="rowColor">
 <td class="colFirst"><code>static &lt;T&gt;&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#safeGetAsStr-java.util.List-int-">safeGetAsStr</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;T&gt;&nbsp;lst,
             int&nbsp;i)</code>&nbsp;</td>
 </tr>
-<tr id="i167" class="rowColor">
+<tr id="i168" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setDFSCluster-org.apache.hadoop.hdfs.MiniDFSCluster-">setDFSCluster</a></span>(org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;cluster)</code>&nbsp;</td>
 </tr>
-<tr id="i168" class="altColor">
+<tr id="i169" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setDFSCluster-org.apache.hadoop.hdfs.MiniDFSCluster-boolean-">setDFSCluster</a></span>(org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;cluster,
              boolean&nbsp;requireDown)</code>
 <div class="block">Set the MiniDFSCluster</div>
 </td>
 </tr>
-<tr id="i169" class="rowColor">
+<tr id="i170" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setFileSystemURI-java.lang.String-">setFileSystemURI</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;fsURI)</code>&nbsp;</td>
 </tr>
-<tr id="i170" class="altColor">
+<tr id="i171" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setFs--">setFs</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i171" class="rowColor">
+<tr id="i172" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setHBaseCluster-org.apache.hadoop.hbase.HBaseCluster-">setHBaseCluster</a></span>(<a href="../../../../org/apache/hadoop/hbase/HBaseCluster.html" title="class in org.apache.hadoop.hbase">HBaseCluster</a>&nbsp;hbaseCluster)</code>&nbsp;</td>
 </tr>
-<tr id="i172" class="altColor">
+<tr id="i173" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setHBaseFsTmpDir--">setHBaseFsTmpDir</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i173" class="rowColor">
+<tr id="i174" class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setMaxRecoveryErrorCount-java.io.OutputStream-int-">setMaxRecoveryErrorCount</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;stream,
                         int&nbsp;max)</code>
 <div class="block">Set maxRecoveryErrorCount in DFSClient.</div>
 </td>
 </tr>
-<tr id="i174" class="altColor">
+<tr id="i175" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setReplicas-org.apache.hadoop.hbase.client.Admin-org.apache.hadoop.hbase.TableName-int-">setReplicas</a></span>(org.apache.hadoop.hbase.client.Admin&nbsp;admin,
            org.apache.hadoop.hbase.TableName&nbsp;table,
@@ -1568,56 +1575,56 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Set the number of Region replicas.</div>
 </td>
 </tr>
-<tr id="i175" class="rowColor">
+<tr id="i176" class="altColor">
 <td class="colFirst"><code>protected org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setupDataTestDir--">setupDataTestDir</a></span>()</code>
 <div class="block">Home our data in a dir under <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.html#DEFAULT_BASE_TEST_DIRECTORY"><code>HBaseCommonTestingUtility.DEFAULT_BASE_TEST_DIRECTORY</code></a>.</div>
 </td>
 </tr>
-<tr id="i176" class="altColor">
+<tr id="i177" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setupDataTestDirOnTestFS--">setupDataTestDirOnTestFS</a></span>()</code>
 <div class="block">Sets up a path in test filesystem to be used by tests.</div>
 </td>
 </tr>
-<tr id="i177" class="rowColor">
+<tr id="i178" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.minikdc.MiniKdc</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setupMiniKdc-java.io.File-">setupMiniKdc</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a>&nbsp;keytabFile)</code>
 <div class="block">Sets up <code>MiniKdc</code> for testing security.</div>
 </td>
 </tr>
-<tr id="i178" class="altColor">
+<tr id="i179" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniCluster--">shutdownMiniCluster</a></span>()</code>
 <div class="block">Stops mini hbase, zk, and hdfs clusters.</div>
 </td>
 </tr>
-<tr id="i179" class="rowColor">
+<tr id="i180" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniDFSCluster--">shutdownMiniDFSCluster</a></span>()</code>
 <div class="block">Shuts down instance created by call to <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-int-"><code>startMiniDFSCluster(int)</code></a>
  or does nothing.</div>
 </td>
 </tr>
-<tr id="i180" class="altColor">
+<tr id="i181" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniHBaseCluster--">shutdownMiniHBaseCluster</a></span>()</code>
 <div class="block">Shutdown HBase mini cluster.Does not shutdown zk or dfs if running.</div>
 </td>
 </tr>
-<tr id="i181" class="rowColor">
+<tr id="i182" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniMapReduceCluster--">shutdownMiniMapReduceCluster</a></span>()</code>
 <div class="block">Stops the previously started <code>MiniMRCluster</code>.</div>
 </td>
 </tr>
-<tr id="i182" class="altColor">
+<tr id="i183" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster--">startMiniCluster</a></span>()</code>
 <div class="block">Start up a minicluster of hbase, dfs and zookeeper all using default options.</div>
 </td>
 </tr>
-<tr id="i183" class="rowColor">
+<tr id="i184" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-boolean-">startMiniCluster</a></span>(boolean&nbsp;createWALDir)</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -1625,13 +1632,13 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i184" class="altColor">
+<tr id="i185" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-">startMiniCluster</a></span>(int&nbsp;numSlaves)</code>
 <div class="block">Start up a minicluster of hbase, dfs and zookeeper clusters with given slave node number.</div>
 </td>
 </tr>
-<tr id="i185" class="rowColor">
+<tr id="i186" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-boolean-">startMiniCluster</a></span>(int&nbsp;numSlaves,
                 boolean&nbsp;createRootDir)</code>
@@ -1640,7 +1647,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i186" class="altColor">
+<tr id="i187" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-boolean-boolean-">startMiniCluster</a></span>(int&nbsp;numSlaves,
                 boolean&nbsp;createRootDir,
@@ -1650,7 +1657,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i187" class="rowColor">
+<tr id="i188" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-">startMiniCluster</a></span>(int&nbsp;numMasters,
                 int&nbsp;numSlaves)</code>
@@ -1659,7 +1666,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i188" class="altColor">
+<tr id="i189" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-boolean-">startMiniCluster</a></span>(int&nbsp;numMasters,
                 int&nbsp;numSlaves,
@@ -1669,7 +1676,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i189" class="rowColor">
+<tr id="i190" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-int-">startMiniCluster</a></span>(int&nbsp;numMasters,
                 int&nbsp;numRegionServers,
@@ -1679,7 +1686,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i190" class="altColor">
+<tr id="i191" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-int-java.lang.String:A-java.lang.Class-java.lang.Class-">startMiniCluster</a></span>(int&nbsp;numMasters,
                 int&nbsp;numRegionServers,
@@ -1692,7 +1699,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i191" class="rowColor">
+<tr id="i192" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-int-java.lang.String:A-java.lang.Class-java.lang.Class-boolean-boolean-">startMiniCluster</a></span>(int&nbsp;numMasters,
                 int&nbsp;numRegionServers,
@@ -1707,7 +1714,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i192" class="altColor">
+<tr id="i193" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-java.lang.String:A-">startMiniCluster</a></span>(int&nbsp;numMasters,
                 int&nbsp;numSlaves,
@@ -1717,7 +1724,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i193" class="rowColor">
+<tr id="i194" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-java.lang.String:A-boolean-">startMiniCluster</a></span>(int&nbsp;numMasters,
                 int&nbsp;numSlaves,
@@ -1728,7 +1735,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i194" class="altColor">
+<tr id="i195" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-java.lang.String:A-java.lang.Class-java.lang.Class-">startMiniCluster</a></span>(int&nbsp;numMasters,
                 int&nbsp;numSlaves,
@@ -1740,48 +1747,48 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i195" class="rowColor">
+<tr id="i196" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-org.apache.hadoop.hbase.StartMiniClusterOption-">startMiniCluster</a></span>(<a href="../../../../org/apache/hadoop/hbase/StartMiniClusterOption.html" title="class in org.apache.hadoop.hbase">StartMiniClusterOption</a>&nbsp;option)</code>
 <div class="block">Start up a mini cluster of hbase, optionally dfs and zookeeper if needed.</div>
 </td>
 </tr>
-<tr id="i196" class="altColor">
+<tr id="i197" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-int-">startMiniDFSCluster</a></span>(int&nbsp;servers)</code>
 <div class="block">Start a minidfscluster.</div>
 </td>
 </tr>
-<tr id="i197" class="rowColor">
+<tr id="i198" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-int-java.lang.String:A-">startMiniDFSCluster</a></span>(int&nbsp;servers,
                    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;hosts)</code>
 <div class="block">Start a minidfscluster.</div>
 </td>
 </tr>
-<tr id="i198" class="altColor">
+<tr id="i199" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-int-java.lang.String:A-java.lang.String:A-">startMiniDFSCluster</a></span>(int&nbsp;servers,
                    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;racks,
                    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;hosts)</code>&nbsp;</td>
 </tr>
-<tr id="i199" class="rowColor">
+<tr id="i200" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-java.lang.String:A-">startMiniDFSCluster</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;hosts)</code>
 <div class="block">Start a minidfscluster.</div>
 </td>
 </tr>
-<tr id="i200" class="altColor">
+<tr id="i201" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSClusterForTestWAL-int-">startMiniDFSClusterForTestWAL</a></span>(int&nbsp;namenodePort)</code>&nbsp;</td>
 </tr>
-<tr id="i201" class="rowColor">
+<tr id="i202" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster--">startMiniHBaseCluster</a></span>()</code>
 <div class="block">Starts up mini hbase cluster using default options.</div>
 </td>
 </tr>
-<tr id="i202" class="altColor">
+<tr id="i203" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-int-int-">startMiniHBaseCluster</a></span>(int&nbsp;numMasters,
                      int&nbsp;numRegionServers)</code>
@@ -1790,7 +1797,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i203" class="rowColor">
+<tr id="i204" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-int-int-java.util.List-">startMiniHBaseCluster</a></span>(int&nbsp;numMasters,
                      int&nbsp;numRegionServers,
@@ -1800,7 +1807,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i204" class="altColor">
+<tr id="i205" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-int-int-java.util.List-java.lang.Class-java.lang.Class-boolean-boolean-">startMiniHBaseCluster</a></span>(int&nbsp;numMasters,
                      int&nbsp;numRegionServers,
@@ -1814,72 +1821,72 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i205" class="rowColor">
+<tr id="i206" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-org.apache.hadoop.hbase.StartMiniClusterOption-">startMiniHBaseCluster</a></span>(<a href="../../../../org/apache/hadoop/hbase/StartMiniClusterOption.html" title="class in org.apache.hadoop.hbase">StartMiniClusterOption</a>&nbsp;option)</code>
 <div class="block">Starts up mini hbase cluster.</div>
 </td>
 </tr>
-<tr id="i206" class="altColor">
+<tr id="i207" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.mapred.MiniMRCluster</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniMapReduceCluster--">startMiniMapReduceCluster</a></span>()</code>
 <div class="block">Starts a <code>MiniMRCluster</code> with a default number of
  <code>TaskTracker</code>'s.</div>
 </td>
 </tr>
-<tr id="i207" class="rowColor">
+<tr id="i208" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniMapReduceCluster-int-">startMiniMapReduceCluster</a></span>(int&nbsp;servers)</code>
 <div class="block">Starts a <code>MiniMRCluster</code>.</div>
 </td>
 </tr>
-<tr id="i208" class="altColor">
+<tr id="i209" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Table</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#truncateTable-org.apache.hadoop.hbase.TableName-">truncateTable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</code>
 <div class="block">Truncate a table using the admin command.</div>
 </td>
 </tr>
-<tr id="i209" class="rowColor">
+<tr id="i210" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.client.Table</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#truncateTable-org.apache.hadoop.hbase.TableName-boolean-">truncateTable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
              boolean&nbsp;preserveRegions)</code>
 <div class="block">Truncate a table using the admin command.</div>
 </td>
 </tr>
-<tr id="i210" class="altColor">
+<tr id="i211" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#unassignRegion-byte:A-">unassignRegion</a></span>(byte[]&nbsp;regionName)</code>
 <div class="block">Unassign the named region.</div>
 </td>
 </tr>
-<tr id="i211" class="rowColor">
+<tr id="i212" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#unassignRegion-java.lang.String-">unassignRegion</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regionName)</code>
 <div class="block">Unassign the named region.</div>
 </td>
 </tr>
-<tr id="i212" class="altColor">
+<tr id="i213" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#unassignRegionByRow-byte:A-org.apache.hadoop.hbase.client.RegionLocator-">unassignRegionByRow</a></span>(byte[]&nbsp;row,
                    org.apache.hadoop.hbase.client.RegionLocator&nbsp;table)</code>
 <div class="block">Closes the region containing the given row.</div>
 </td>
 </tr>
-<tr id="i213" class="rowColor">
+<tr id="i214" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#unassignRegionByRow-java.lang.String-org.apache.hadoop.hbase.client.RegionLocator-">unassignRegionByRow</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;row,
                    org.apache.hadoop.hbase.client.RegionLocator&nbsp;table)</code>
 <div class="block">Closes the region containing the given row.</div>
 </td>
 </tr>
-<tr id="i214" class="altColor">
+<tr id="i215" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-int-int-">verifyNumericRows</a></span>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
                  byte[]&nbsp;f,
                  int&nbsp;startRow,
                  int&nbsp;endRow)</code>&nbsp;</td>
 </tr>
-<tr id="i215" class="rowColor">
+<tr id="i216" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-int-int-boolean-">verifyNumericRows</a></span>(org.apache.hadoop.hbase.regionserver.HRegion&nbsp;region,
                  byte[]&nbsp;f,
@@ -1887,14 +1894,14 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
                  int&nbsp;endRow,
                  boolean&nbsp;present)</code>&nbsp;</td>
 </tr>
-<tr id="i216" class="altColor">
+<tr id="i217" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.Region-byte:A-int-int-">verifyNumericRows</a></span>(org.apache.hadoop.hbase.regionserver.Region&nbsp;region,
                  byte[]&nbsp;f,
                  int&nbsp;startRow,
                  int&nbsp;endRow)</code>&nbsp;</td>
 </tr>
-<tr id="i217" class="rowColor">
+<tr id="i218" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.Region-byte:A-int-int-boolean-">verifyNumericRows</a></span>(org.apache.hadoop.hbase.regionserver.Region&nbsp;region,
                  byte[]&nbsp;f,
@@ -1902,7 +1909,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
                  int&nbsp;endRow,
                  boolean&nbsp;present)</code>&nbsp;</td>
 </tr>
-<tr id="i218" class="altColor">
+<tr id="i219" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.client.Table-byte:A-int-int-int-">verifyNumericRows</a></span>(org.apache.hadoop.hbase.client.Table&nbsp;table,
                  byte[]&nbsp;f,
@@ -1910,78 +1917,78 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
                  int&nbsp;endRow,
                  int&nbsp;replicaId)</code>&nbsp;</td>
 </tr>
-<tr id="i219" class="rowColor">
+<tr id="i220" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyTableDescriptorIgnoreTableName-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.TableDescriptor-">verifyTableDescriptorIgnoreTableName</a></span>(org.apache.hadoop.hbase.client.TableDescriptor&nbsp;ltd,
                                     org.apache.hadoop.hbase.client.TableDescriptor&nbsp;rtd)</code>&nbsp;</td>
 </tr>
-<tr id="i220" class="altColor">
+<tr id="i221" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitForHostPort-java.lang.String-int-">waitForHostPort</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;host,
                int&nbsp;port)</code>&nbsp;</td>
 </tr>
-<tr id="i221" class="rowColor">
+<tr id="i222" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitLabelAvailable-long-java.lang.String...-">waitLabelAvailable</a></span>(long&nbsp;timeoutMillis,
                   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;labels)</code>
 <div class="block">Wait until labels is ready in VisibilityLabelsCache.</div>
 </td>
 </tr>
-<tr id="i222" class="altColor">
+<tr id="i223" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable-byte:A-long-">waitTableAvailable</a></span>(byte[]&nbsp;table,
                   long&nbsp;timeoutMillis)</code>
 <div class="block">Wait until all regions in a table have been assigned</div>
 </td>
 </tr>
-<tr id="i223" class="rowColor">
+<tr id="i224" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable-org.apache.hadoop.hbase.TableName-">waitTableAvailable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;table)</code>
 <div class="block">Wait until all regions in a table have been assigned.</div>
 </td>
 </tr>
-<tr id="i224" class="altColor">
+<tr id="i225" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable-org.apache.hadoop.hbase.TableName-long-">waitTableAvailable</a></span>(org.apache.hadoop.hbase.TableName&nbsp;table,
                   long&nbsp;timeoutMillis)</code>&nbsp;</td>
 </tr>
-<tr id="i225" class="rowColor">
+<tr id="i226" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled-byte:A-">waitTableDisabled</a></span>(byte[]&nbsp;table)</code>
 <div class="block">Waits for a table to be 'disabled'.</div>
 </td>
 </tr>
-<tr id="i226" class="altColor">
+<tr id="i227" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled-byte:A-long-">waitTableDisabled</a></span>(byte[]&nbsp;table,
                  long&nbsp;timeoutMillis)</code>
 <div class="block">Waits for a table to be 'disabled'.</div>
 </td>
 </tr>
-<tr id="i227" class="rowColor">
+<tr id="i228" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled-org.apache.hadoop.hbase.TableName-long-">waitTableDisabled</a></span>(org.apache.hadoop.hbase.TableName&nbsp;table,
                  long&nbsp;millisTimeout)</code>&nbsp;</td>
 </tr>
-<tr id="i228" class="altColor">
+<tr id="i229" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled-byte:A-long-">waitTableEnabled</a></span>(byte[]&nbsp;table,
                 long&nbsp;timeoutMillis)</code>
 <div class="block">Waits for a table to be 'enabled'.</div>
 </td>
 </tr>
-<tr id="i229" class="rowColor">
+<tr id="i230" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled-org.apache.hadoop.hbase.TableName-">waitTableEnabled</a></span>(org.apache.hadoop.hbase.TableName&nbsp;table)</code>
 <div class="block">Waits for a table to be 'enabled'.</div>
 </td>
 </tr>
-<tr id="i230" class="altColor">
+<tr id="i231" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled-org.apache.hadoop.hbase.TableName-long-">waitTableEnabled</a></span>(org.apache.hadoop.hbase.TableName&nbsp;table,
                 long&nbsp;timeoutMillis)</code>&nbsp;</td>
 </tr>
-<tr id="i231" class="rowColor">
+<tr id="i232" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllRegionsAssigned-org.apache.hadoop.hbase.TableName-">waitUntilAllRegionsAssigned</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName)</code>
 <div class="block">Wait until all regions for a table in hbase:meta have a non-empty
@@ -1991,7 +1998,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
  server.</div>
 </td>
 </tr>
-<tr id="i232" class="altColor">
+<tr id="i233" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllRegionsAssigned-org.apache.hadoop.hbase.TableName-long-">waitUntilAllRegionsAssigned</a></span>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                            long&nbsp;timeout)</code>
@@ -1999,19 +2006,19 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
  info:server, or until timeout.</div>
 </td>
 </tr>
-<tr id="i233" class="rowColor">
+<tr id="i234" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllSystemRegionsAssigned--">waitUntilAllSystemRegionsAssigned</a></span>()</code>
 <div class="block">Waith until all system table's regions get assigned</div>
 </td>
 </tr>
-<tr id="i234" class="altColor">
+<tr id="i235" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilNoRegionsInTransition--">waitUntilNoRegionsInTransition</a></span>()</code>
 <div class="block">Wait until no regions in transition.</div>
 </td>
 </tr>
-<tr id="i235" class="rowColor">
+<tr id="i236" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilNoRegionsInTransition-long-">waitUntilNoRegionsInTransition</a></span>(long&nbsp;timeout)</code>
 <div class="block">Wait until no regions in transition.</div>
@@ -2227,7 +2234,7 @@ private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/jav
 <ul class="blockList">
 <li class="blockList">
 <h4>fam1</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1856">fam1</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1894">fam1</a></pre>
 </li>
 </ul>
 <a name="fam2">
@@ -2236,7 +2243,7 @@ private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/jav
 <ul class="blockList">
 <li class="blockList">
 <h4>fam2</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1857">fam2</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1895">fam2</a></pre>
 </li>
 </ul>
 <a name="fam3">
@@ -2245,7 +2252,7 @@ private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/jav
 <ul class="blockList">
 <li class="blockList">
 <h4>fam3</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1858">fam3</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1896">fam3</a></pre>
 </li>
 </ul>
 <a name="COLUMNS">
@@ -2254,7 +2261,7 @@ private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/jav
 <ul class="blockList">
 <li class="blockList">
 <h4>COLUMNS</h4>
-<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1859">COLUMNS</a></pre>
+<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1897">COLUMNS</a></pre>
 </li>
 </ul>
 <a name="MAXVERSIONS">
@@ -2263,7 +2270,7 @@ private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/jav
 <ul class="blockList">
 <li class="blockList">
 <h4>MAXVERSIONS</h4>
-<pre>private static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1860">MAXVERSIONS</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1898">MAXVERSIONS</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HBaseTestingUtility.MAXVERSIONS">Constant Field Values</a></dd>
@@ -2276,7 +2283,7 @@ private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/jav
 <ul class="blockList">
 <li class="blockList">
 <h4>FIRST_CHAR</h4>
-<pre>public static final&nbsp;char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1862">FIRST_CHAR</a></pre>
+<pre>public static final&nbsp;char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1900">FIRST_CHAR</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HBaseTestingUtility.FIRST_CHAR">Constant Field Values</a></dd>
@@ -2289,7 +2296,7 @@ private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/jav
 <ul class="blockList">
 <li class="blockList">
 <h4>LAST_CHAR</h4>
-<pre>public static final&nbsp;char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1863">LAST_CHAR</a></pre>
+<pre>public static final&nbsp;char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1901">LAST_CHAR</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HBaseTestingUtility.LAST_CHAR">Constant Field Values</a></dd>
@@ -2302,7 +2309,7 @@ private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/jav
 <ul class="blockList">
 <li class="blockList">
 <h4>START_KEY_BYTES</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1864">START_KEY_BYTES</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1902">START_KEY_BYTES</a></pre>
 </li>
 </ul>
 <a name="START_KEY">
@@ -2311,7 +2318,7 @@ private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/jav
 <ul class="blockList">
 <li class="blockList">
 <h4>START_KEY</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1865">START_KEY</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1903">START_KEY</a></pre>
 </li>
 </ul>
 <a name="ROWS">
@@ -2320,7 +2327,7 @@ private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/jav
 <ul class="blockList">
 <li class="blockList">
 <h4>ROWS</h4>
-<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2420">ROWS</a></pre>
+<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2464">ROWS</a></pre>
 <div class="block">All the row values for the data loaded by <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A-"><code>loadTable(Table, byte[])</code></a></div>
 </li>
 </ul>
@@ -2330,7 +2337,7 @@ private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/jav
 <ul class="blockList">
 <li class="blockList">
 <h4>KEYS</h4>
-<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2435">KEYS</a></pre>
+<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2479">KEYS</a></pre>
 </li>
 </ul>
 <a name="KEYS_FOR_HBA_CREATE_TABLE">
@@ -2339,7 +2346,7 @@ private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/jav
 <ul class="blockList">
 <li class="blockList">
 <h4>KEYS_FOR_HBA_CREATE_TABLE</h4>
-<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2447">KEYS_FOR_HBA_CREATE_TABLE</a></pre>
+<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2491">KEYS_FOR_HBA_CREATE_TABLE</a></pre>
 </li>
 </ul>
 <a name="hbaseAdmin">
@@ -2348,7 +2355,7 @@ private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/jav
 <ul class="blockList">
 <li class="blockList">
 <h4>hbaseAdmin</h4>
-<pre>private&nbsp;org.apache.hadoop.hbase.client.HBaseAdmin <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3025">hbaseAdmin</a></pre>
+<pre>private&nbsp;org.apache.hadoop.hbase.client.HBaseAdmin <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3069">hbaseAdmin</a></pre>
 </li>
 </ul>
 <a name="random">
@@ -2357,7 +2364,7 @@ private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/jav
 <ul class="blockList">
 <li class="blockList">
 <h4>random</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3769">random</a></pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3813">random</a></pre>
 </li>
 </ul>
 <a name="portAllocator">
@@ -2366,7 +2373,7 @@ private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/jav
 <ul class="blockListLast">
 <li class="blockList">
 <h4>portAllocator</h4>
-<pre>private static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3771">portAllocator</a></pre>
+<pre>private static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3815">portAllocator</a></pre>
 </li>
 </ul>
 </li>
@@ -2887,13 +2894,24 @@ public&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<a href="../../../../s
 </dl>
 </li>
 </ul>
+<a name="isNewVersionBehaviorEnabled--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isNewVersionBehaviorEnabled</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.720">isNewVersionBehaviorEnabled</a>()</pre>
+<div class="block">Check whether the tests should assume NEW_VERSION_BEHAVIOR when creating
+  new column families. Default to false.</div>
+</li>
+</ul>
 <a name="isReadShortCircuitOn--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>isReadShortCircuitOn</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.722">isReadShortCircuitOn</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.734">isReadShortCircuitOn</a>()</pre>
 <div class="block">Get the HBase setting for dfs.client.read.shortcircuit from the conf or a system property.
   This allows to specify this parameter on the command line.
    If not set, default is true.</div>
@@ -2905,7 +2923,7 @@ public&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<a href="../../../../s
 <ul class="blockList">
 <li class="blockList">
 <h4>enableShortCircuit</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.735">enableShortCircuit</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.747">enableShortCircuit</a>()</pre>
 <div class="block">Enable the short circuit read, unless configured differently.
  Set both HBase and HDFS settings, including skipping the hdfs checksum checks.</div>
 </li>
@@ -2916,7 +2934,7 @@ public&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<a href="../../../../s
 <ul class="blockList">
 <li class="blockList">
 <h4>createDirAndSetProperty</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.750">createDirAndSetProperty</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;relPath,
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.762">createDirAndSetProperty</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;relPath,
                                        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;property)</pre>
 </li>
 </ul>
@@ -2926,7 +2944,7 @@ public&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<a href="../../../../s
 <ul class="blockList">
 <li class="blockList">
 <h4>shutdownMiniDFSCluster</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.764">shutdownMiniDFSCluster</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.776">shutdownMiniDFSCluster</a>()
                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Shuts down instance created by call to <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-int-"><code>startMiniDFSCluster(int)</code></a>
  or does nothing.</div>
@@ -2943,7 +2961,7 @@ public&nbsp;org.apache.hadoop.hbase.HTableDescriptor&nbsp;<a href="../../../../s
 <li class="blockList">
 <h4>startMiniCluster</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.783">startMiniCluster</a>(boolean&nbsp;createWALDir)
+public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.795">startMiniCluster</a>(boolean&nbsp;createWALDir)
                                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Use <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-org.apache.hadoop.hbase.StartMiniClusterOption-"><code>startMiniCluster(StartMiniClusterOption)</code></a> instead.</span></div>
 <div class="block">Start up a minicluster of hbase, dfs, and zookeeper where WAL's walDir is created separately.
@@ -2967,7 +2985,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <li class="blockList">
 <h4>startMiniCluster</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.799">startMiniCluster</a>(int&nbsp;numSlaves,
+public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.811">startMiniCluster</a>(int&nbsp;numSlaves,
                                                      boolean&nbsp;createRootDir)
                                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Use <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-org.apache.hadoop.hbase.StartMiniClusterOption-"><code>startMiniCluster(StartMiniClusterOption)</code></a> instead.</span></div>
@@ -2993,7 +3011,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <li class="blockList">
 <h4>startMiniCluster</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.817">startMiniCluster</a>(int&nbsp;numSlaves,
+public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.829">startMiniCluster</a>(int&nbsp;numSlaves,
                                                      boolean&nbsp;createRootDir,
                                                      boolean&nbsp;createWALDir)
                                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
@@ -3021,7 +3039,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <li class="blockList">
 <h4>startMiniCluster</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.836">startMiniCluster</a>(int&nbsp;numMasters,
+public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.848">startMiniCluster</a>(int&nbsp;numMasters,
                                                      int&nbsp;numSlaves,
                                                      boolean&nbsp;createRootDir)
                                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
@@ -3049,7 +3067,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <li class="blockList">
 <h4>startMiniCluster</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.854">startMiniCluster</a>(int&nbsp;numMasters,
+public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.866">startMiniCluster</a>(int&nbsp;numMasters,
                                                      int&nbsp;numSlaves)
                                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Use <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-org.apache.hadoop.hbase.StartMiniClusterOption-"><code>startMiniCluster(StartMiniClusterOption)</code></a> instead.</span></div>
@@ -3075,7 +3093,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <li class="blockList">
 <h4>startMiniCluster</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.873">startMiniCluster</a>(int&nbsp;numMasters,
+public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.885">startMiniCluster</a>(int&nbsp;numMasters,
                                                      int&nbsp;numSlaves,
                                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;dataNodeHosts,
                                                      boolean&nbsp;createRootDir)
@@ -3106,7 +3124,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <li class="blockList">
 <h4>startMiniCluster</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.893">startMiniCluster</a>(int&nbsp;numMasters,
+public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.905">startMiniCluster</a>(int&nbsp;numMasters,
                                                      int&nbsp;numSlaves,
                                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;dataNodeHosts)
                                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
@@ -3135,7 +3153,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <li class="blockList">
 <h4>startMiniCluster</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.912">startMiniCluster</a>(int&nbsp;numMasters,
+public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.924">startMiniCluster</a>(int&nbsp;numMasters,
                                                      int&nbsp;numRegionServers,
                                                      int&nbsp;numDataNodes)
                                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
@@ -3163,7 +3181,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <li class="blockList">
 <h4>startMiniCluster</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.934">startMiniCluster</a>(int&nbsp;numMasters,
+public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.946">startMiniCluster</a>(int&nbsp;numMasters,
                                                      int&nbsp;numSlaves,
                                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;dataNodeHosts,
                                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends org.apache.hadoop.hbase.master.HMaster&gt;&nbsp;masterClass,
@@ -3196,7 +3214,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <li class="blockList">
 <h4>startMiniCluster</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.961">startMiniCluster</a>(int&nbsp;numMasters,
+public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.973">startMiniCluster</a>(int&nbsp;numMasters,
                                                      int&nbsp;numRegionServers,
                                                      int&nbsp;numDataNodes,
                                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;dataNodeHosts,
@@ -3231,7 +3249,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <li class="blockList">
 <h4>startMiniCluster</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.990">startMiniCluster</a>(int&nbsp;numMasters,
+public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1002">startMiniCluster</a>(int&nbsp;numMasters,
                                                      int&nbsp;numRegionServers,
                                                      int&nbsp;numDataNodes,
                                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;dataNodeHosts,
@@ -3269,7 +3287,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniCluster</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1010">startMiniCluster</a>(int&nbsp;numSlaves)
+<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1022">startMiniCluster</a>(int&nbsp;numSlaves)
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Start up a minicluster of hbase, dfs and zookeeper clusters with given slave node number.
  All other options will use default values, defined in <a href="../../../../org/apache/hadoop/hbase/StartMiniClusterOption.Builder.html" title="class in org.apache.hadoop.hbase"><code>StartMiniClusterOption.Builder</code></a>.</div>
@@ -3290,7 +3308,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniCluster</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1022">startMiniCluster</a>()
+<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1034">startMiniCluster</a>()
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Start up a minicluster of hbase, dfs and zookeeper all using default options.
  Option default value can be found in <a href="../../../../org/apache/hadoop/hbase/StartMiniClusterOption.Builder.html" title="class in org.apache.hadoop.hbase"><code>StartMiniClusterOption.Builder</code></a>.</div>
@@ -3309,7 +3327,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniCluster</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1032">startMiniCluster</a>(<a href="../../../../org/apache/hadoop/hbase/StartMiniClusterOption.html" title="class in org.apache.hadoop.hbase">StartMiniClusterOption</a>&nbsp;option)
+<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1044">startMiniCluster</a>(<a href="../../../../org/apache/hadoop/hbase/StartMiniClusterOption.html" title="class in org.apache.hadoop.hbase">StartMiniClusterOption</a>&nbsp;option)
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Start up a mini cluster of hbase, optionally dfs

<TRUNCATED>

[28/29] hbase-site git commit: Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index a3f784a..a932005 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="20181222" />
+    <meta name="Date-Revision-yyyymmdd" content="20181225" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -291,10 +291,10 @@
 <th><img src="images/icon_warning_sml.gif" alt="" />&#160;Warnings</th>
 <th><img src="images/icon_error_sml.gif" alt="" />&#160;Errors</th></tr>
 <tr class="b">
-<td>3823</td>
+<td>3824</td>
 <td>0</td>
 <td>0</td>
-<td>14661</td></tr></table></div>
+<td>14671</td></tr></table></div>
 <div class="section">
 <h2><a name="Files"></a>Files</h2>
 <table border="0" class="table table-striped">
@@ -457,7 +457,7 @@
 <td><a href="#org.apache.hadoop.hbase.HBaseTestingUtility.java">org/apache/hadoop/hbase/HBaseTestingUtility.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>224</td></tr>
+<td>231</td></tr>
 <tr class="a">
 <td><a href="#org.apache.hadoop.hbase.HColumnDescriptor.java">org/apache/hadoop/hbase/HColumnDescriptor.java</a></td>
 <td>0</td>
@@ -1839,2690 +1839,2690 @@
 <td>0</td>
 <td>3</td></tr>
 <tr class="a">
-<td><a href="#org.apache.hadoop.hbase.client.TestHBaseAdminNoCluster.java">org/apache/hadoop/hbase/client/TestHBaseAdminNoCluster.java</a></td>
+<td><a href="#org.apache.hadoop.hbase.client.TestGetScanColumnsWithNewVersionBehavior.java">org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
 <tr class="b">
-<td><a href="#org.apache.hadoop.hbase.client.TestHTableMultiplexer.java">org/apache/hadoop/hbase/client/TestHTableMultiplexer.java</a></td>
+<td><a href="#org.apache.hadoop.hbase.client.TestHBaseAdminNoCluster.java">org/apache/hadoop/hbase/client/TestHBaseAdminNoCluster.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
 <tr class="a">
+<td><a href="#org.apache.hadoop.hbase.client.TestHTableMultiplexer.java">org/apache/hadoop/hbase/client/TestHTableMultiplexer.java</a></td>
+<td>0</td>
+<td>0</td>
+<td>5</td></tr>
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestHTableMultiplexerFlushCache.java">org/apache/hadoop/hbase/client/TestHTableMultiplexerFlushCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestImmutableHTableDescriptor.java">org/apache/hadoop/hbase/client/TestImmutableHTableDescriptor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestIncrementsFromClientSide.java">org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestIntraRowPagination.java">org/apache/hadoop/hbase/client/TestIntraRowPagination.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestLeaseRenewal.java">org/apache/hadoop/hbase/client/TestLeaseRenewal.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestLimitedScanWithFilter.java">org/apache/hadoop/hbase/client/TestLimitedScanWithFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestMetaCache.java">org/apache/hadoop/hbase/client/TestMetaCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestMetricsConnection.java">org/apache/hadoop/hbase/client/TestMetricsConnection.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestMultiParallel.java">org/apache/hadoop/hbase/client/TestMultiParallel.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestMultipleTimestamps.java">org/apache/hadoop/hbase/client/TestMultipleTimestamps.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>37</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestOperation.java">org/apache/hadoop/hbase/client/TestOperation.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestPutDeleteEtcCellIteration.java">org/apache/hadoop/hbase/client/TestPutDeleteEtcCellIteration.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestPutWithDelete.java">org/apache/hadoop/hbase/client/TestPutWithDelete.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestRawAsyncTableLimitedScanWithFilter.java">org/apache/hadoop/hbase/client/TestRawAsyncTableLimitedScanWithFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestRawAsyncTableScan.java">org/apache/hadoop/hbase/client/TestRawAsyncTableScan.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestReplicaWithCluster.java">org/apache/hadoop/hbase/client/TestReplicaWithCluster.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestReplicasClient.java">org/apache/hadoop/hbase/client/TestReplicasClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestResult.java">org/apache/hadoop/hbase/client/TestResult.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestResultSizeEstimation.java">org/apache/hadoop/hbase/client/TestResultSizeEstimation.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestReversedScannerCallable.java">org/apache/hadoop/hbase/client/TestReversedScannerCallable.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestScan.java">org/apache/hadoop/hbase/client/TestScan.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestScannerTimeout.java">org/apache/hadoop/hbase/client/TestScannerTimeout.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestScannersFromClientSide.java">org/apache/hadoop/hbase/client/TestScannersFromClientSide.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>19</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestScannersFromClientSide2.java">org/apache/hadoop/hbase/client/TestScannersFromClientSide2.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestServerBusyException.java">org/apache/hadoop/hbase/client/TestServerBusyException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestSmallReversedScanner.java">org/apache/hadoop/hbase/client/TestSmallReversedScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestSnapshotCloneIndependence.java">org/apache/hadoop/hbase/client/TestSnapshotCloneIndependence.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestSnapshotFromAdmin.java">org/apache/hadoop/hbase/client/TestSnapshotFromAdmin.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestSnapshotFromClient.java">org/apache/hadoop/hbase/client/TestSnapshotFromClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestSnapshotMetadata.java">org/apache/hadoop/hbase/client/TestSnapshotMetadata.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestSplitOrMergeStatus.java">org/apache/hadoop/hbase/client/TestSplitOrMergeStatus.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestTableDescriptorBuilder.java">org/apache/hadoop/hbase/client/TestTableDescriptorBuilder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestTableFavoredNodes.java">org/apache/hadoop/hbase/client/TestTableFavoredNodes.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.TestTableSnapshotScanner.java">org/apache/hadoop/hbase/client/TestTableSnapshotScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.TestTimestampsFilter.java">org/apache/hadoop/hbase/client/TestTimestampsFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>18</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.VersionInfoUtil.java">org/apache/hadoop/hbase/client/VersionInfoUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.backoff.ClientBackoffPolicyFactory.java">org/apache/hadoop/hbase/client/backoff/ClientBackoffPolicyFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.backoff.ServerStatistics.java">org/apache/hadoop/hbase/client/backoff/ServerStatistics.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.coprocessor.BigDecimalColumnInterpreter.java">org/apache/hadoop/hbase/client/coprocessor/BigDecimalColumnInterpreter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.coprocessor.DoubleColumnInterpreter.java">org/apache/hadoop/hbase/client/coprocessor/DoubleColumnInterpreter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.coprocessor.LongColumnInterpreter.java">org/apache/hadoop/hbase/client/coprocessor/LongColumnInterpreter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.coprocessor.RowProcessorClient.java">org/apache/hadoop/hbase/client/coprocessor/RowProcessorClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.coprocessor.package-info.java">org/apache/hadoop/hbase/client/coprocessor/package-info.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.example.RefreshHFilesClient.java">org/apache/hadoop/hbase/client/example/RefreshHFilesClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>15</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.locking.EntityLock.java">org/apache/hadoop/hbase/client/locking/EntityLock.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.locking.TestEntityLocks.java">org/apache/hadoop/hbase/client/locking/TestEntityLocks.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.metrics.ScanMetrics.java">org/apache/hadoop/hbase/client/metrics/ScanMetrics.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.metrics.ServerSideScanMetrics.java">org/apache/hadoop/hbase/client/metrics/ServerSideScanMetrics.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.replication.ReplicationAdmin.java">org/apache/hadoop/hbase/client/replication/ReplicationAdmin.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>33</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.replication.ReplicationPeerConfigUtil.java">org/apache/hadoop/hbase/client/replication/ReplicationPeerConfigUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.replication.TestReplicationAdmin.java">org/apache/hadoop/hbase/client/replication/TestReplicationAdmin.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.codec.BaseDecoder.java">org/apache/hadoop/hbase/codec/BaseDecoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.codec.BaseEncoder.java">org/apache/hadoop/hbase/codec/BaseEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.codec.CellCodec.java">org/apache/hadoop/hbase/codec/CellCodec.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.codec.CellCodecWithTags.java">org/apache/hadoop/hbase/codec/CellCodecWithTags.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.codec.CodecPerformance.java">org/apache/hadoop/hbase/codec/CodecPerformance.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.codec.MessageCodec.java">org/apache/hadoop/hbase/codec/MessageCodec.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.codec.TestCellCodecWithTags.java">org/apache/hadoop/hbase/codec/TestCellCodecWithTags.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.codec.TestCellMessageCodec.java">org/apache/hadoop/hbase/codec/TestCellMessageCodec.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.codec.TestKeyValueCodecWithTags.java">org/apache/hadoop/hbase/codec/TestKeyValueCodecWithTags.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.conf.ConfigurationManager.java">org/apache/hadoop/hbase/conf/ConfigurationManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.constraint.BaseConstraint.java">org/apache/hadoop/hbase/constraint/BaseConstraint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.constraint.CheckConfigurationConstraint.java">org/apache/hadoop/hbase/constraint/CheckConfigurationConstraint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.constraint.Constraint.java">org/apache/hadoop/hbase/constraint/Constraint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.constraint.ConstraintException.java">org/apache/hadoop/hbase/constraint/ConstraintException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.constraint.ConstraintProcessor.java">org/apache/hadoop/hbase/constraint/ConstraintProcessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.constraint.Constraints.java">org/apache/hadoop/hbase/constraint/Constraints.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.constraint.TestConstraint.java">org/apache/hadoop/hbase/constraint/TestConstraint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.constraint.TestConstraints.java">org/apache/hadoop/hbase/constraint/TestConstraints.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.constraint.package-info.java">org/apache/hadoop/hbase/constraint/package-info.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>61</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coordination.SplitLogManagerCoordination.java">org/apache/hadoop/hbase/coordination/SplitLogManagerCoordination.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coordination.SplitLogWorkerCoordination.java">org/apache/hadoop/hbase/coordination/SplitLogWorkerCoordination.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coordination.ZKSplitLogManagerCoordination.java">org/apache/hadoop/hbase/coordination/ZKSplitLogManagerCoordination.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coordination.ZkCoordinatedStateManager.java">org/apache/hadoop/hbase/coordination/ZkCoordinatedStateManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coordination.ZkSplitLogWorkerCoordination.java">org/apache/hadoop/hbase/coordination/ZkSplitLogWorkerCoordination.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.BaseEnvironment.java">org/apache/hadoop/hbase/coprocessor/BaseEnvironment.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.BaseRowProcessorEndpoint.java">org/apache/hadoop/hbase/coprocessor/BaseRowProcessorEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.BulkLoadObserver.java">org/apache/hadoop/hbase/coprocessor/BulkLoadObserver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.ColumnInterpreter.java">org/apache/hadoop/hbase/coprocessor/ColumnInterpreter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>21</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.CoprocessorException.java">org/apache/hadoop/hbase/coprocessor/CoprocessorException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.CoprocessorHost.java">org/apache/hadoop/hbase/coprocessor/CoprocessorHost.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>15</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.CoprocessorService.java">org/apache/hadoop/hbase/coprocessor/CoprocessorService.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.CoprocessorServiceBackwardCompatiblity.java">org/apache/hadoop/hbase/coprocessor/CoprocessorServiceBackwardCompatiblity.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.CoreCoprocessor.java">org/apache/hadoop/hbase/coprocessor/CoreCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.EndpointObserver.java">org/apache/hadoop/hbase/coprocessor/EndpointObserver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.HasMasterServices.java">org/apache/hadoop/hbase/coprocessor/HasMasterServices.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.HasRegionServerServices.java">org/apache/hadoop/hbase/coprocessor/HasRegionServerServices.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.MasterCoprocessor.java">org/apache/hadoop/hbase/coprocessor/MasterCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.MasterObserver.java">org/apache/hadoop/hbase/coprocessor/MasterObserver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>20</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.MetricsCoprocessor.java">org/apache/hadoop/hbase/coprocessor/MetricsCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.MultiRowMutationEndpoint.java">org/apache/hadoop/hbase/coprocessor/MultiRowMutationEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.ObserverContext.java">org/apache/hadoop/hbase/coprocessor/ObserverContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.ObserverContextImpl.java">org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.RegionCoprocessor.java">org/apache/hadoop/hbase/coprocessor/RegionCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment.java">org/apache/hadoop/hbase/coprocessor/RegionCoprocessorEnvironment.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.RegionObserver.java">org/apache/hadoop/hbase/coprocessor/RegionObserver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>22</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.RegionServerCoprocessor.java">org/apache/hadoop/hbase/coprocessor/RegionServerCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.RegionServerObserver.java">org/apache/hadoop/hbase/coprocessor/RegionServerObserver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.SimpleRegionObserver.java">org/apache/hadoop/hbase/coprocessor/SimpleRegionObserver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.SingletonCoprocessorService.java">org/apache/hadoop/hbase/coprocessor/SingletonCoprocessorService.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestAsyncCoprocessorEndpoint.java">org/apache/hadoop/hbase/coprocessor/TestAsyncCoprocessorEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoprocessorInterface.java">org/apache/hadoop/hbase/coprocessor/TestCoprocessorInterface.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoprocessorMetrics.java">org/apache/hadoop/hbase/coprocessor/TestCoprocessorMetrics.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoprocessorStop.java">org/apache/hadoop/hbase/coprocessor/TestCoprocessorStop.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoreMasterCoprocessor.java">org/apache/hadoop/hbase/coprocessor/TestCoreMasterCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoreRegionCoprocessor.java">org/apache/hadoop/hbase/coprocessor/TestCoreRegionCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestCoreRegionServerCoprocessor.java">org/apache/hadoop/hbase/coprocessor/TestCoreRegionServerCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestMasterCoprocessorExceptionWithAbort.java">org/apache/hadoop/hbase/coprocessor/TestMasterCoprocessorExceptionWithAbort.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestMasterCoprocessorExceptionWithRemove.java">org/apache/hadoop/hbase/coprocessor/TestMasterCoprocessorExceptionWithRemove.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestMasterObserver.java">org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestOpenTableInCoprocessor.java">org/apache/hadoop/hbase/coprocessor/TestOpenTableInCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestRegionObserverBypass.java">org/apache/hadoop/hbase/coprocessor/TestRegionObserverBypass.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestRegionObserverForAddingMutationsFromCoprocessors.java">org/apache/hadoop/hbase/coprocessor/TestRegionObserverForAddingMutationsFromCoprocessors.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestRegionObserverInterface.java">org/apache/hadoop/hbase/coprocessor/TestRegionObserverInterface.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>26</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestRegionObserverScannerOpenHook.java">org/apache/hadoop/hbase/coprocessor/TestRegionObserverScannerOpenHook.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.TestRegionObserverStacking.java">org/apache/hadoop/hbase/coprocessor/TestRegionObserverStacking.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.WALCoprocessor.java">org/apache/hadoop/hbase/coprocessor/WALCoprocessor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.WALCoprocessorEnvironment.java">org/apache/hadoop/hbase/coprocessor/WALCoprocessorEnvironment.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.WALObserver.java">org/apache/hadoop/hbase/coprocessor/WALObserver.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.example.BulkDeleteEndpoint.java">org/apache/hadoop/hbase/coprocessor/example/BulkDeleteEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.example.ExampleMasterObserverWithMetrics.java">org/apache/hadoop/hbase/coprocessor/example/ExampleMasterObserverWithMetrics.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.example.RefreshHFilesEndpoint.java">org/apache/hadoop/hbase/coprocessor/example/RefreshHFilesEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.example.TestRefreshHFilesBase.java">org/apache/hadoop/hbase/coprocessor/example/TestRefreshHFilesBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.example.TestRefreshHFilesEndpoint.java">org/apache/hadoop/hbase/coprocessor/example/TestRefreshHFilesEndpoint.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.coprocessor.package-info.java">org/apache/hadoop/hbase/coprocessor/package-info.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.errorhandling.ForeignException.java">org/apache/hadoop/hbase/errorhandling/ForeignException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.errorhandling.ForeignExceptionDispatcher.java">org/apache/hadoop/hbase/errorhandling/ForeignExceptionDispatcher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.errorhandling.TestForeignExceptionDispatcher.java">org/apache/hadoop/hbase/errorhandling/TestForeignExceptionDispatcher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.errorhandling.TestForeignExceptionSerialization.java">org/apache/hadoop/hbase/errorhandling/TestForeignExceptionSerialization.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.errorhandling.TimeoutExceptionInjector.java">org/apache/hadoop/hbase/errorhandling/TimeoutExceptionInjector.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.exceptions.ClientExceptionsUtil.java">org/apache/hadoop/hbase/exceptions/ClientExceptionsUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.exceptions.FailedSanityCheckException.java">org/apache/hadoop/hbase/exceptions/FailedSanityCheckException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.exceptions.MergeRegionException.java">org/apache/hadoop/hbase/exceptions/MergeRegionException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.exceptions.TestClientExceptionsUtil.java">org/apache/hadoop/hbase/exceptions/TestClientExceptionsUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.executor.EventHandler.java">org/apache/hadoop/hbase/executor/EventHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.executor.EventType.java">org/apache/hadoop/hbase/executor/EventType.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>38</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.executor.ExecutorService.java">org/apache/hadoop/hbase/executor/ExecutorService.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.executor.ExecutorType.java">org/apache/hadoop/hbase/executor/ExecutorType.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>18</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.favored.FavoredNodeAssignmentHelper.java">org/apache/hadoop/hbase/favored/FavoredNodeAssignmentHelper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>25</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.favored.FavoredNodeLoadBalancer.java">org/apache/hadoop/hbase/favored/FavoredNodeLoadBalancer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.favored.FavoredNodesPlan.java">org/apache/hadoop/hbase/favored/FavoredNodesPlan.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.favored.FavoredNodesPromoter.java">org/apache/hadoop/hbase/favored/FavoredNodesPromoter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.favored.StartcodeAgnosticServerName.java">org/apache/hadoop/hbase/favored/StartcodeAgnosticServerName.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.favored.TestFavoredNodeAssignmentHelper.java">org/apache/hadoop/hbase/favored/TestFavoredNodeAssignmentHelper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.BigDecimalComparator.java">org/apache/hadoop/hbase/filter/BigDecimalComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.BinaryComparator.java">org/apache/hadoop/hbase/filter/BinaryComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.BinaryPrefixComparator.java">org/apache/hadoop/hbase/filter/BinaryPrefixComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.BitComparator.java">org/apache/hadoop/hbase/filter/BitComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.ByteArrayComparable.java">org/apache/hadoop/hbase/filter/ByteArrayComparable.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.ColumnCountGetFilter.java">org/apache/hadoop/hbase/filter/ColumnCountGetFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.ColumnPaginationFilter.java">org/apache/hadoop/hbase/filter/ColumnPaginationFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.ColumnPrefixFilter.java">org/apache/hadoop/hbase/filter/ColumnPrefixFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.ColumnRangeFilter.java">org/apache/hadoop/hbase/filter/ColumnRangeFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.CompareFilter.java">org/apache/hadoop/hbase/filter/CompareFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>24</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.DependentColumnFilter.java">org/apache/hadoop/hbase/filter/DependentColumnFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.FamilyFilter.java">org/apache/hadoop/hbase/filter/FamilyFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.Filter.java">org/apache/hadoop/hbase/filter/Filter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.FilterAllFilter.java">org/apache/hadoop/hbase/filter/FilterAllFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.FilterBase.java">org/apache/hadoop/hbase/filter/FilterBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.FilterList.java">org/apache/hadoop/hbase/filter/FilterList.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.FilterListBase.java">org/apache/hadoop/hbase/filter/FilterListBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.FilterListWithAND.java">org/apache/hadoop/hbase/filter/FilterListWithAND.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.FilterListWithOR.java">org/apache/hadoop/hbase/filter/FilterListWithOR.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>93</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.FilterTestingCluster.java">org/apache/hadoop/hbase/filter/FilterTestingCluster.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.FilterWrapper.java">org/apache/hadoop/hbase/filter/FilterWrapper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.FirstKeyOnlyFilter.java">org/apache/hadoop/hbase/filter/FirstKeyOnlyFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.FirstKeyValueMatchingQualifiersFilter.java">org/apache/hadoop/hbase/filter/FirstKeyValueMatchingQualifiersFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.FuzzyRowFilter.java">org/apache/hadoop/hbase/filter/FuzzyRowFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>20</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.InclusiveStopFilter.java">org/apache/hadoop/hbase/filter/InclusiveStopFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.KeyOnlyFilter.java">org/apache/hadoop/hbase/filter/KeyOnlyFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.LongComparator.java">org/apache/hadoop/hbase/filter/LongComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>25</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.MultiRowRangeFilter.java">org/apache/hadoop/hbase/filter/MultiRowRangeFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.MultipleColumnPrefixFilter.java">org/apache/hadoop/hbase/filter/MultipleColumnPrefixFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>15</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.NullComparator.java">org/apache/hadoop/hbase/filter/NullComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.PageFilter.java">org/apache/hadoop/hbase/filter/PageFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.ParseConstants.java">org/apache/hadoop/hbase/filter/ParseConstants.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.ParseFilter.java">org/apache/hadoop/hbase/filter/ParseFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>47</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.PrefixFilter.java">org/apache/hadoop/hbase/filter/PrefixFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.QualifierFilter.java">org/apache/hadoop/hbase/filter/QualifierFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.RandomRowFilter.java">org/apache/hadoop/hbase/filter/RandomRowFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.RegexStringComparator.java">org/apache/hadoop/hbase/filter/RegexStringComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.RowFilter.java">org/apache/hadoop/hbase/filter/RowFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.SingleColumnValueExcludeFilter.java">org/apache/hadoop/hbase/filter/SingleColumnValueExcludeFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>23</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.SingleColumnValueFilter.java">org/apache/hadoop/hbase/filter/SingleColumnValueFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>23</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.SkipFilter.java">org/apache/hadoop/hbase/filter/SkipFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.SubstringComparator.java">org/apache/hadoop/hbase/filter/SubstringComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestColumnPaginationFilter.java">org/apache/hadoop/hbase/filter/TestColumnPaginationFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>40</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestColumnPrefixFilter.java">org/apache/hadoop/hbase/filter/TestColumnPrefixFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestColumnRangeFilter.java">org/apache/hadoop/hbase/filter/TestColumnRangeFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestComparators.java">org/apache/hadoop/hbase/filter/TestComparators.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestDependentColumnFilter.java">org/apache/hadoop/hbase/filter/TestDependentColumnFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFilter.java">org/apache/hadoop/hbase/filter/TestFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>352</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFilterList.java">org/apache/hadoop/hbase/filter/TestFilterList.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>19</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFilterListOnMini.java">org/apache/hadoop/hbase/filter/TestFilterListOnMini.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFilterListOrOperatorWithBlkCnt.java">org/apache/hadoop/hbase/filter/TestFilterListOrOperatorWithBlkCnt.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFilterSerialization.java">org/apache/hadoop/hbase/filter/TestFilterSerialization.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFilterWithScanLimits.java">org/apache/hadoop/hbase/filter/TestFilterWithScanLimits.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFilterWrapper.java">org/apache/hadoop/hbase/filter/TestFilterWrapper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFirstKeyValueMatchingQualifiersFilter.java">org/apache/hadoop/hbase/filter/TestFirstKeyValueMatchingQualifiersFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFuzzyRowAndColumnRangeFilter.java">org/apache/hadoop/hbase/filter/TestFuzzyRowAndColumnRangeFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestFuzzyRowFilterEndToEnd.java">org/apache/hadoop/hbase/filter/TestFuzzyRowFilterEndToEnd.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestInclusiveStopFilter.java">org/apache/hadoop/hbase/filter/TestInclusiveStopFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestLongComparator.java">org/apache/hadoop/hbase/filter/TestLongComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestMultiRowRangeFilter.java">org/apache/hadoop/hbase/filter/TestMultiRowRangeFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestMultipleColumnPrefixFilter.java">org/apache/hadoop/hbase/filter/TestMultipleColumnPrefixFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestNullComparator.java">org/apache/hadoop/hbase/filter/TestNullComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestPageFilter.java">org/apache/hadoop/hbase/filter/TestPageFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestPrefixFilter.java">org/apache/hadoop/hbase/filter/TestPrefixFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestRandomRowFilter.java">org/apache/hadoop/hbase/filter/TestRandomRowFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestRegexComparator.java">org/apache/hadoop/hbase/filter/TestRegexComparator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestScanRowPrefix.java">org/apache/hadoop/hbase/filter/TestScanRowPrefix.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TestSingleColumnValueExcludeFilter.java">org/apache/hadoop/hbase/filter/TestSingleColumnValueExcludeFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.TestSingleColumnValueFilter.java">org/apache/hadoop/hbase/filter/TestSingleColumnValueFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.TimestampsFilter.java">org/apache/hadoop/hbase/filter/TimestampsFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.filter.ValueFilter.java">org/apache/hadoop/hbase/filter/ValueFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.filter.WhileMatchFilter.java">org/apache/hadoop/hbase/filter/WhileMatchFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.fs.HFileSystem.java">org/apache/hadoop/hbase/fs/HFileSystem.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.fs.TestBlockReorderBlockLocation.java">org/apache/hadoop/hbase/fs/TestBlockReorderBlockLocation.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.fs.TestBlockReorderMultiBlocks.java">org/apache/hadoop/hbase/fs/TestBlockReorderMultiBlocks.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.ClickjackingPreventionFilter.java">org/apache/hadoop/hbase/http/ClickjackingPreventionFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.HtmlQuoting.java">org/apache/hadoop/hbase/http/HtmlQuoting.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>16</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.HttpConfig.java">org/apache/hadoop/hbase/http/HttpConfig.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.HttpRequestLogAppender.java">org/apache/hadoop/hbase/http/HttpRequestLogAppender.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.HttpServer.java">org/apache/hadoop/hbase/http/HttpServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>38</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.HttpServerFunctionalTest.java">org/apache/hadoop/hbase/http/HttpServerFunctionalTest.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.InfoServer.java">org/apache/hadoop/hbase/http/InfoServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>12</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.NoCacheFilter.java">org/apache/hadoop/hbase/http/NoCacheFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.TestGlobalFilter.java">org/apache/hadoop/hbase/http/TestGlobalFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.TestHtmlQuoting.java">org/apache/hadoop/hbase/http/TestHtmlQuoting.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.TestHttpServer.java">org/apache/hadoop/hbase/http/TestHttpServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.TestPathFilter.java">org/apache/hadoop/hbase/http/TestPathFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.TestServletFilter.java">org/apache/hadoop/hbase/http/TestServletFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.TestSpnegoHttpServer.java">org/apache/hadoop/hbase/http/TestSpnegoHttpServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>18</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.conf.ConfServlet.java">org/apache/hadoop/hbase/http/conf/ConfServlet.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.jmx.JMXJsonServlet.java">org/apache/hadoop/hbase/http/jmx/JMXJsonServlet.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.log.LogLevel.java">org/apache/hadoop/hbase/http/log/LogLevel.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.log.TestLogLevel.java">org/apache/hadoop/hbase/http/log/TestLogLevel.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.http.resource.JerseyResource.java">org/apache/hadoop/hbase/http/resource/JerseyResource.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.http.ssl.KeyStoreTestUtil.java">org/apache/hadoop/hbase/http/ssl/KeyStoreTestUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.ByteBuffInputStream.java">org/apache/hadoop/hbase/io/ByteBuffInputStream.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.ByteBufferOutputStream.java">org/apache/hadoop/hbase/io/ByteBufferOutputStream.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.CellOutputStream.java">org/apache/hadoop/hbase/io/CellOutputStream.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.FSDataInputStreamWrapper.java">org/apache/hadoop/hbase/io/FSDataInputStreamWrapper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.FileLink.java">org/apache/hadoop/hbase/io/FileLink.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.HFileLink.java">org/apache/hadoop/hbase/io/HFileLink.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.HalfStoreFileReader.java">org/apache/hadoop/hbase/io/HalfStoreFileReader.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>15</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.HeapSize.java">org/apache/hadoop/hbase/io/HeapSize.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.ImmutableBytesWritable.java">org/apache/hadoop/hbase/io/ImmutableBytesWritable.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.Reference.java">org/apache/hadoop/hbase/io/Reference.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>19</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.TagCompressionContext.java">org/apache/hadoop/hbase/io/TagCompressionContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.TestByteBufferOutputStream.java">org/apache/hadoop/hbase/io/TestByteBufferOutputStream.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.TestFileLink.java">org/apache/hadoop/hbase/io/TestFileLink.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.TestHFileLink.java">org/apache/hadoop/hbase/io/TestHFileLink.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.TestHalfStoreFileReader.java">org/apache/hadoop/hbase/io/TestHalfStoreFileReader.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.TestHeapSize.java">org/apache/hadoop/hbase/io/TestHeapSize.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.TestImmutableBytesWritable.java">org/apache/hadoop/hbase/io/TestImmutableBytesWritable.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.TestMetricsIO.java">org/apache/hadoop/hbase/io/TestMetricsIO.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.TimeRange.java">org/apache/hadoop/hbase/io/TimeRange.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>7</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.WALLink.java">org/apache/hadoop/hbase/io/WALLink.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.asyncfs.AsyncFSOutput.java">org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutputHelper.java">org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.compress.Compression.java">org/apache/hadoop/hbase/io/compress/Compression.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.Cipher.java">org/apache/hadoop/hbase/io/crypto/Cipher.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.Decryptor.java">org/apache/hadoop/hbase/io/crypto/Decryptor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.Encryption.java">org/apache/hadoop/hbase/io/crypto/Encryption.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>52</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.Encryptor.java">org/apache/hadoop/hbase/io/crypto/Encryptor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.KeyProvider.java">org/apache/hadoop/hbase/io/crypto/KeyProvider.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.TestEncryption.java">org/apache/hadoop/hbase/io/crypto/TestEncryption.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.crypto.aes.CryptoAES.java">org/apache/hadoop/hbase/io/crypto/aes/CryptoAES.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.BufferedDataBlockEncoder.java">org/apache/hadoop/hbase/io/encoding/BufferedDataBlockEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.CopyKeyDataBlockEncoder.java">org/apache/hadoop/hbase/io/encoding/CopyKeyDataBlockEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.DataBlockEncoder.java">org/apache/hadoop/hbase/io/encoding/DataBlockEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>15</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.DataBlockEncoding.java">org/apache/hadoop/hbase/io/encoding/DataBlockEncoding.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.EncodedDataBlock.java">org/apache/hadoop/hbase/io/encoding/EncodedDataBlock.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.HFileBlockDecodingContext.java">org/apache/hadoop/hbase/io/encoding/HFileBlockDecodingContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.HFileBlockDefaultEncodingContext.java">org/apache/hadoop/hbase/io/encoding/HFileBlockDefaultEncodingContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.HFileBlockEncodingContext.java">org/apache/hadoop/hbase/io/encoding/HFileBlockEncodingContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.RowIndexCodecV1.java">org/apache/hadoop/hbase/io/encoding/RowIndexCodecV1.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.TestDataBlockEncoders.java">org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.encoding.TestEncodedSeekers.java">org/apache/hadoop/hbase/io/encoding/TestEncodedSeekers.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hadoopbackport.ThrottledInputStream.java">org/apache/hadoop/hbase/io/hadoopbackport/ThrottledInputStream.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.BlockCache.java">org/apache/hadoop/hbase/io/hfile/BlockCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.BlockCacheKey.java">org/apache/hadoop/hbase/io/hfile/BlockCacheKey.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.BlockCacheUtil.java">org/apache/hadoop/hbase/io/hfile/BlockCacheUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>28</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.BlockCachesIterator.java">org/apache/hadoop/hbase/io/hfile/BlockCachesIterator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.BlockType.java">org/apache/hadoop/hbase/io/hfile/BlockType.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CacheConfig.java">org/apache/hadoop/hbase/io/hfile/CacheConfig.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CacheStats.java">org/apache/hadoop/hbase/io/hfile/CacheStats.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CacheTestUtils.java">org/apache/hadoop/hbase/io/hfile/CacheTestUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.Cacheable.java">org/apache/hadoop/hbase/io/hfile/Cacheable.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CacheableDeserializer.java">org/apache/hadoop/hbase/io/hfile/CacheableDeserializer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CacheableDeserializerIdManager.java">org/apache/hadoop/hbase/io/hfile/CacheableDeserializerIdManager.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.ChecksumUtil.java">org/apache/hadoop/hbase/io/hfile/ChecksumUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CombinedBlockCache.java">org/apache/hadoop/hbase/io/hfile/CombinedBlockCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CompoundBloomFilter.java">org/apache/hadoop/hbase/io/hfile/CompoundBloomFilter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CompoundBloomFilterBase.java">org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterBase.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CompoundBloomFilterWriter.java">org/apache/hadoop/hbase/io/hfile/CompoundBloomFilterWriter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.CorruptHFileException.java">org/apache/hadoop/hbase/io/hfile/CorruptHFileException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.FixedFileTrailer.java">org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFile.java">org/apache/hadoop/hbase/io/hfile/HFile.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>36</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileBlock.java">org/apache/hadoop/hbase/io/hfile/HFileBlock.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>25</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileBlockIndex.java">org/apache/hadoop/hbase/io/hfile/HFileBlockIndex.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>39</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileContext.java">org/apache/hadoop/hbase/io/hfile/HFileContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoder.java">org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoderImpl.java">org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoderImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFilePrettyPrinter.java">org/apache/hadoop/hbase/io/hfile/HFilePrettyPrinter.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileReaderImpl.java">org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>26</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileScanner.java">org/apache/hadoop/hbase/io/hfile/HFileScanner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>23</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileUtil.java">org/apache/hadoop/hbase/io/hfile/HFileUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.HFileWriterImpl.java">org/apache/hadoop/hbase/io/hfile/HFileWriterImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>26</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.KVGenerator.java">org/apache/hadoop/hbase/io/hfile/KVGenerator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.LruBlockCache.java">org/apache/hadoop/hbase/io/hfile/LruBlockCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.LruCachedBlock.java">org/apache/hadoop/hbase/io/hfile/LruCachedBlock.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.LruCachedBlockQueue.java">org/apache/hadoop/hbase/io/hfile/LruCachedBlockQueue.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.NanoTimer.java">org/apache/hadoop/hbase/io/hfile/NanoTimer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.NoOpDataBlockEncoder.java">org/apache/hadoop/hbase/io/hfile/NoOpDataBlockEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.PrefetchExecutor.java">org/apache/hadoop/hbase/io/hfile/PrefetchExecutor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.RandomKeyValueUtil.java">org/apache/hadoop/hbase/io/hfile/RandomKeyValueUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>13</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestCacheConfig.java">org/apache/hadoop/hbase/io/hfile/TestCacheConfig.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestCacheOnWrite.java">org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestCachedBlockQueue.java">org/apache/hadoop/hbase/io/hfile/TestCachedBlockQueue.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestChecksum.java">org/apache/hadoop/hbase/io/hfile/TestChecksum.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestFixedFileTrailer.java">org/apache/hadoop/hbase/io/hfile/TestFixedFileTrailer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestForceCacheImportantBlocks.java">org/apache/hadoop/hbase/io/hfile/TestForceCacheImportantBlocks.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestHFile.java">org/apache/hadoop/hbase/io/hfile/TestHFile.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>21</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestHFileBlock.java">org/apache/hadoop/hbase/io/hfile/TestHFileBlock.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestHFileBlockIndex.java">org/apache/hadoop/hbase/io/hfile/TestHFileBlockIndex.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestHFileBlockPositionalRead.java">org/apache/hadoop/hbase/io/hfile/TestHFileBlockPositionalRead.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestHFileDataBlockEncoder.java">org/apache/hadoop/hbase/io/hfile/TestHFileDataBlockEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestHFileWriterV3.java">org/apache/hadoop/hbase/io/hfile/TestHFileWriterV3.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestLruBlockCache.java">org/apache/hadoop/hbase/io/hfile/TestLruBlockCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestPrefetch.java">org/apache/hadoop/hbase/io/hfile/TestPrefetch.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.TestScannerSelectionUsingKeyRange.java">org/apache/hadoop/hbase/io/hfile/TestScannerSelectionUsingKeyRange.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.BucketAllocator.java">org/apache/hadoop/hbase/io/hfile/bucket/BucketAllocator.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>33</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.BucketCache.java">org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>30</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.BucketCacheStats.java">org/apache/hadoop/hbase/io/hfile/bucket/BucketCacheStats.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.ByteBufferIOEngine.java">org/apache/hadoop/hbase/io/hfile/bucket/ByteBufferIOEngine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.CachedEntryQueue.java">org/apache/hadoop/hbase/io/hfile/bucket/CachedEntryQueue.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.FileIOEngine.java">org/apache/hadoop/hbase/io/hfile/bucket/FileIOEngine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.FileMmapEngine.java">org/apache/hadoop/hbase/io/hfile/bucket/FileMmapEngine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.IOEngine.java">org/apache/hadoop/hbase/io/hfile/bucket/IOEngine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.TestBucketCache.java">org/apache/hadoop/hbase/io/hfile/bucket/TestBucketCache.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>15</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.TestBucketWriterThread.java">org/apache/hadoop/hbase/io/hfile/bucket/TestBucketWriterThread.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>11</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.hfile.bucket.TestFileIOEngine.java">org/apache/hadoop/hbase/io/hfile/bucket/TestFileIOEngine.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.util.Dictionary.java">org/apache/hadoop/hbase/io/util/Dictionary.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.util.LRUDictionary.java">org/apache/hadoop/hbase/io/util/LRUDictionary.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.io.util.MemorySizeUtil.java">org/apache/hadoop/hbase/io/util/MemorySizeUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.io.util.StreamUtils.java">org/apache/hadoop/hbase/io/util/StreamUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.AbstractRpcClient.java">org/apache/hadoop/hbase/ipc/AbstractRpcClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.AbstractTestIPC.java">org/apache/hadoop/hbase/ipc/AbstractTestIPC.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.AdaptiveLifoCoDelCallQueue.java">org/apache/hadoop/hbase/ipc/AdaptiveLifoCoDelCallQueue.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.BlockingRpcCallback.java">org/apache/hadoop/hbase/ipc/BlockingRpcCallback.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.BlockingRpcClient.java">org/apache/hadoop/hbase/ipc/BlockingRpcClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.BlockingRpcConnection.java">org/apache/hadoop/hbase/ipc/BlockingRpcConnection.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.BufferCallBeforeInitHandler.java">org/apache/hadoop/hbase/ipc/BufferCallBeforeInitHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.BufferChain.java">org/apache/hadoop/hbase/ipc/BufferChain.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.Call.java">org/apache/hadoop/hbase/ipc/Call.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.CallQueueInfo.java">org/apache/hadoop/hbase/ipc/CallQueueInfo.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.CallRunner.java">org/apache/hadoop/hbase/ipc/CallRunner.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.CellBlockBuilder.java">org/apache/hadoop/hbase/ipc/CellBlockBuilder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>6</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.CoprocessorRpcUtils.java">org/apache/hadoop/hbase/ipc/CoprocessorRpcUtils.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>9</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.DefaultNettyEventLoopConfig.java">org/apache/hadoop/hbase/ipc/DefaultNettyEventLoopConfig.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.DelegatingHBaseRpcController.java">org/apache/hadoop/hbase/ipc/DelegatingHBaseRpcController.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.FailedServers.java">org/apache/hadoop/hbase/ipc/FailedServers.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.HBaseRpcController.java">org/apache/hadoop/hbase/ipc/HBaseRpcController.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.HBaseRpcControllerImpl.java">org/apache/hadoop/hbase/ipc/HBaseRpcControllerImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.IPCUtil.java">org/apache/hadoop/hbase/ipc/IPCUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.IntegrationTestRpcClient.java">org/apache/hadoop/hbase/ipc/IntegrationTestRpcClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.MetricsHBaseServer.java">org/apache/hadoop/hbase/ipc/MetricsHBaseServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.NettyRpcClient.java">org/apache/hadoop/hbase/ipc/NettyRpcClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.NettyRpcClientConfigHelper.java">org/apache/hadoop/hbase/ipc/NettyRpcClientConfigHelper.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.NettyRpcConnection.java">org/apache/hadoop/hbase/ipc/NettyRpcConnection.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.NettyRpcDuplexHandler.java">org/apache/hadoop/hbase/ipc/NettyRpcDuplexHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.NettyRpcServer.java">org/apache/hadoop/hbase/ipc/NettyRpcServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.NettyRpcServerPreambleHandler.java">org/apache/hadoop/hbase/ipc/NettyRpcServerPreambleHandler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.NettyRpcServerRequestDecoder.java">org/apache/hadoop/hbase/ipc/NettyRpcServerRequestDecoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.NettyRpcServerResponseEncoder.java">org/apache/hadoop/hbase/ipc/NettyRpcServerResponseEncoder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.NettyServerCall.java">org/apache/hadoop/hbase/ipc/NettyServerCall.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.NettyServerRpcConnection.java">org/apache/hadoop/hbase/ipc/NettyServerRpcConnection.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.PriorityFunction.java">org/apache/hadoop/hbase/ipc/PriorityFunction.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.RWQueueRpcExecutor.java">org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.RemoteWithExtrasException.java">org/apache/hadoop/hbase/ipc/RemoteWithExtrasException.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.RpcCall.java">org/apache/hadoop/hbase/ipc/RpcCall.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.RpcCallContext.java">org/apache/hadoop/hbase/ipc/RpcCallContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.RpcClient.java">org/apache/hadoop/hbase/ipc/RpcClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.RpcClientFactory.java">org/apache/hadoop/hbase/ipc/RpcClientFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.RpcConnection.java">org/apache/hadoop/hbase/ipc/RpcConnection.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>4</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.RpcControllerFactory.java">org/apache/hadoop/hbase/ipc/RpcControllerFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.RpcExecutor.java">org/apache/hadoop/hbase/ipc/RpcExecutor.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>14</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.RpcScheduler.java">org/apache/hadoop/hbase/ipc/RpcScheduler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.RpcSchedulerContext.java">org/apache/hadoop/hbase/ipc/RpcSchedulerContext.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.RpcServer.java">org/apache/hadoop/hbase/ipc/RpcServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.RpcServerFactory.java">org/apache/hadoop/hbase/ipc/RpcServerFactory.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.RpcServerInterface.java">org/apache/hadoop/hbase/ipc/RpcServerInterface.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.ServerCall.java">org/apache/hadoop/hbase/ipc/ServerCall.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.ServerRpcConnection.java">org/apache/hadoop/hbase/ipc/ServerRpcConnection.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>23</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.ServerRpcController.java">org/apache/hadoop/hbase/ipc/ServerRpcController.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.SimpleRpcScheduler.java">org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.SimpleRpcServer.java">org/apache/hadoop/hbase/ipc/SimpleRpcServer.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>15</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.SimpleRpcServerResponder.java">org/apache/hadoop/hbase/ipc/SimpleRpcServerResponder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.SimpleServerCall.java">org/apache/hadoop/hbase/ipc/SimpleServerCall.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.SimpleServerRpcConnection.java">org/apache/hadoop/hbase/ipc/SimpleServerRpcConnection.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.TestBufferChain.java">org/apache/hadoop/hbase/ipc/TestBufferChain.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.TestCellBlockBuilder.java">org/apache/hadoop/hbase/ipc/TestCellBlockBuilder.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>3</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.TestFifoRpcScheduler.java">org/apache/hadoop/hbase/ipc/TestFifoRpcScheduler.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.TestHBaseClient.java">org/apache/hadoop/hbase/ipc/TestHBaseClient.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>41</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.TestHBaseRpcControllerImpl.java">org/apache/hadoop/hbase/ipc/TestHBaseRpcControllerImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.TestProtobufRpcServiceImpl.java">org/apache/hadoop/hbase/ipc/TestProtobufRpcServiceImpl.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
+<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.TestRpcMetrics.java">org/apache/hadoop/hbase/ipc/TestRpcMetrics.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>10</td></tr>
-<tr class="b">
+<tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.TestSimpleRpcScheduler.java">org/apache/hadoop/hbase/i

<TRUNCATED>

[04/29] hbase-site git commit: Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsStoreScanner.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsStoreScanner.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsStoreScanner.html
index 5982fda..5fda559 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsStoreScanner.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsStoreScanner.html
@@ -178,807 +178,813 @@
 <span class="sourceLineNo">170</span>      if (count == null) {<a name="line.170"></a>
 <span class="sourceLineNo">171</span>        count = new AtomicInteger(0);<a name="line.171"></a>
 <span class="sourceLineNo">172</span>      }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      heap = new KeyValueHeapWithCount(scanners, comparator, count);<a name="line.173"></a>
+<span class="sourceLineNo">173</span>      heap = newKVHeap(scanners, comparator);<a name="line.173"></a>
 <span class="sourceLineNo">174</span>    }<a name="line.174"></a>
 <span class="sourceLineNo">175</span><a name="line.175"></a>
 <span class="sourceLineNo">176</span>    @Override<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    protected boolean trySkipToNextRow(Cell cell) throws IOException {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      boolean optimized = super.trySkipToNextRow(cell);<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.179"></a>
-<span class="sourceLineNo">180</span>          + ", optimized=" + optimized);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      if (optimized) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        optimization.incrementAndGet();<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      }<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      return optimized;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>    @Override<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.190"></a>
-<span class="sourceLineNo">191</span>          + ", optimized=" + optimized);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      if (optimized) {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        optimization.incrementAndGet();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      }<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      return optimized;<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 Cell getNextIndexedKey() {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      // Fake block boundaries by having index of next block change as we go through scan.<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      return count.get() &gt; CELL_GRID_BLOCK4_BOUNDARY?<a name="line.201"></a>
-<span class="sourceLineNo">202</span>          PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK5_BOUNDARY]):<a name="line.202"></a>
-<span class="sourceLineNo">203</span>            count.get() &gt; CELL_GRID_BLOCK3_BOUNDARY?<a name="line.203"></a>
-<span class="sourceLineNo">204</span>                PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK4_BOUNDARY]):<a name="line.204"></a>
-<span class="sourceLineNo">205</span>                  count.get() &gt; CELL_GRID_BLOCK2_BOUNDARY?<a name="line.205"></a>
-<span class="sourceLineNo">206</span>                      PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK3_BOUNDARY]):<a name="line.206"></a>
-<span class="sourceLineNo">207</span>                        PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK2_BOUNDARY]);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    }<a name="line.208"></a>
-<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
-<span class="sourceLineNo">210</span><a name="line.210"></a>
-<span class="sourceLineNo">211</span>  private static final int CELL_WITH_VERSIONS_BLOCK2_BOUNDARY = 4;<a name="line.211"></a>
-<span class="sourceLineNo">212</span><a name="line.212"></a>
-<span class="sourceLineNo">213</span>  private static final Cell[] CELL_WITH_VERSIONS = new Cell [] {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    createCell(ONE, CF, ONE, 2L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    createCell(ONE, CF, ONE, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    createCell(ONE, CF, TWO, 2L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    createCell(ONE, CF, TWO, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    // Offset 4 CELL_WITH_VERSIONS_BLOCK2_BOUNDARY<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    createCell(TWO, CF, ONE, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    createCell(TWO, CF, TWO, 1L, KeyValue.Type.Put.getCode(), VALUE),<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>  private static class CellWithVersionsStoreScanner extends StoreScanner {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    // Count of how often optimize is called and of how often it does an optimize.<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    final AtomicInteger optimization = new AtomicInteger(0);<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>    CellWithVersionsStoreScanner(final Scan scan, ScanInfo scanInfo) throws IOException {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      super(scan, scanInfo, scan.getFamilyMap().get(CF),<a name="line.228"></a>
-<span class="sourceLineNo">229</span>          Arrays.&lt;KeyValueScanner&gt; asList(new KeyValueScanner[] {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>              new KeyValueScanFixture(CellComparator.getInstance(), CELL_WITH_VERSIONS) }));<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    }<a name="line.231"></a>
+<span class="sourceLineNo">177</span>    protected KeyValueHeap newKVHeap(List&lt;? extends KeyValueScanner&gt; scanners,<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        CellComparator comparator) throws IOException {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      return new KeyValueHeapWithCount(scanners, comparator, count);<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>    protected boolean trySkipToNextRow(Cell cell) throws IOException {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      boolean optimized = super.trySkipToNextRow(cell);<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.185"></a>
+<span class="sourceLineNo">186</span>          + ", optimized=" + optimized);<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      if (optimized) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>        optimization.incrementAndGet();<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      return optimized;<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>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.196"></a>
+<span class="sourceLineNo">197</span>          + ", optimized=" + optimized);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      if (optimized) {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>        optimization.incrementAndGet();<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      }<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      return optimized;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    }<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>    @Override<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    public Cell getNextIndexedKey() {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      // Fake block boundaries by having index of next block change as we go through scan.<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      return count.get() &gt; CELL_GRID_BLOCK4_BOUNDARY?<a name="line.207"></a>
+<span class="sourceLineNo">208</span>          PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK5_BOUNDARY]):<a name="line.208"></a>
+<span class="sourceLineNo">209</span>            count.get() &gt; CELL_GRID_BLOCK3_BOUNDARY?<a name="line.209"></a>
+<span class="sourceLineNo">210</span>                PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK4_BOUNDARY]):<a name="line.210"></a>
+<span class="sourceLineNo">211</span>                  count.get() &gt; CELL_GRID_BLOCK2_BOUNDARY?<a name="line.211"></a>
+<span class="sourceLineNo">212</span>                      PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK3_BOUNDARY]):<a name="line.212"></a>
+<span class="sourceLineNo">213</span>                        PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK2_BOUNDARY]);<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>  private static final int CELL_WITH_VERSIONS_BLOCK2_BOUNDARY = 4;<a name="line.217"></a>
+<span class="sourceLineNo">218</span><a name="line.218"></a>
+<span class="sourceLineNo">219</span>  private static final Cell[] CELL_WITH_VERSIONS = new Cell [] {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    createCell(ONE, CF, ONE, 2L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    createCell(ONE, CF, ONE, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    createCell(ONE, CF, TWO, 2L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    createCell(ONE, CF, TWO, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    // Offset 4 CELL_WITH_VERSIONS_BLOCK2_BOUNDARY<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    createCell(TWO, CF, ONE, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    createCell(TWO, CF, TWO, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  };<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>  private static class CellWithVersionsStoreScanner extends StoreScanner {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    // Count of how often optimize is called and of how often it does an optimize.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    final AtomicInteger optimization = new AtomicInteger(0);<a name="line.231"></a>
 <span class="sourceLineNo">232</span><a name="line.232"></a>
-<span class="sourceLineNo">233</span>    @Override<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.236"></a>
-<span class="sourceLineNo">237</span>          + ", optimized=" + optimized);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      if (optimized) {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        optimization.incrementAndGet();<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      }<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      return optimized;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    }<a name="line.242"></a>
-<span class="sourceLineNo">243</span><a name="line.243"></a>
-<span class="sourceLineNo">244</span>    @Override<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    public Cell getNextIndexedKey() {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      // Fake block boundaries by having index of next block change as we go through scan.<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      return PrivateCellUtil<a name="line.247"></a>
-<span class="sourceLineNo">248</span>          .createFirstOnRow(CELL_WITH_VERSIONS[CELL_WITH_VERSIONS_BLOCK2_BOUNDARY]);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  private static class CellWithVersionsNoOptimizeStoreScanner extends StoreScanner {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    // Count of how often optimize is called and of how often it does an optimize.<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    final AtomicInteger optimization = new AtomicInteger(0);<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>    CellWithVersionsNoOptimizeStoreScanner(Scan scan, ScanInfo scanInfo) throws IOException {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      super(scan, scanInfo, scan.getFamilyMap().get(CF),<a name="line.257"></a>
-<span class="sourceLineNo">258</span>          Arrays.&lt;KeyValueScanner&gt; asList(new KeyValueScanner[] {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>              new KeyValueScanFixture(CellComparator.getInstance(), CELL_WITH_VERSIONS) }));<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    }<a name="line.260"></a>
+<span class="sourceLineNo">233</span>    CellWithVersionsStoreScanner(final Scan scan, ScanInfo scanInfo) throws IOException {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      super(scan, scanInfo, scan.getFamilyMap().get(CF),<a name="line.234"></a>
+<span class="sourceLineNo">235</span>          Arrays.&lt;KeyValueScanner&gt; asList(new KeyValueScanner[] {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>              new KeyValueScanFixture(CellComparator.getInstance(), CELL_WITH_VERSIONS) }));<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    }<a name="line.237"></a>
+<span class="sourceLineNo">238</span><a name="line.238"></a>
+<span class="sourceLineNo">239</span>    @Override<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.242"></a>
+<span class="sourceLineNo">243</span>          + ", optimized=" + optimized);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      if (optimized) {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        optimization.incrementAndGet();<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      }<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      return optimized;<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    }<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>    @Override<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    public Cell getNextIndexedKey() {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      // Fake block boundaries by having index of next block change as we go through scan.<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      return PrivateCellUtil<a name="line.253"></a>
+<span class="sourceLineNo">254</span>          .createFirstOnRow(CELL_WITH_VERSIONS[CELL_WITH_VERSIONS_BLOCK2_BOUNDARY]);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>  }<a name="line.256"></a>
+<span class="sourceLineNo">257</span><a name="line.257"></a>
+<span class="sourceLineNo">258</span>  private static class CellWithVersionsNoOptimizeStoreScanner extends StoreScanner {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    // Count of how often optimize is called and of how often it does an optimize.<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    final AtomicInteger optimization = new AtomicInteger(0);<a name="line.260"></a>
 <span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>    @Override<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.265"></a>
-<span class="sourceLineNo">266</span>          + ", optimized=" + optimized);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      if (optimized) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        optimization.incrementAndGet();<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      }<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      return optimized;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    }<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>    @Override<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    public Cell getNextIndexedKey() {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      return null;<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">262</span>    CellWithVersionsNoOptimizeStoreScanner(Scan scan, ScanInfo scanInfo) throws IOException {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      super(scan, scanInfo, scan.getFamilyMap().get(CF),<a name="line.263"></a>
+<span class="sourceLineNo">264</span>          Arrays.&lt;KeyValueScanner&gt; asList(new KeyValueScanner[] {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>              new KeyValueScanFixture(CellComparator.getInstance(), CELL_WITH_VERSIONS) }));<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>    @Override<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.271"></a>
+<span class="sourceLineNo">272</span>          + ", optimized=" + optimized);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      if (optimized) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        optimization.incrementAndGet();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      return optimized;<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>  @Test<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  public void testWithColumnCountGetFilter() throws Exception {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    Get get = new Get(ONE);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    get.readAllVersions();<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    get.addFamily(CF);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    get.setFilter(new ColumnCountGetFilter(2));<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>    try (CellWithVersionsNoOptimizeStoreScanner scannerNoOptimize =<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        new CellWithVersionsNoOptimizeStoreScanner(new Scan(get), this.scanInfo)) {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      while (scannerNoOptimize.next(results)) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        continue;<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      }<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      assertEquals(2, results.size());<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      assertTrue(CellUtil.matchingColumn(results.get(0), CELL_WITH_VERSIONS[0]));<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      assertTrue(CellUtil.matchingColumn(results.get(1), CELL_WITH_VERSIONS[2]));<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      assertTrue("Optimize should do some optimizations",<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        scannerNoOptimize.optimization.get() == 0);<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>    get.setFilter(new ColumnCountGetFilter(2));<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    try (CellWithVersionsStoreScanner scanner =<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        new CellWithVersionsStoreScanner(new Scan(get), this.scanInfo)) {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      while (scanner.next(results)) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        continue;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      }<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      assertEquals(2, results.size());<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      assertTrue(CellUtil.matchingColumn(results.get(0), CELL_WITH_VERSIONS[0]));<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      assertTrue(CellUtil.matchingColumn(results.get(1), CELL_WITH_VERSIONS[2]));<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      assertTrue("Optimize should do some optimizations", scanner.optimization.get() &gt; 0);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    }<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  }<a name="line.311"></a>
-<span class="sourceLineNo">312</span><a name="line.312"></a>
-<span class="sourceLineNo">313</span>  /*<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   * Test utility for building a NavigableSet for scanners.<a name="line.314"></a>
-<span class="sourceLineNo">315</span>   * @param strCols<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * @return<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   */<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  NavigableSet&lt;byte[]&gt; getCols(String ...strCols) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    NavigableSet&lt;byte[]&gt; cols = new TreeSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    for (String col : strCols) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      byte[] bytes = Bytes.toBytes(col);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      cols.add(bytes);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    return cols;<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>  @Test<a name="line.327"></a>
-<span class="sourceLineNo">328</span>  public void testFullRowGetDoesNotOverreadWhenRowInsideOneBlock() throws IOException {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    // Do a Get against row two. Row two is inside a block that starts with row TWO but ends with<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    // row TWO_POINT_TWO. We should read one block only.<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    Get get = new Get(TWO);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    Scan scan = new Scan(get);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      while (scanner.next(results)) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        continue;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      assertEquals(4, results.size());<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      // We should have gone the optimize route 5 times totally... an INCLUDE for the four cells<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      // in the row plus the DONE on the end.<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      assertEquals(5, scanner.count.get());<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      // For a full row Get, there should be no opportunity for scanner optimization.<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      assertEquals(0, scanner.optimization.get());<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  }<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  @Test<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  public void testFullRowSpansBlocks() throws IOException {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    // Do a Get against row FOUR. It spans two blocks.<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    Get get = new Get(FOUR);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    Scan scan = new Scan(get);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      while (scanner.next(results)) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        continue;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      }<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      assertEquals(5, results.size());<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      // We should have gone the optimize route 6 times totally... an INCLUDE for the five cells<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      // in the row plus the DONE on the end.<a name="line.363"></a>
-<span class="sourceLineNo">364</span>      assertEquals(6, scanner.count.get());<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      // For a full row Get, there should be no opportunity for scanner optimization.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      assertEquals(0, scanner.optimization.get());<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>  /**<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * Test optimize in StoreScanner. Test that we skip to the next 'block' when we it makes sense<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * reading the block 'index'.<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * @throws IOException<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   */<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  @Test<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  public void testOptimize() throws IOException {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    Scan scan = new Scan();<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    // A scan that just gets the first qualifier on each row of the CELL_GRID<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    scan.addColumn(CF, ONE);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      while (scanner.next(results)) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>        continue;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      }<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      assertEquals(4, results.size());<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      for (Cell cell: results) {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>        assertTrue(Bytes.equals(ONE, 0, ONE.length,<a name="line.389"></a>
-<span class="sourceLineNo">390</span>            cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength()));<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      }<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      assertTrue("Optimize should do some optimizations", scanner.optimization.get() &gt; 0);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    }<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  }<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>  /**<a name="line.396"></a>
-<span class="sourceLineNo">397</span>   * Ensure the optimize Scan method in StoreScanner does not get in the way of a Get doing minimum<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * work... seeking to start of block and then SKIPPING until we find the wanted Cell.<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * This 'simple' scenario mimics case of all Cells fitting inside a single HFileBlock.<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * See HBASE-15392. This test is a little cryptic. Takes a bit of staring to figure what it up to.<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * @throws IOException<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  @Test<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  public void testOptimizeAndGet() throws IOException {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    // First test a Get of two columns in the row R2. Every Get is a Scan. Get columns named<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    // R2 and R3.<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    Get get = new Get(TWO);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    get.addColumn(CF, TWO);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    get.addColumn(CF, THREE);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    Scan scan = new Scan(get);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      // For a Get there should be no more next's after the first call.<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      assertEquals(false, scanner.next(results));<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      // Should be one result only.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      assertEquals(2, results.size());<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      // And we should have gone through optimize twice only.<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      assertEquals("First qcode is SEEK_NEXT_COL and second INCLUDE_AND_SEEK_NEXT_ROW", 3,<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        scanner.count.get());<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  }<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>  /**<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   * Ensure that optimize does not cause the Get to do more seeking than required. Optimize<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   * (see HBASE-15392) was causing us to seek all Cells in a block when a Get Scan if the next block<a name="line.425"></a>
-<span class="sourceLineNo">426</span>   * index/start key was a different row to the current one. A bug. We'd call next too often<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * because we had to exhaust all Cells in the current row making us load the next block just to<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * discard what we read there. This test is a little cryptic. Takes a bit of staring to figure<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * what it up to.<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   * @throws IOException<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   */<a name="line.431"></a>
-<span class="sourceLineNo">432</span>  @Test<a name="line.432"></a>
-<span class="sourceLineNo">433</span>  public void testOptimizeAndGetWithFakedNextBlockIndexStart() throws IOException {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    // First test a Get of second column in the row R2. Every Get is a Scan. Second column has a<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    // qualifier of R2.<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    Get get = new Get(THREE);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    get.addColumn(CF, TWO);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    Scan scan = new Scan(get);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      // For a Get there should be no more next's after the first call.<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      assertEquals(false, scanner.next(results));<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      // Should be one result only.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      assertEquals(1, results.size());<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      // And we should have gone through optimize twice only.<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      assertEquals("First qcode is SEEK_NEXT_COL and second INCLUDE_AND_SEEK_NEXT_ROW", 2,<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        scanner.count.get());<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>  @Test<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  public void testScanTimeRange() throws IOException {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    String r1 = "R1";<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    // returns only 1 of these 2 even though same timestamp<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        create(r1, CF_STR, "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.456"></a>
-<span class="sourceLineNo">457</span>        create(r1, CF_STR, "a", 2, KeyValue.Type.Put, "dont-care"),<a name="line.457"></a>
-<span class="sourceLineNo">458</span>        create(r1, CF_STR, "a", 3, KeyValue.Type.Put, "dont-care"),<a name="line.458"></a>
-<span class="sourceLineNo">459</span>        create(r1, CF_STR, "a", 4, KeyValue.Type.Put, "dont-care"),<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        create(r1, CF_STR, "a", 5, KeyValue.Type.Put, "dont-care"),<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    };<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    List&lt;KeyValueScanner&gt; scanners = Arrays.&lt;KeyValueScanner&gt;asList(<a name="line.462"></a>
-<span class="sourceLineNo">463</span>        new KeyValueScanner[] {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>            new KeyValueScanFixture(CellComparator.getInstance(), kvs)<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    });<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    scanSpec.setTimeRange(0, 6);<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    scanSpec.readAllVersions();<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    List&lt;Cell&gt; results = null;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      results = new ArrayList&lt;&gt;();<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      assertEquals(true, scan.next(results));<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      assertEquals(5, results.size());<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      assertEquals(kvs[kvs.length - 1], results.get(0));<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    }<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    // Scan limited TimeRange<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    scanSpec.setTimeRange(1, 3);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    scanSpec.readAllVersions();<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      results = new ArrayList&lt;&gt;();<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      assertEquals(true, scan.next(results));<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      assertEquals(2, results.size());<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    }<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    // Another range.<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    scanSpec.setTimeRange(5, 10);<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    scanSpec.readAllVersions();<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      results = new ArrayList&lt;&gt;();<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      assertEquals(true, scan.next(results));<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      assertEquals(1, results.size());<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    }<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    // See how TimeRange and Versions interact.<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    // Another range.<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    scanSpec.setTimeRange(0, 10);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    scanSpec.readVersions(3);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      results = new ArrayList&lt;&gt;();<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      assertEquals(true, scan.next(results));<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      assertEquals(3, results.size());<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>  @Test<a name="line.506"></a>
-<span class="sourceLineNo">507</span>  public void testScanSameTimestamp() throws IOException {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    // returns only 1 of these 2 even though same timestamp<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.510"></a>
-<span class="sourceLineNo">511</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    };<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    List&lt;KeyValueScanner&gt; scanners = Arrays.asList(<a name="line.513"></a>
-<span class="sourceLineNo">514</span>        new KeyValueScanner[] {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>            new KeyValueScanFixture(CellComparator.getInstance(), kvs)<a name="line.515"></a>
-<span class="sourceLineNo">516</span>        });<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    // this only uses maxVersions (default=1) and TimeRange (default=all)<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      assertEquals(true, scan.next(results));<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      assertEquals(1, results.size());<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      assertEquals(kvs[0], results.get(0));<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    }<a name="line.525"></a>
-<span class="sourceLineNo">526</span>  }<a name="line.526"></a>
-<span class="sourceLineNo">527</span><a name="line.527"></a>
-<span class="sourceLineNo">528</span>  /*<a name="line.528"></a>
-<span class="sourceLineNo">529</span>   * Test test shows exactly how the matcher's return codes confuses the StoreScanner<a name="line.529"></a>
-<span class="sourceLineNo">530</span>   * and prevent it from doing the right thing.  Seeking once, then nexting twice<a name="line.530"></a>
-<span class="sourceLineNo">531</span>   * should return R1, then R2, but in this case it doesnt.<a name="line.531"></a>
-<span class="sourceLineNo">532</span>   * TODO this comment makes no sense above. Appears to do the right thing.<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   * @throws IOException<a name="line.533"></a>
-<span class="sourceLineNo">534</span>   */<a name="line.534"></a>
-<span class="sourceLineNo">535</span>  @Test<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  public void testWontNextToNext() throws IOException {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    // build the scan file:<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.538"></a>
-<span class="sourceLineNo">539</span>        create("R1", "cf", "a", 2, KeyValue.Type.Put, "dont-care"),<a name="line.539"></a>
-<span class="sourceLineNo">540</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.540"></a>
-<span class="sourceLineNo">541</span>        create("R2", "cf", "a", 1, KeyValue.Type.Put, "dont-care")<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    };<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    List&lt;KeyValueScanner&gt; scanners = scanFixture(kvs);<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    // this only uses maxVersions (default=1) and TimeRange (default=all)<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.548"></a>
-<span class="sourceLineNo">549</span>      scan.next(results);<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      assertEquals(1, results.size());<a name="line.550"></a>
-<span class="sourceLineNo">551</span>      assertEquals(kvs[0], results.get(0));<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      // should be ok...<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      // now scan _next_ again.<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      results.clear();<a name="line.554"></a>
+<span class="sourceLineNo">279</span>    @Override<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    public Cell getNextIndexedKey() {<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>  @Test<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  public void testWithColumnCountGetFilter() throws Exception {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    Get get = new Get(ONE);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    get.readAllVersions();<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    get.addFamily(CF);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    get.setFilter(new ColumnCountGetFilter(2));<a name="line.290"></a>
+<span class="sourceLineNo">291</span><a name="line.291"></a>
+<span class="sourceLineNo">292</span>    try (CellWithVersionsNoOptimizeStoreScanner scannerNoOptimize =<a name="line.292"></a>
+<span class="sourceLineNo">293</span>        new CellWithVersionsNoOptimizeStoreScanner(new Scan(get), this.scanInfo)) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      while (scannerNoOptimize.next(results)) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        continue;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      }<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      assertEquals(2, results.size());<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      assertTrue(CellUtil.matchingColumn(results.get(0), CELL_WITH_VERSIONS[0]));<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      assertTrue(CellUtil.matchingColumn(results.get(1), CELL_WITH_VERSIONS[2]));<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      assertTrue("Optimize should do some optimizations",<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        scannerNoOptimize.optimization.get() == 0);<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>    get.setFilter(new ColumnCountGetFilter(2));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    try (CellWithVersionsStoreScanner scanner =<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        new CellWithVersionsStoreScanner(new Scan(get), this.scanInfo)) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      while (scanner.next(results)) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>        continue;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      assertEquals(2, results.size());<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      assertTrue(CellUtil.matchingColumn(results.get(0), CELL_WITH_VERSIONS[0]));<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      assertTrue(CellUtil.matchingColumn(results.get(1), CELL_WITH_VERSIONS[2]));<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      assertTrue("Optimize should do some optimizations", scanner.optimization.get() &gt; 0);<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    }<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>   * Test utility for building a NavigableSet for scanners.<a name="line.320"></a>
+<span class="sourceLineNo">321</span>   * @param strCols<a name="line.321"></a>
+<span class="sourceLineNo">322</span>   * @return<a name="line.322"></a>
+<span class="sourceLineNo">323</span>   */<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  NavigableSet&lt;byte[]&gt; getCols(String ...strCols) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    NavigableSet&lt;byte[]&gt; cols = new TreeSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    for (String col : strCols) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      byte[] bytes = Bytes.toBytes(col);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      cols.add(bytes);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    }<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    return cols;<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>  @Test<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  public void testFullRowGetDoesNotOverreadWhenRowInsideOneBlock() throws IOException {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    // Do a Get against row two. Row two is inside a block that starts with row TWO but ends with<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    // row TWO_POINT_TWO. We should read one block only.<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    Get get = new Get(TWO);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    Scan scan = new Scan(get);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.340"></a>
+<span class="sourceLineNo">341</span>      while (scanner.next(results)) {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        continue;<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      assertEquals(4, results.size());<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      // We should have gone the optimize route 5 times totally... an INCLUDE for the four cells<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      // in the row plus the DONE on the end.<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      assertEquals(5, scanner.count.get());<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      // For a full row Get, there should be no opportunity for scanner optimization.<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      assertEquals(0, scanner.optimization.get());<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  @Test<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  public void testFullRowSpansBlocks() throws IOException {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    // Do a Get against row FOUR. It spans two blocks.<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    Get get = new Get(FOUR);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    Scan scan = new Scan(get);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      while (scanner.next(results)) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>        continue;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      assertEquals(5, results.size());<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      // We should have gone the optimize route 6 times totally... an INCLUDE for the five cells<a name="line.368"></a>
+<span class="sourceLineNo">369</span>      // in the row plus the DONE on the end.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      assertEquals(6, scanner.count.get());<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      // For a full row Get, there should be no opportunity for scanner optimization.<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      assertEquals(0, scanner.optimization.get());<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><a name="line.375"></a>
+<span class="sourceLineNo">376</span>  /**<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   * Test optimize in StoreScanner. Test that we skip to the next 'block' when we it makes sense<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * reading the block 'index'.<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   * @throws IOException<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   */<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  @Test<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  public void testOptimize() throws IOException {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    Scan scan = new Scan();<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    // A scan that just gets the first qualifier on each row of the CELL_GRID<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    scan.addColumn(CF, ONE);<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      while (scanner.next(results)) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>        continue;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      }<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      assertEquals(4, results.size());<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      for (Cell cell: results) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        assertTrue(Bytes.equals(ONE, 0, ONE.length,<a name="line.395"></a>
+<span class="sourceLineNo">396</span>            cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength()));<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      }<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      assertTrue("Optimize should do some optimizations", scanner.optimization.get() &gt; 0);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    }<a name="line.399"></a>
+<span class="sourceLineNo">400</span>  }<a name="line.400"></a>
+<span class="sourceLineNo">401</span><a name="line.401"></a>
+<span class="sourceLineNo">402</span>  /**<a name="line.402"></a>
+<span class="sourceLineNo">403</span>   * Ensure the optimize Scan method in StoreScanner does not get in the way of a Get doing minimum<a name="line.403"></a>
+<span class="sourceLineNo">404</span>   * work... seeking to start of block and then SKIPPING until we find the wanted Cell.<a name="line.404"></a>
+<span class="sourceLineNo">405</span>   * This 'simple' scenario mimics case of all Cells fitting inside a single HFileBlock.<a name="line.405"></a>
+<span class="sourceLineNo">406</span>   * See HBASE-15392. This test is a little cryptic. Takes a bit of staring to figure what it up to.<a name="line.406"></a>
+<span class="sourceLineNo">407</span>   * @throws IOException<a name="line.407"></a>
+<span class="sourceLineNo">408</span>   */<a name="line.408"></a>
+<span class="sourceLineNo">409</span>  @Test<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  public void testOptimizeAndGet() throws IOException {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    // First test a Get of two columns in the row R2. Every Get is a Scan. Get columns named<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    // R2 and R3.<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    Get get = new Get(TWO);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    get.addColumn(CF, TWO);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    get.addColumn(CF, THREE);<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    Scan scan = new Scan(get);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      // For a Get there should be no more next's after the first call.<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      assertEquals(false, scanner.next(results));<a name="line.420"></a>
+<span class="sourceLineNo">421</span>      // Should be one result only.<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      assertEquals(2, results.size());<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      // And we should have gone through optimize twice only.<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      assertEquals("First qcode is SEEK_NEXT_COL and second INCLUDE_AND_SEEK_NEXT_ROW", 3,<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        scanner.count.get());<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><a name="line.428"></a>
+<span class="sourceLineNo">429</span>  /**<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * Ensure that optimize does not cause the Get to do more seeking than required. Optimize<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   * (see HBASE-15392) was causing us to seek all Cells in a block when a Get Scan if the next block<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   * index/start key was a different row to the current one. A bug. We'd call next too often<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   * because we had to exhaust all Cells in the current row making us load the next block just to<a name="line.433"></a>
+<span class="sourceLineNo">434</span>   * discard what we read there. This test is a little cryptic. Takes a bit of staring to figure<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   * what it up to.<a name="line.435"></a>
+<span class="sourceLineNo">436</span>   * @throws IOException<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   */<a name="line.437"></a>
+<span class="sourceLineNo">438</span>  @Test<a name="line.438"></a>
+<span class="sourceLineNo">439</span>  public void testOptimizeAndGetWithFakedNextBlockIndexStart() throws IOException {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    // First test a Get of second column in the row R2. Every Get is a Scan. Second column has a<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    // qualifier of R2.<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    Get get = new Get(THREE);<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    get.addColumn(CF, TWO);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    Scan scan = new Scan(get);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      // For a Get there should be no more next's after the first call.<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      assertEquals(false, scanner.next(results));<a name="line.448"></a>
+<span class="sourceLineNo">449</span>      // Should be one result only.<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      assertEquals(1, results.size());<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      // And we should have gone through optimize twice only.<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      assertEquals("First qcode is SEEK_NEXT_COL and second INCLUDE_AND_SEEK_NEXT_ROW", 2,<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        scanner.count.get());<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>  @Test<a name="line.457"></a>
+<span class="sourceLineNo">458</span>  public void testScanTimeRange() throws IOException {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    String r1 = "R1";<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    // returns only 1 of these 2 even though same timestamp<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.461"></a>
+<span class="sourceLineNo">462</span>        create(r1, CF_STR, "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.462"></a>
+<span class="sourceLineNo">463</span>        create(r1, CF_STR, "a", 2, KeyValue.Type.Put, "dont-care"),<a name="line.463"></a>
+<span class="sourceLineNo">464</span>        create(r1, CF_STR, "a", 3, KeyValue.Type.Put, "dont-care"),<a name="line.464"></a>
+<span class="sourceLineNo">465</span>        create(r1, CF_STR, "a", 4, KeyValue.Type.Put, "dont-care"),<a name="line.465"></a>
+<span class="sourceLineNo">466</span>        create(r1, CF_STR, "a", 5, KeyValue.Type.Put, "dont-care"),<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    };<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    List&lt;KeyValueScanner&gt; scanners = Arrays.&lt;KeyValueScanner&gt;asList(<a name="line.468"></a>
+<span class="sourceLineNo">469</span>        new KeyValueScanner[] {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>            new KeyValueScanFixture(CellComparator.getInstance(), kvs)<a name="line.470"></a>
+<span class="sourceLineNo">471</span>    });<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    scanSpec.setTimeRange(0, 6);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    scanSpec.readAllVersions();<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    List&lt;Cell&gt; results = null;<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>      results = new ArrayList&lt;&gt;();<a name="line.477"></a>
+<span class="sourceLineNo">478</span>      assertEquals(true, scan.next(results));<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      assertEquals(5, results.size());<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      assertEquals(kvs[kvs.length - 1], results.get(0));<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    }<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    // Scan limited TimeRange<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    scanSpec.setTimeRange(1, 3);<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    scanSpec.readAllVersions();<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      results = new ArrayList&lt;&gt;();<a name="line.487"></a>
+<span class="sourceLineNo">488</span>      assertEquals(true, scan.next(results));<a name="line.488"></a>
+<span class="sourceLineNo">489</span>      assertEquals(2, results.size());<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    }<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    // Another range.<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    scanSpec.setTimeRange(5, 10);<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    scanSpec.readAllVersions();<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.495"></a>
+<span class="sourceLineNo">496</span>      results = new ArrayList&lt;&gt;();<a name="line.496"></a>
+<span class="sourceLineNo">497</span>      assertEquals(true, scan.next(results));<a name="line.497"></a>
+<span class="sourceLineNo">498</span>      assertEquals(1, results.size());<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    }<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    // See how TimeRange and Versions interact.<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    // Another range.<a name="line.501"></a>
+<span class="sourceLineNo">502</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    scanSpec.setTimeRange(0, 10);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    scanSpec.readVersions(3);<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.505"></a>
+<span class="sourceLineNo">506</span>      results = new ArrayList&lt;&gt;();<a name="line.506"></a>
+<span class="sourceLineNo">507</span>      assertEquals(true, scan.next(results));<a name="line.507"></a>
+<span class="sourceLineNo">508</span>      assertEquals(3, results.size());<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><a name="line.511"></a>
+<span class="sourceLineNo">512</span>  @Test<a name="line.512"></a>
+<span class="sourceLineNo">513</span>  public void testScanSameTimestamp() throws IOException {<a name="line.513"></a>
+<span class="sourceLineNo">514</span>    // returns only 1 of these 2 even though same timestamp<a name="line.514"></a>
+<span class="sourceLineNo">515</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.515"></a>
+<span class="sourceLineNo">516</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.516"></a>
+<span class="sourceLineNo">517</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    };<a name="line.518"></a>
+<span class="sourceLineNo">519</span>    List&lt;KeyValueScanner&gt; scanners = Arrays.asList(<a name="line.519"></a>
+<span class="sourceLineNo">520</span>        new KeyValueScanner[] {<a name="line.520"></a>
+<span class="sourceLineNo">521</span>            new KeyValueScanFixture(CellComparator.getInstance(), kvs)<a name="line.521"></a>
+<span class="sourceLineNo">522</span>        });<a name="line.522"></a>
+<span class="sourceLineNo">523</span><a name="line.523"></a>
+<span class="sourceLineNo">524</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    // this only uses maxVersions (default=1) and TimeRange (default=all)<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.526"></a>
+<span class="sourceLineNo">527</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.527"></a>
+<span class="sourceLineNo">528</span>      assertEquals(true, scan.next(results));<a name="line.528"></a>
+<span class="sourceLineNo">529</span>      assertEquals(1, results.size());<a name="line.529"></a>
+<span class="sourceLineNo">530</span>      assertEquals(kvs[0], results.get(0));<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    }<a name="line.531"></a>
+<span class="sourceLineNo">532</span>  }<a name="line.532"></a>
+<span class="sourceLineNo">533</span><a name="line.533"></a>
+<span class="sourceLineNo">534</span>  /*<a name="line.534"></a>
+<span class="sourceLineNo">535</span>   * Test test shows exactly how the matcher's return codes confuses the StoreScanner<a name="line.535"></a>
+<span class="sourceLineNo">536</span>   * and prevent it from doing the right thing.  Seeking once, then nexting twice<a name="line.536"></a>
+<span class="sourceLineNo">537</span>   * should return R1, then R2, but in this case it doesnt.<a name="line.537"></a>
+<span class="sourceLineNo">538</span>   * TODO this comment makes no sense above. Appears to do the right thing.<a name="line.538"></a>
+<span class="sourceLineNo">539</span>   * @throws IOException<a name="line.539"></a>
+<span class="sourceLineNo">540</span>   */<a name="line.540"></a>
+<span class="sourceLineNo">541</span>  @Test<a name="line.541"></a>
+<span class="sourceLineNo">542</span>  public void testWontNextToNext() throws IOException {<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    // build the scan file:<a name="line.543"></a>
+<span class="sourceLineNo">544</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.544"></a>
+<span class="sourceLineNo">545</span>        create("R1", "cf", "a", 2, KeyValue.Type.Put, "dont-care"),<a name="line.545"></a>
+<span class="sourceLineNo">546</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.546"></a>
+<span class="sourceLineNo">547</span>        create("R2", "cf", "a", 1, KeyValue.Type.Put, "dont-care")<a name="line.547"></a>
+<span class="sourceLineNo">548</span>    };<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    List&lt;KeyValueScanner&gt; scanners = scanFixture(kvs);<a name="line.549"></a>
+<span class="sourceLineNo">550</span><a name="line.550"></a>
+<span class="sourceLineNo">551</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    // this only uses maxVersions (default=1) and TimeRange (default=all)<a name="line.552"></a>
+<span class="sourceLineNo">553</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.553"></a>
+<span class="sourceLineNo">554</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.554"></a>
 <span class="sourceLineNo">555</span>      scan.next(results);<a name="line.555"></a>
 <span class="sourceLineNo">556</span>      assertEquals(1, results.size());<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      assertEquals(kvs[2], results.get(0));<a name="line.557"></a>
-<span class="sourceLineNo">558</span><a name="line.558"></a>
-<span class="sourceLineNo">559</span>      results.clear();<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      scan.next(results);<a name="line.560"></a>
-<span class="sourceLineNo">561</span>      assertEquals(0, results.size());<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">557</span>      assertEquals(kvs[0], results.get(0));<a name="line.557"></a>
+<span class="sourceLineNo">558</span>      // should be ok...<a name="line.558"></a>
+<span class="sourceLineNo">559</span>      // now scan _next_ again.<a name="line.559"></a>
+<span class="sourceLineNo">560</span>      results.clear();<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      scan.next(results);<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      assertEquals(1, results.size());<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      assertEquals(kvs[2], results.get(0));<a name="line.563"></a>
 <span class="sourceLineNo">564</span><a name="line.564"></a>
-<span class="sourceLineNo">565</span><a name="line.565"></a>
-<span class="sourceLineNo">566</span>  @Test<a name="line.566"></a>
-<span class="sourceLineNo">567</span>  public void testDeleteVersionSameTimestamp() throws IOException {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    KeyValue [] kvs = new KeyValue [] {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.569"></a>
-<span class="sourceLineNo">570</span>        create("R1", "cf", "a", 1, KeyValue.Type.Delete, "dont-care"),<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    };<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    List&lt;KeyValueScanner&gt; scanners = scanFixture(kvs);<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.574"></a>
-<span class="sourceLineNo">575</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      assertFalse(scan.next(results));<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      assertEquals(0, results.size());<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    }<a name="line.578"></a>
-<span class="sourceLineNo">579</span>  }<a name="line.579"></a>
-<span class="sourceLineNo">580</span><a name="line.580"></a>
-<span class="sourceLineNo">581</span>  /*<a name="line.581"></a>
-<span class="sourceLineNo">582</span>   * Test the case where there is a delete row 'in front of' the next row, the scanner<a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * will move to the next row.<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   */<a name="line.584"></a>
-<span class="sourceLineNo">585</span>  @Test<a name="line.585"></a>
-<span class="sourceLineNo">586</span>  public void testDeletedRowThenGoodRow() throws IOException {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    KeyValue [] kvs = new KeyValue [] {<a name="line.587"></a>
-<span class="sourceLineNo">588</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.588"></a>
-<span class="sourceLineNo">589</span>        create("R1", "cf", "a", 1, KeyValue.Type.Delete, "dont-care"),<a name="line.589"></a>
-<span class="sourceLineNo">590</span>        create("R2", "cf", "a", 20, KeyValue.Type.Put, "dont-care")<a name="line.590"></a>
-<span class="sourceLineNo">591</span>    };<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    List&lt;KeyValueScanner&gt; scanners = scanFixture(kvs);<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.595"></a>
-<span class="sourceLineNo">596</span>      assertEquals(true, scan.next(results));<a name="line.596"></a>
-<span class="sourceLineNo">597</span>      assertEquals(0, results.size());<a name="line.597"></a>
-<span class="sourceLineNo">598</span><a name="line.598"></a>
-<span class="sourceLineNo">599</span>      assertEquals(true, scan.next(results));<a name="line.599"></a>
-<span class="sourceLineNo">600</span>      assertEquals(1, results.size());<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      assertEquals(kvs[2], results.get(0));<a name="line.601"></a>
-<span class="sourceLineNo">602</span><a name="line.602"></a>
-<span class="sourceLineNo">603</span>      assertEquals(false, scan.next(results));<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    }<a name="line.604"></a>
-<span class="sourceLineNo">605</span>  }<a name="line.605"></a>
-<span class="sourceLineNo">606</span><a name="line.606"></a>
-<span class="sourceLineNo">607</span>  @Test<a name="line.607"></a>
-<span class="sourceLineNo">608</span>  public void testDeleteVersionMaskingMultiplePuts() throws IOException {<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    long now = System.currentTimeMillis();<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    KeyValue [] kvs1 = new KeyValue[] {<a name="line.610"></a>
-<span class="sourceLineNo">611</span>        create("R1", "cf", "a", now, KeyValue.Type.Put, "dont-care"),<a name="line.611"></a>
-<span class="sourceLineNo">612</span>        create("R1", "cf", "a", now, KeyValue.Type.Delete, "dont-care")<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    };<a name="line.613"></a>
-<span class="sourceLineNo">614</span>    KeyValue [] kvs2 = new KeyValue[] {<a name="line.614"></a>
-<span class="sourceLineNo">615</span>        create("R1", "cf", "a", now-500, KeyValue.Type.Put, "dont-care"),<a name="line.615"></a>
-<span class="sourceLineNo">616</span>        create("R1", "cf", "a", now-100, KeyValue.Type.Put, "dont-care"),<a name="line.616"></a>
-<span class="sourceLineNo">617</span>        create("R1", "cf", "a", now, KeyValue.Type.Put, "dont-care")<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    };<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    List&lt;KeyValueScanner&gt; scanners = scanFixture(kvs1, kvs2);<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>    try (StoreScanner scan = new StoreScanner(new Scan().withStartRow(Bytes.toBytes("R1")),<a name="line.621"></a>
-<span class="sourceLineNo">622</span>        scanInfo, getCols("a"), scanners)) {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.623"></a>
-<span class="sourceLineNo">624</span>      // the two put at ts=now will be masked by the 1 delete, and<a name="line.624"></a>
-<span class="sourceLineNo">625</span>      // since the scan default returns 1 version we'll return the newest<a name="line.625"></a>
-<span class="sourceLineNo">626</span>      // key, which is kvs[2], now-100.<a name="line.626"></a>
-<span class="sourceLineNo">627</span>      assertEquals(true, scan.next(results));<a name="line.627"></a>
-<span class="sourceLineNo">628</span>      assertEquals(1, results.size());<a name="line.628"></a>
-<span class="sourceLineNo">629</span>      assertEquals(kvs2[1], results.get(0));<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    }<a name="line.630"></a>
-<span class="sourceLineNo">631</span>  }<a name="line.631"></a>
-<span class="sourceLineNo">632</span><a name="line.632"></a>
-<span class="sourceLineNo">633</span>  @Test<a name="line.633"></a>
-<span class="sourceLineNo">634</span>  public void testDeleteVersionsMixedAndMultipleVersionReturn() throws IOException {<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    long now = System.currentTimeMillis();<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    KeyValue [] kvs1 = new KeyValue[] {<a name="line.636"></a>
-<span class="sourceLineNo">637</span>        create("R1", "cf", "a", now, KeyValue.Type.Put, "dont-care"),<a name="line.637"></a>
-<span class="sourceLineNo">638</span>        create("R1", "cf", "a", now, KeyValue.Type.Delete, "dont-care")<a name="line.638"></a>
-<span class="sourceLineNo">639</span>    };<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    KeyValue [] kvs2 = new KeyValue[] {<a name="line.640"></a>
-<span class="sourceLineNo">641</span>        create("R1", "cf", "a", now-500, KeyValue.Type.Put, "dont-care"),<a name="line.641"></a>
-<span class="sourceLineNo">642</span>        create("R1", "cf", "a", now+500, KeyValue.Type.Put, "dont-care"),<a name="line.642"></a>
+<span class="sourceLineNo">565</span>      results.clear();<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      scan.next(results);<a name="line.566"></a>
+<span class="s

<TRUNCATED>

[05/29] hbase-site git commit: Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner.html
index 5982fda..5fda559 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner.html
@@ -178,807 +178,813 @@
 <span class="sourceLineNo">170</span>      if (count == null) {<a name="line.170"></a>
 <span class="sourceLineNo">171</span>        count = new AtomicInteger(0);<a name="line.171"></a>
 <span class="sourceLineNo">172</span>      }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      heap = new KeyValueHeapWithCount(scanners, comparator, count);<a name="line.173"></a>
+<span class="sourceLineNo">173</span>      heap = newKVHeap(scanners, comparator);<a name="line.173"></a>
 <span class="sourceLineNo">174</span>    }<a name="line.174"></a>
 <span class="sourceLineNo">175</span><a name="line.175"></a>
 <span class="sourceLineNo">176</span>    @Override<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    protected boolean trySkipToNextRow(Cell cell) throws IOException {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      boolean optimized = super.trySkipToNextRow(cell);<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.179"></a>
-<span class="sourceLineNo">180</span>          + ", optimized=" + optimized);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      if (optimized) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        optimization.incrementAndGet();<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      }<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      return optimized;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>    @Override<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.190"></a>
-<span class="sourceLineNo">191</span>          + ", optimized=" + optimized);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      if (optimized) {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        optimization.incrementAndGet();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      }<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      return optimized;<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 Cell getNextIndexedKey() {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      // Fake block boundaries by having index of next block change as we go through scan.<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      return count.get() &gt; CELL_GRID_BLOCK4_BOUNDARY?<a name="line.201"></a>
-<span class="sourceLineNo">202</span>          PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK5_BOUNDARY]):<a name="line.202"></a>
-<span class="sourceLineNo">203</span>            count.get() &gt; CELL_GRID_BLOCK3_BOUNDARY?<a name="line.203"></a>
-<span class="sourceLineNo">204</span>                PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK4_BOUNDARY]):<a name="line.204"></a>
-<span class="sourceLineNo">205</span>                  count.get() &gt; CELL_GRID_BLOCK2_BOUNDARY?<a name="line.205"></a>
-<span class="sourceLineNo">206</span>                      PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK3_BOUNDARY]):<a name="line.206"></a>
-<span class="sourceLineNo">207</span>                        PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK2_BOUNDARY]);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    }<a name="line.208"></a>
-<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
-<span class="sourceLineNo">210</span><a name="line.210"></a>
-<span class="sourceLineNo">211</span>  private static final int CELL_WITH_VERSIONS_BLOCK2_BOUNDARY = 4;<a name="line.211"></a>
-<span class="sourceLineNo">212</span><a name="line.212"></a>
-<span class="sourceLineNo">213</span>  private static final Cell[] CELL_WITH_VERSIONS = new Cell [] {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    createCell(ONE, CF, ONE, 2L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    createCell(ONE, CF, ONE, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    createCell(ONE, CF, TWO, 2L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    createCell(ONE, CF, TWO, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    // Offset 4 CELL_WITH_VERSIONS_BLOCK2_BOUNDARY<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    createCell(TWO, CF, ONE, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    createCell(TWO, CF, TWO, 1L, KeyValue.Type.Put.getCode(), VALUE),<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>  private static class CellWithVersionsStoreScanner extends StoreScanner {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    // Count of how often optimize is called and of how often it does an optimize.<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    final AtomicInteger optimization = new AtomicInteger(0);<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>    CellWithVersionsStoreScanner(final Scan scan, ScanInfo scanInfo) throws IOException {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      super(scan, scanInfo, scan.getFamilyMap().get(CF),<a name="line.228"></a>
-<span class="sourceLineNo">229</span>          Arrays.&lt;KeyValueScanner&gt; asList(new KeyValueScanner[] {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>              new KeyValueScanFixture(CellComparator.getInstance(), CELL_WITH_VERSIONS) }));<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    }<a name="line.231"></a>
+<span class="sourceLineNo">177</span>    protected KeyValueHeap newKVHeap(List&lt;? extends KeyValueScanner&gt; scanners,<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        CellComparator comparator) throws IOException {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      return new KeyValueHeapWithCount(scanners, comparator, count);<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>    protected boolean trySkipToNextRow(Cell cell) throws IOException {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      boolean optimized = super.trySkipToNextRow(cell);<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.185"></a>
+<span class="sourceLineNo">186</span>          + ", optimized=" + optimized);<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      if (optimized) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>        optimization.incrementAndGet();<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      return optimized;<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>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.196"></a>
+<span class="sourceLineNo">197</span>          + ", optimized=" + optimized);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      if (optimized) {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>        optimization.incrementAndGet();<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      }<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      return optimized;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    }<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>    @Override<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    public Cell getNextIndexedKey() {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      // Fake block boundaries by having index of next block change as we go through scan.<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      return count.get() &gt; CELL_GRID_BLOCK4_BOUNDARY?<a name="line.207"></a>
+<span class="sourceLineNo">208</span>          PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK5_BOUNDARY]):<a name="line.208"></a>
+<span class="sourceLineNo">209</span>            count.get() &gt; CELL_GRID_BLOCK3_BOUNDARY?<a name="line.209"></a>
+<span class="sourceLineNo">210</span>                PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK4_BOUNDARY]):<a name="line.210"></a>
+<span class="sourceLineNo">211</span>                  count.get() &gt; CELL_GRID_BLOCK2_BOUNDARY?<a name="line.211"></a>
+<span class="sourceLineNo">212</span>                      PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK3_BOUNDARY]):<a name="line.212"></a>
+<span class="sourceLineNo">213</span>                        PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK2_BOUNDARY]);<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>  private static final int CELL_WITH_VERSIONS_BLOCK2_BOUNDARY = 4;<a name="line.217"></a>
+<span class="sourceLineNo">218</span><a name="line.218"></a>
+<span class="sourceLineNo">219</span>  private static final Cell[] CELL_WITH_VERSIONS = new Cell [] {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    createCell(ONE, CF, ONE, 2L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    createCell(ONE, CF, ONE, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    createCell(ONE, CF, TWO, 2L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    createCell(ONE, CF, TWO, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    // Offset 4 CELL_WITH_VERSIONS_BLOCK2_BOUNDARY<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    createCell(TWO, CF, ONE, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    createCell(TWO, CF, TWO, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  };<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>  private static class CellWithVersionsStoreScanner extends StoreScanner {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    // Count of how often optimize is called and of how often it does an optimize.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    final AtomicInteger optimization = new AtomicInteger(0);<a name="line.231"></a>
 <span class="sourceLineNo">232</span><a name="line.232"></a>
-<span class="sourceLineNo">233</span>    @Override<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.236"></a>
-<span class="sourceLineNo">237</span>          + ", optimized=" + optimized);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      if (optimized) {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        optimization.incrementAndGet();<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      }<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      return optimized;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    }<a name="line.242"></a>
-<span class="sourceLineNo">243</span><a name="line.243"></a>
-<span class="sourceLineNo">244</span>    @Override<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    public Cell getNextIndexedKey() {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      // Fake block boundaries by having index of next block change as we go through scan.<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      return PrivateCellUtil<a name="line.247"></a>
-<span class="sourceLineNo">248</span>          .createFirstOnRow(CELL_WITH_VERSIONS[CELL_WITH_VERSIONS_BLOCK2_BOUNDARY]);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  private static class CellWithVersionsNoOptimizeStoreScanner extends StoreScanner {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    // Count of how often optimize is called and of how often it does an optimize.<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    final AtomicInteger optimization = new AtomicInteger(0);<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>    CellWithVersionsNoOptimizeStoreScanner(Scan scan, ScanInfo scanInfo) throws IOException {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      super(scan, scanInfo, scan.getFamilyMap().get(CF),<a name="line.257"></a>
-<span class="sourceLineNo">258</span>          Arrays.&lt;KeyValueScanner&gt; asList(new KeyValueScanner[] {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>              new KeyValueScanFixture(CellComparator.getInstance(), CELL_WITH_VERSIONS) }));<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    }<a name="line.260"></a>
+<span class="sourceLineNo">233</span>    CellWithVersionsStoreScanner(final Scan scan, ScanInfo scanInfo) throws IOException {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      super(scan, scanInfo, scan.getFamilyMap().get(CF),<a name="line.234"></a>
+<span class="sourceLineNo">235</span>          Arrays.&lt;KeyValueScanner&gt; asList(new KeyValueScanner[] {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>              new KeyValueScanFixture(CellComparator.getInstance(), CELL_WITH_VERSIONS) }));<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    }<a name="line.237"></a>
+<span class="sourceLineNo">238</span><a name="line.238"></a>
+<span class="sourceLineNo">239</span>    @Override<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.242"></a>
+<span class="sourceLineNo">243</span>          + ", optimized=" + optimized);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      if (optimized) {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        optimization.incrementAndGet();<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      }<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      return optimized;<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    }<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>    @Override<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    public Cell getNextIndexedKey() {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      // Fake block boundaries by having index of next block change as we go through scan.<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      return PrivateCellUtil<a name="line.253"></a>
+<span class="sourceLineNo">254</span>          .createFirstOnRow(CELL_WITH_VERSIONS[CELL_WITH_VERSIONS_BLOCK2_BOUNDARY]);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>  }<a name="line.256"></a>
+<span class="sourceLineNo">257</span><a name="line.257"></a>
+<span class="sourceLineNo">258</span>  private static class CellWithVersionsNoOptimizeStoreScanner extends StoreScanner {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    // Count of how often optimize is called and of how often it does an optimize.<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    final AtomicInteger optimization = new AtomicInteger(0);<a name="line.260"></a>
 <span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>    @Override<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.265"></a>
-<span class="sourceLineNo">266</span>          + ", optimized=" + optimized);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      if (optimized) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        optimization.incrementAndGet();<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      }<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      return optimized;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    }<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>    @Override<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    public Cell getNextIndexedKey() {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      return null;<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">262</span>    CellWithVersionsNoOptimizeStoreScanner(Scan scan, ScanInfo scanInfo) throws IOException {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      super(scan, scanInfo, scan.getFamilyMap().get(CF),<a name="line.263"></a>
+<span class="sourceLineNo">264</span>          Arrays.&lt;KeyValueScanner&gt; asList(new KeyValueScanner[] {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>              new KeyValueScanFixture(CellComparator.getInstance(), CELL_WITH_VERSIONS) }));<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>    @Override<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.271"></a>
+<span class="sourceLineNo">272</span>          + ", optimized=" + optimized);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      if (optimized) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        optimization.incrementAndGet();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      return optimized;<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>  @Test<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  public void testWithColumnCountGetFilter() throws Exception {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    Get get = new Get(ONE);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    get.readAllVersions();<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    get.addFamily(CF);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    get.setFilter(new ColumnCountGetFilter(2));<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>    try (CellWithVersionsNoOptimizeStoreScanner scannerNoOptimize =<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        new CellWithVersionsNoOptimizeStoreScanner(new Scan(get), this.scanInfo)) {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      while (scannerNoOptimize.next(results)) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        continue;<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      }<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      assertEquals(2, results.size());<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      assertTrue(CellUtil.matchingColumn(results.get(0), CELL_WITH_VERSIONS[0]));<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      assertTrue(CellUtil.matchingColumn(results.get(1), CELL_WITH_VERSIONS[2]));<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      assertTrue("Optimize should do some optimizations",<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        scannerNoOptimize.optimization.get() == 0);<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>    get.setFilter(new ColumnCountGetFilter(2));<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    try (CellWithVersionsStoreScanner scanner =<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        new CellWithVersionsStoreScanner(new Scan(get), this.scanInfo)) {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      while (scanner.next(results)) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        continue;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      }<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      assertEquals(2, results.size());<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      assertTrue(CellUtil.matchingColumn(results.get(0), CELL_WITH_VERSIONS[0]));<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      assertTrue(CellUtil.matchingColumn(results.get(1), CELL_WITH_VERSIONS[2]));<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      assertTrue("Optimize should do some optimizations", scanner.optimization.get() &gt; 0);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    }<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  }<a name="line.311"></a>
-<span class="sourceLineNo">312</span><a name="line.312"></a>
-<span class="sourceLineNo">313</span>  /*<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   * Test utility for building a NavigableSet for scanners.<a name="line.314"></a>
-<span class="sourceLineNo">315</span>   * @param strCols<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * @return<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   */<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  NavigableSet&lt;byte[]&gt; getCols(String ...strCols) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    NavigableSet&lt;byte[]&gt; cols = new TreeSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    for (String col : strCols) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      byte[] bytes = Bytes.toBytes(col);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      cols.add(bytes);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    return cols;<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>  @Test<a name="line.327"></a>
-<span class="sourceLineNo">328</span>  public void testFullRowGetDoesNotOverreadWhenRowInsideOneBlock() throws IOException {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    // Do a Get against row two. Row two is inside a block that starts with row TWO but ends with<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    // row TWO_POINT_TWO. We should read one block only.<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    Get get = new Get(TWO);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    Scan scan = new Scan(get);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      while (scanner.next(results)) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        continue;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      assertEquals(4, results.size());<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      // We should have gone the optimize route 5 times totally... an INCLUDE for the four cells<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      // in the row plus the DONE on the end.<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      assertEquals(5, scanner.count.get());<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      // For a full row Get, there should be no opportunity for scanner optimization.<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      assertEquals(0, scanner.optimization.get());<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  }<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  @Test<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  public void testFullRowSpansBlocks() throws IOException {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    // Do a Get against row FOUR. It spans two blocks.<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    Get get = new Get(FOUR);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    Scan scan = new Scan(get);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      while (scanner.next(results)) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        continue;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      }<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      assertEquals(5, results.size());<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      // We should have gone the optimize route 6 times totally... an INCLUDE for the five cells<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      // in the row plus the DONE on the end.<a name="line.363"></a>
-<span class="sourceLineNo">364</span>      assertEquals(6, scanner.count.get());<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      // For a full row Get, there should be no opportunity for scanner optimization.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      assertEquals(0, scanner.optimization.get());<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>  /**<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * Test optimize in StoreScanner. Test that we skip to the next 'block' when we it makes sense<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * reading the block 'index'.<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * @throws IOException<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   */<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  @Test<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  public void testOptimize() throws IOException {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    Scan scan = new Scan();<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    // A scan that just gets the first qualifier on each row of the CELL_GRID<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    scan.addColumn(CF, ONE);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      while (scanner.next(results)) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>        continue;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      }<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      assertEquals(4, results.size());<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      for (Cell cell: results) {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>        assertTrue(Bytes.equals(ONE, 0, ONE.length,<a name="line.389"></a>
-<span class="sourceLineNo">390</span>            cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength()));<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      }<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      assertTrue("Optimize should do some optimizations", scanner.optimization.get() &gt; 0);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    }<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  }<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>  /**<a name="line.396"></a>
-<span class="sourceLineNo">397</span>   * Ensure the optimize Scan method in StoreScanner does not get in the way of a Get doing minimum<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * work... seeking to start of block and then SKIPPING until we find the wanted Cell.<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * This 'simple' scenario mimics case of all Cells fitting inside a single HFileBlock.<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * See HBASE-15392. This test is a little cryptic. Takes a bit of staring to figure what it up to.<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * @throws IOException<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  @Test<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  public void testOptimizeAndGet() throws IOException {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    // First test a Get of two columns in the row R2. Every Get is a Scan. Get columns named<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    // R2 and R3.<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    Get get = new Get(TWO);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    get.addColumn(CF, TWO);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    get.addColumn(CF, THREE);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    Scan scan = new Scan(get);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      // For a Get there should be no more next's after the first call.<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      assertEquals(false, scanner.next(results));<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      // Should be one result only.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      assertEquals(2, results.size());<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      // And we should have gone through optimize twice only.<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      assertEquals("First qcode is SEEK_NEXT_COL and second INCLUDE_AND_SEEK_NEXT_ROW", 3,<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        scanner.count.get());<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  }<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>  /**<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   * Ensure that optimize does not cause the Get to do more seeking than required. Optimize<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   * (see HBASE-15392) was causing us to seek all Cells in a block when a Get Scan if the next block<a name="line.425"></a>
-<span class="sourceLineNo">426</span>   * index/start key was a different row to the current one. A bug. We'd call next too often<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * because we had to exhaust all Cells in the current row making us load the next block just to<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * discard what we read there. This test is a little cryptic. Takes a bit of staring to figure<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * what it up to.<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   * @throws IOException<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   */<a name="line.431"></a>
-<span class="sourceLineNo">432</span>  @Test<a name="line.432"></a>
-<span class="sourceLineNo">433</span>  public void testOptimizeAndGetWithFakedNextBlockIndexStart() throws IOException {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    // First test a Get of second column in the row R2. Every Get is a Scan. Second column has a<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    // qualifier of R2.<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    Get get = new Get(THREE);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    get.addColumn(CF, TWO);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    Scan scan = new Scan(get);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      // For a Get there should be no more next's after the first call.<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      assertEquals(false, scanner.next(results));<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      // Should be one result only.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      assertEquals(1, results.size());<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      // And we should have gone through optimize twice only.<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      assertEquals("First qcode is SEEK_NEXT_COL and second INCLUDE_AND_SEEK_NEXT_ROW", 2,<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        scanner.count.get());<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>  @Test<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  public void testScanTimeRange() throws IOException {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    String r1 = "R1";<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    // returns only 1 of these 2 even though same timestamp<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        create(r1, CF_STR, "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.456"></a>
-<span class="sourceLineNo">457</span>        create(r1, CF_STR, "a", 2, KeyValue.Type.Put, "dont-care"),<a name="line.457"></a>
-<span class="sourceLineNo">458</span>        create(r1, CF_STR, "a", 3, KeyValue.Type.Put, "dont-care"),<a name="line.458"></a>
-<span class="sourceLineNo">459</span>        create(r1, CF_STR, "a", 4, KeyValue.Type.Put, "dont-care"),<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        create(r1, CF_STR, "a", 5, KeyValue.Type.Put, "dont-care"),<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    };<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    List&lt;KeyValueScanner&gt; scanners = Arrays.&lt;KeyValueScanner&gt;asList(<a name="line.462"></a>
-<span class="sourceLineNo">463</span>        new KeyValueScanner[] {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>            new KeyValueScanFixture(CellComparator.getInstance(), kvs)<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    });<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    scanSpec.setTimeRange(0, 6);<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    scanSpec.readAllVersions();<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    List&lt;Cell&gt; results = null;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      results = new ArrayList&lt;&gt;();<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      assertEquals(true, scan.next(results));<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      assertEquals(5, results.size());<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      assertEquals(kvs[kvs.length - 1], results.get(0));<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    }<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    // Scan limited TimeRange<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    scanSpec.setTimeRange(1, 3);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    scanSpec.readAllVersions();<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      results = new ArrayList&lt;&gt;();<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      assertEquals(true, scan.next(results));<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      assertEquals(2, results.size());<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    }<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    // Another range.<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    scanSpec.setTimeRange(5, 10);<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    scanSpec.readAllVersions();<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      results = new ArrayList&lt;&gt;();<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      assertEquals(true, scan.next(results));<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      assertEquals(1, results.size());<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    }<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    // See how TimeRange and Versions interact.<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    // Another range.<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    scanSpec.setTimeRange(0, 10);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    scanSpec.readVersions(3);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      results = new ArrayList&lt;&gt;();<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      assertEquals(true, scan.next(results));<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      assertEquals(3, results.size());<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>  @Test<a name="line.506"></a>
-<span class="sourceLineNo">507</span>  public void testScanSameTimestamp() throws IOException {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    // returns only 1 of these 2 even though same timestamp<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.510"></a>
-<span class="sourceLineNo">511</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    };<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    List&lt;KeyValueScanner&gt; scanners = Arrays.asList(<a name="line.513"></a>
-<span class="sourceLineNo">514</span>        new KeyValueScanner[] {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>            new KeyValueScanFixture(CellComparator.getInstance(), kvs)<a name="line.515"></a>
-<span class="sourceLineNo">516</span>        });<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    // this only uses maxVersions (default=1) and TimeRange (default=all)<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      assertEquals(true, scan.next(results));<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      assertEquals(1, results.size());<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      assertEquals(kvs[0], results.get(0));<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    }<a name="line.525"></a>
-<span class="sourceLineNo">526</span>  }<a name="line.526"></a>
-<span class="sourceLineNo">527</span><a name="line.527"></a>
-<span class="sourceLineNo">528</span>  /*<a name="line.528"></a>
-<span class="sourceLineNo">529</span>   * Test test shows exactly how the matcher's return codes confuses the StoreScanner<a name="line.529"></a>
-<span class="sourceLineNo">530</span>   * and prevent it from doing the right thing.  Seeking once, then nexting twice<a name="line.530"></a>
-<span class="sourceLineNo">531</span>   * should return R1, then R2, but in this case it doesnt.<a name="line.531"></a>
-<span class="sourceLineNo">532</span>   * TODO this comment makes no sense above. Appears to do the right thing.<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   * @throws IOException<a name="line.533"></a>
-<span class="sourceLineNo">534</span>   */<a name="line.534"></a>
-<span class="sourceLineNo">535</span>  @Test<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  public void testWontNextToNext() throws IOException {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    // build the scan file:<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.538"></a>
-<span class="sourceLineNo">539</span>        create("R1", "cf", "a", 2, KeyValue.Type.Put, "dont-care"),<a name="line.539"></a>
-<span class="sourceLineNo">540</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.540"></a>
-<span class="sourceLineNo">541</span>        create("R2", "cf", "a", 1, KeyValue.Type.Put, "dont-care")<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    };<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    List&lt;KeyValueScanner&gt; scanners = scanFixture(kvs);<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    // this only uses maxVersions (default=1) and TimeRange (default=all)<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.548"></a>
-<span class="sourceLineNo">549</span>      scan.next(results);<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      assertEquals(1, results.size());<a name="line.550"></a>
-<span class="sourceLineNo">551</span>      assertEquals(kvs[0], results.get(0));<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      // should be ok...<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      // now scan _next_ again.<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      results.clear();<a name="line.554"></a>
+<span class="sourceLineNo">279</span>    @Override<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    public Cell getNextIndexedKey() {<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>  @Test<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  public void testWithColumnCountGetFilter() throws Exception {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    Get get = new Get(ONE);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    get.readAllVersions();<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    get.addFamily(CF);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    get.setFilter(new ColumnCountGetFilter(2));<a name="line.290"></a>
+<span class="sourceLineNo">291</span><a name="line.291"></a>
+<span class="sourceLineNo">292</span>    try (CellWithVersionsNoOptimizeStoreScanner scannerNoOptimize =<a name="line.292"></a>
+<span class="sourceLineNo">293</span>        new CellWithVersionsNoOptimizeStoreScanner(new Scan(get), this.scanInfo)) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      while (scannerNoOptimize.next(results)) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        continue;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      }<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      assertEquals(2, results.size());<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      assertTrue(CellUtil.matchingColumn(results.get(0), CELL_WITH_VERSIONS[0]));<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      assertTrue(CellUtil.matchingColumn(results.get(1), CELL_WITH_VERSIONS[2]));<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      assertTrue("Optimize should do some optimizations",<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        scannerNoOptimize.optimization.get() == 0);<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>    get.setFilter(new ColumnCountGetFilter(2));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    try (CellWithVersionsStoreScanner scanner =<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        new CellWithVersionsStoreScanner(new Scan(get), this.scanInfo)) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      while (scanner.next(results)) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>        continue;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      assertEquals(2, results.size());<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      assertTrue(CellUtil.matchingColumn(results.get(0), CELL_WITH_VERSIONS[0]));<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      assertTrue(CellUtil.matchingColumn(results.get(1), CELL_WITH_VERSIONS[2]));<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      assertTrue("Optimize should do some optimizations", scanner.optimization.get() &gt; 0);<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    }<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>   * Test utility for building a NavigableSet for scanners.<a name="line.320"></a>
+<span class="sourceLineNo">321</span>   * @param strCols<a name="line.321"></a>
+<span class="sourceLineNo">322</span>   * @return<a name="line.322"></a>
+<span class="sourceLineNo">323</span>   */<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  NavigableSet&lt;byte[]&gt; getCols(String ...strCols) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    NavigableSet&lt;byte[]&gt; cols = new TreeSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    for (String col : strCols) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      byte[] bytes = Bytes.toBytes(col);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      cols.add(bytes);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    }<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    return cols;<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>  @Test<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  public void testFullRowGetDoesNotOverreadWhenRowInsideOneBlock() throws IOException {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    // Do a Get against row two. Row two is inside a block that starts with row TWO but ends with<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    // row TWO_POINT_TWO. We should read one block only.<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    Get get = new Get(TWO);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    Scan scan = new Scan(get);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.340"></a>
+<span class="sourceLineNo">341</span>      while (scanner.next(results)) {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        continue;<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      assertEquals(4, results.size());<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      // We should have gone the optimize route 5 times totally... an INCLUDE for the four cells<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      // in the row plus the DONE on the end.<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      assertEquals(5, scanner.count.get());<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      // For a full row Get, there should be no opportunity for scanner optimization.<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      assertEquals(0, scanner.optimization.get());<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  @Test<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  public void testFullRowSpansBlocks() throws IOException {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    // Do a Get against row FOUR. It spans two blocks.<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    Get get = new Get(FOUR);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    Scan scan = new Scan(get);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      while (scanner.next(results)) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>        continue;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      assertEquals(5, results.size());<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      // We should have gone the optimize route 6 times totally... an INCLUDE for the five cells<a name="line.368"></a>
+<span class="sourceLineNo">369</span>      // in the row plus the DONE on the end.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      assertEquals(6, scanner.count.get());<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      // For a full row Get, there should be no opportunity for scanner optimization.<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      assertEquals(0, scanner.optimization.get());<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><a name="line.375"></a>
+<span class="sourceLineNo">376</span>  /**<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   * Test optimize in StoreScanner. Test that we skip to the next 'block' when we it makes sense<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * reading the block 'index'.<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   * @throws IOException<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   */<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  @Test<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  public void testOptimize() throws IOException {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    Scan scan = new Scan();<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    // A scan that just gets the first qualifier on each row of the CELL_GRID<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    scan.addColumn(CF, ONE);<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      while (scanner.next(results)) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>        continue;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      }<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      assertEquals(4, results.size());<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      for (Cell cell: results) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        assertTrue(Bytes.equals(ONE, 0, ONE.length,<a name="line.395"></a>
+<span class="sourceLineNo">396</span>            cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength()));<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      }<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      assertTrue("Optimize should do some optimizations", scanner.optimization.get() &gt; 0);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    }<a name="line.399"></a>
+<span class="sourceLineNo">400</span>  }<a name="line.400"></a>
+<span class="sourceLineNo">401</span><a name="line.401"></a>
+<span class="sourceLineNo">402</span>  /**<a name="line.402"></a>
+<span class="sourceLineNo">403</span>   * Ensure the optimize Scan method in StoreScanner does not get in the way of a Get doing minimum<a name="line.403"></a>
+<span class="sourceLineNo">404</span>   * work... seeking to start of block and then SKIPPING until we find the wanted Cell.<a name="line.404"></a>
+<span class="sourceLineNo">405</span>   * This 'simple' scenario mimics case of all Cells fitting inside a single HFileBlock.<a name="line.405"></a>
+<span class="sourceLineNo">406</span>   * See HBASE-15392. This test is a little cryptic. Takes a bit of staring to figure what it up to.<a name="line.406"></a>
+<span class="sourceLineNo">407</span>   * @throws IOException<a name="line.407"></a>
+<span class="sourceLineNo">408</span>   */<a name="line.408"></a>
+<span class="sourceLineNo">409</span>  @Test<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  public void testOptimizeAndGet() throws IOException {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    // First test a Get of two columns in the row R2. Every Get is a Scan. Get columns named<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    // R2 and R3.<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    Get get = new Get(TWO);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    get.addColumn(CF, TWO);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    get.addColumn(CF, THREE);<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    Scan scan = new Scan(get);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      // For a Get there should be no more next's after the first call.<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      assertEquals(false, scanner.next(results));<a name="line.420"></a>
+<span class="sourceLineNo">421</span>      // Should be one result only.<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      assertEquals(2, results.size());<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      // And we should have gone through optimize twice only.<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      assertEquals("First qcode is SEEK_NEXT_COL and second INCLUDE_AND_SEEK_NEXT_ROW", 3,<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        scanner.count.get());<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><a name="line.428"></a>
+<span class="sourceLineNo">429</span>  /**<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * Ensure that optimize does not cause the Get to do more seeking than required. Optimize<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   * (see HBASE-15392) was causing us to seek all Cells in a block when a Get Scan if the next block<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   * index/start key was a different row to the current one. A bug. We'd call next too often<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   * because we had to exhaust all Cells in the current row making us load the next block just to<a name="line.433"></a>
+<span class="sourceLineNo">434</span>   * discard what we read there. This test is a little cryptic. Takes a bit of staring to figure<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   * what it up to.<a name="line.435"></a>
+<span class="sourceLineNo">436</span>   * @throws IOException<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   */<a name="line.437"></a>
+<span class="sourceLineNo">438</span>  @Test<a name="line.438"></a>
+<span class="sourceLineNo">439</span>  public void testOptimizeAndGetWithFakedNextBlockIndexStart() throws IOException {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    // First test a Get of second column in the row R2. Every Get is a Scan. Second column has a<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    // qualifier of R2.<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    Get get = new Get(THREE);<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    get.addColumn(CF, TWO);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    Scan scan = new Scan(get);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      // For a Get there should be no more next's after the first call.<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      assertEquals(false, scanner.next(results));<a name="line.448"></a>
+<span class="sourceLineNo">449</span>      // Should be one result only.<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      assertEquals(1, results.size());<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      // And we should have gone through optimize twice only.<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      assertEquals("First qcode is SEEK_NEXT_COL and second INCLUDE_AND_SEEK_NEXT_ROW", 2,<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        scanner.count.get());<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>  @Test<a name="line.457"></a>
+<span class="sourceLineNo">458</span>  public void testScanTimeRange() throws IOException {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    String r1 = "R1";<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    // returns only 1 of these 2 even though same timestamp<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.461"></a>
+<span class="sourceLineNo">462</span>        create(r1, CF_STR, "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.462"></a>
+<span class="sourceLineNo">463</span>        create(r1, CF_STR, "a", 2, KeyValue.Type.Put, "dont-care"),<a name="line.463"></a>
+<span class="sourceLineNo">464</span>        create(r1, CF_STR, "a", 3, KeyValue.Type.Put, "dont-care"),<a name="line.464"></a>
+<span class="sourceLineNo">465</span>        create(r1, CF_STR, "a", 4, KeyValue.Type.Put, "dont-care"),<a name="line.465"></a>
+<span class="sourceLineNo">466</span>        create(r1, CF_STR, "a", 5, KeyValue.Type.Put, "dont-care"),<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    };<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    List&lt;KeyValueScanner&gt; scanners = Arrays.&lt;KeyValueScanner&gt;asList(<a name="line.468"></a>
+<span class="sourceLineNo">469</span>        new KeyValueScanner[] {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>            new KeyValueScanFixture(CellComparator.getInstance(), kvs)<a name="line.470"></a>
+<span class="sourceLineNo">471</span>    });<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    scanSpec.setTimeRange(0, 6);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    scanSpec.readAllVersions();<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    List&lt;Cell&gt; results = null;<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>      results = new ArrayList&lt;&gt;();<a name="line.477"></a>
+<span class="sourceLineNo">478</span>      assertEquals(true, scan.next(results));<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      assertEquals(5, results.size());<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      assertEquals(kvs[kvs.length - 1], results.get(0));<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    }<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    // Scan limited TimeRange<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    scanSpec.setTimeRange(1, 3);<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    scanSpec.readAllVersions();<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      results = new ArrayList&lt;&gt;();<a name="line.487"></a>
+<span class="sourceLineNo">488</span>      assertEquals(true, scan.next(results));<a name="line.488"></a>
+<span class="sourceLineNo">489</span>      assertEquals(2, results.size());<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    }<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    // Another range.<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    scanSpec.setTimeRange(5, 10);<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    scanSpec.readAllVersions();<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.495"></a>
+<span class="sourceLineNo">496</span>      results = new ArrayList&lt;&gt;();<a name="line.496"></a>
+<span class="sourceLineNo">497</span>      assertEquals(true, scan.next(results));<a name="line.497"></a>
+<span class="sourceLineNo">498</span>      assertEquals(1, results.size());<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    }<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    // See how TimeRange and Versions interact.<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    // Another range.<a name="line.501"></a>
+<span class="sourceLineNo">502</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    scanSpec.setTimeRange(0, 10);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    scanSpec.readVersions(3);<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.505"></a>
+<span class="sourceLineNo">506</span>      results = new ArrayList&lt;&gt;();<a name="line.506"></a>
+<span class="sourceLineNo">507</span>      assertEquals(true, scan.next(results));<a name="line.507"></a>
+<span class="sourceLineNo">508</span>      assertEquals(3, results.size());<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><a name="line.511"></a>
+<span class="sourceLineNo">512</span>  @Test<a name="line.512"></a>
+<span class="sourceLineNo">513</span>  public void testScanSameTimestamp() throws IOException {<a name="line.513"></a>
+<span class="sourceLineNo">514</span>    // returns only 1 of these 2 even though same timestamp<a name="line.514"></a>
+<span class="sourceLineNo">515</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.515"></a>
+<span class="sourceLineNo">516</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.516"></a>
+<span class="sourceLineNo">517</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    };<a name="line.518"></a>
+<span class="sourceLineNo">519</span>    List&lt;KeyValueScanner&gt; scanners = Arrays.asList(<a name="line.519"></a>
+<span class="sourceLineNo">520</span>        new KeyValueScanner[] {<a name="line.520"></a>
+<span class="sourceLineNo">521</span>            new KeyValueScanFixture(CellComparator.getInstance(), kvs)<a name="line.521"></a>
+<span class="sourceLineNo">522</span>        });<a name="line.522"></a>
+<span class="sourceLineNo">523</span><a name="line.523"></a>
+<span class="sourceLineNo">524</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    // this only uses maxVersions (default=1) and TimeRange (default=all)<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.526"></a>
+<span class="sourceLineNo">527</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.527"></a>
+<span class="sourceLineNo">528</span>      assertEquals(true, scan.next(results));<a name="line.528"></a>
+<span class="sourceLineNo">529</span>      assertEquals(1, results.size());<a name="line.529"></a>
+<span class="sourceLineNo">530</span>      assertEquals(kvs[0], results.get(0));<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    }<a name="line.531"></a>
+<span class="sourceLineNo">532</span>  }<a name="line.532"></a>
+<span class="sourceLineNo">533</span><a name="line.533"></a>
+<span class="sourceLineNo">534</span>  /*<a name="line.534"></a>
+<span class="sourceLineNo">535</span>   * Test test shows exactly how the matcher's return codes confuses the StoreScanner<a name="line.535"></a>
+<span class="sourceLineNo">536</span>   * and prevent it from doing the right thing.  Seeking once, then nexting twice<a name="line.536"></a>
+<span class="sourceLineNo">537</span>   * should return R1, then R2, but in this case it doesnt.<a name="line.537"></a>
+<span class="sourceLineNo">538</span>   * TODO this comment makes no sense above. Appears to do the right thing.<a name="line.538"></a>
+<span class="sourceLineNo">539</span>   * @throws IOException<a name="line.539"></a>
+<span class="sourceLineNo">540</span>   */<a name="line.540"></a>
+<span class="sourceLineNo">541</span>  @Test<a name="line.541"></a>
+<span class="sourceLineNo">542</span>  public void testWontNextToNext() throws IOException {<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    // build the scan file:<a name="line.543"></a>
+<span class="sourceLineNo">544</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.544"></a>
+<span class="sourceLineNo">545</span>        create("R1", "cf", "a", 2, KeyValue.Type.Put, "dont-care"),<a name="line.545"></a>
+<span class="sourceLineNo">546</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.546"></a>
+<span class="sourceLineNo">547</span>        create("R2", "cf", "a", 1, KeyValue.Type.Put, "dont-care")<a name="line.547"></a>
+<span class="sourceLineNo">548</span>    };<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    List&lt;KeyValueScanner&gt; scanners = scanFixture(kvs);<a name="line.549"></a>
+<span class="sourceLineNo">550</span><a name="line.550"></a>
+<span class="sourceLineNo">551</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    // this only uses maxVersions (default=1) and TimeRange (default=all)<a name="line.552"></a>
+<span class="sourceLineNo">553</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.553"></a>
+<span class="sourceLineNo">554</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.554"></a>
 <span class="sourceLineNo">555</span>      scan.next(results);<a name="line.555"></a>
 <span class="sourceLineNo">556</span>      assertEquals(1, results.size());<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      assertEquals(kvs[2], results.get(0));<a name="line.557"></a>
-<span class="sourceLineNo">558</span><a name="line.558"></a>
-<span class="sourceLineNo">559</span>      results.clear();<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      scan.next(results);<a name="line.560"></a>
-<span class="sourceLineNo">561</span>      assertEquals(0, results.size());<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">557</span>      assertEquals(kvs[0], results.get(0));<a name="line.557"></a>
+<span class="sourceLineNo">558</span>      // should be ok...<a name="line.558"></a>
+<span class="sourceLineNo">559</span>      // now scan _next_ again.<a name="line.559"></a>
+<span class="sourceLineNo">560</span>      results.clear();<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      scan.next(results);<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      assertEquals(1, results.size());<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      assertEquals(kvs[2], results.get(0));<a name="line.563"></a>
 <span class="sourceLineNo">564</span><a name="line.564"></a>
-<span class="sourceLineNo">565</span><a name="line.565"></a>
-<span class="sourceLineNo">566</span>  @Test<a name="line.566"></a>
-<span class="sourceLineNo">567</span>  public void testDeleteVersionSameTimestamp() throws IOException {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    KeyValue [] kvs = new KeyValue [] {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.569"></a>
-<span class="sourceLineNo">570</span>        create("R1", "cf", "a", 1, KeyValue.Type.Delete, "dont-care"),<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    };<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    List&lt;KeyValueScanner&gt; scanners = scanFixture(kvs);<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.574"></a>
-<span class="sourceLineNo">575</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      assertFalse(scan.next(results));<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      assertEquals(0, results.size());<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    }<a name="line.578"></a>
-<span class="sourceLineNo">579</span>  }<a name="line.579"></a>
-<span class="sourceLineNo">580</span><a name="line.580"></a>
-<span class="sourceLineNo">581</span>  /*<a name="line.581"></a>
-<span class="sourceLineNo">582</span>   * Test the case where there is a delete row 'in front of' the next row, the scanner<a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * will move to the next row.<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   */<a name="line.584"></a>
-<span class="sourceLineNo">585</span>  @Test<a name="line.585"></a>
-<span class="sourceLineNo">586</span>  public void testDeletedRowThenGoodRow() throws IOException {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    KeyValue [] kvs = new KeyValue [] {<a name="line.587"></a>
-<span class="sourceLineNo">588</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.588"></a>
-<span class="sourceLineNo">589</span>        create("R1", "cf", "a", 1, KeyValue.Type.Delete, "dont-care"),<a name="line.589"></a>
-<span class="sourceLineNo">590</span>        create("R2", "cf", "a", 20, KeyValue.Type.Put, "dont-care")<a name="line.590"></a>
-<span class="sourceLineNo">591</span>    };<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    List&lt;KeyValueScanner&gt; scanners = scanFixture(kvs);<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.595"></a>
-<span class="sourceLineNo">596</span>      assertEquals(true, scan.next(results));<a name="line.596"></a>
-<span class="sourceLineNo">597</span>      assertEquals(0, results.size());<a name="line.597"></a>
-<span class="sourceLineNo">598</span><a name="line.598"></a>
-<span class="sourceLineNo">599</span>      assertEquals(true, scan.next(results));<a name="line.599"></a>
-<span class="sourceLineNo">600</span>      assertEquals(1, results.size());<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      assertEquals(kvs[2], results.get(0));<a name="line.601"></a>
-<span class="sourceLineNo">602</span><a name="line.602"></a>
-<span class="sourceLineNo">603</span>      assertEquals(false, scan.next(results));<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    }<a name="line.604"></a>
-<span class="sourceLineNo">605</span>  }<a name="line.605"></a>
-<span class="sourceLineNo">606</span><a name="line.606"></a>
-<span class="sourceLineNo">607</span>  @Test<a name="line.607"></a>
-<span class="sourceLineNo">608</span>  public void testDeleteVersionMaskingMultiplePuts() throws IOException {<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    long now = System.currentTimeMillis();<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    KeyValue [] kvs1 = new KeyValue[] {<a name="line.610"></a>
-<span class="sourceLineNo">611</span>        create("R1", "cf", "a", now, KeyValue.Type.Put, "dont-care"),<a name="line.611"></a>
-<span class="sourceLineNo">612</span>        create("R1", "cf", "a", now, KeyValue.Type.Delete, "dont-care")<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    };<a name="line.613"></a>
-<span class="sourceLineNo">614</span>    KeyValue [] kvs2 = new KeyValue[] {<a name="line.614"></a>
-<span class="sourceLineNo">615</span>        create("R1", "cf", "a", now-500, KeyValue.Type.Put, "dont-care"),<a name="line.615"></a>
-<span class="sourceLineNo">616</span>        create("R1", "cf", "a", now-100, KeyValue.Type.Put, "dont-care"),<a name="line.616"></a>
-<span class="sourceLineNo">617</span>        create("R1", "cf", "a", now, KeyValue.Type.Put, "dont-care")<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    };<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    List&lt;KeyValueScanner&gt; scanners = scanFixture(kvs1, kvs2);<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>    try (StoreScanner scan = new StoreScanner(new Scan().withStartRow(Bytes.toBytes("R1")),<a name="line.621"></a>
-<span class="sourceLineNo">622</span>        scanInfo, getCols("a"), scanners)) {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.623"></a>
-<span class="sourceLineNo">624</span>      // the two put at ts=now will be masked by the 1 delete, and<a name="line.624"></a>
-<span class="sourceLineNo">625</span>      // since the scan default returns 1 version we'll return the newest<a name="line.625"></a>
-<span class="sourceLineNo">626</span>      // key, which is kvs[2], now-100.<a name="line.626"></a>
-<span class="sourceLineNo">627</span>      assertEquals(true, scan.next(results));<a name="line.627"></a>
-<span class="sourceLineNo">628</span>      assertEquals(1, results.size());<a name="line.628"></a>
-<span class="sourceLineNo">629</span>      assertEquals(kvs2[1], results.get(0));<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    }<a name="line.630"></a>
-<span class="sourceLineNo">631</span>  }<a name="line.631"></a>
-<span class="sourceLineNo">632</span><a name="line.632"></a>
-<span class="sourceLineNo">633</span>  @Test<a name="line.633"></a>
-<span class="sourceLineNo">634</span>  public void testDeleteVersionsMixedAndMultipleVersionReturn() throws IOException {<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    long now = System.currentTimeMillis();<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    KeyValue [] kvs1 = new KeyValue[] {<a name="line.636"></a>
-<span class="sourceLineNo">637</span>        create("R1", "cf", "a", now, KeyValue.Type.Put, "dont-care"),<a name="line.637"></a>
-<span class="sourceLineNo">638</span>        create("R1", "cf", "a", now, KeyValue.Type.Delete, "dont-care")<a name="line.638"></a>
-<span class="sourceLineNo">639</span>    };<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    KeyValue [] kvs2 = new KeyValue[] {<a name="line.640"></a>
-<span class="sourceLineNo">641</span>        create("R1", "cf", "a", now-500, KeyValue.Type.Put, "dont-care"),<a name="line.641"></a>
-<span class="sourceLineNo">642</span>        create("R1", "cf", "a", now+500, KeyValue.Type.Put, "dont-care"),<a name="line.642"></a>
+<span class="sourceLineNo">565</span>      results.clear();<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      scan.nex

<TRUNCATED>

[19/29] hbase-site git commit: Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-frame.html b/testdevapidocs/allclasses-frame.html
index 9b9b3db..b47c317 100644
--- a/testdevapidocs/allclasses-frame.html
+++ b/testdevapidocs/allclasses-frame.html
@@ -1180,6 +1180,7 @@
 <li><a href="org/apache/hadoop/hbase/client/TestGetProcedureResult.DummyProcedure.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestGetProcedureResult.DummyProcedure</a></li>
 <li><a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.html" title="class in org.apache.hadoop.hbase.master" target="classFrame">TestGetReplicationLoad</a></li>
 <li><a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html" title="class in org.apache.hadoop.hbase.master" target="classFrame">TestGetReplicationLoad.MyMaster</a></li>
+<li><a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestGetScanColumnsWithNewVersionBehavior</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestGetScanPartialResult.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestGetScanPartialResult</a></li>
 <li><a href="org/apache/hadoop/hbase/http/TestGlobalFilter.html" title="class in org.apache.hadoop.hbase.http" target="classFrame">TestGlobalFilter</a></li>
 <li><a href="org/apache/hadoop/hbase/http/TestGlobalFilter.RecordingFilter.html" title="class in org.apache.hadoop.hbase.http" target="classFrame">TestGlobalFilter.RecordingFilter</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-noframe.html b/testdevapidocs/allclasses-noframe.html
index 57c6d26..a79b0ea 100644
--- a/testdevapidocs/allclasses-noframe.html
+++ b/testdevapidocs/allclasses-noframe.html
@@ -1180,6 +1180,7 @@
 <li><a href="org/apache/hadoop/hbase/client/TestGetProcedureResult.DummyProcedure.html" title="class in org.apache.hadoop.hbase.client">TestGetProcedureResult.DummyProcedure</a></li>
 <li><a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.html" title="class in org.apache.hadoop.hbase.master">TestGetReplicationLoad</a></li>
 <li><a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html" title="class in org.apache.hadoop.hbase.master">TestGetReplicationLoad.MyMaster</a></li>
+<li><a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" title="class in org.apache.hadoop.hbase.client">TestGetScanColumnsWithNewVersionBehavior</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestGetScanPartialResult.html" title="class in org.apache.hadoop.hbase.client">TestGetScanPartialResult</a></li>
 <li><a href="org/apache/hadoop/hbase/http/TestGlobalFilter.html" title="class in org.apache.hadoop.hbase.http">TestGlobalFilter</a></li>
 <li><a href="org/apache/hadoop/hbase/http/TestGlobalFilter.RecordingFilter.html" title="class in org.apache.hadoop.hbase.http">TestGlobalFilter.RecordingFilter</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/constant-values.html b/testdevapidocs/constant-values.html
index b7830fa..e389b8b 100644
--- a/testdevapidocs/constant-values.html
+++ b/testdevapidocs/constant-values.html
@@ -3719,6 +3719,25 @@
 </li>
 <li class="blockList">
 <table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
+<caption><span>org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" title="class in org.apache.hadoop.hbase.client">TestGetScanColumnsWithNewVersionBehavior</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th scope="col">Constant Field</th>
+<th class="colLast" scope="col">Value</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.client.TestGetScanColumnsWithNewVersionBehavior.TS">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;long</code></td>
+<td><code><a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#TS">TS</a></code></td>
+<td class="colLast"><code>42L</code></td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
 <caption><span>org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetScanPartialResult.html" title="class in org.apache.hadoop.hbase.client">TestGetScanPartialResult</a></span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index b8ca33a..d1445fa 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -3433,6 +3433,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestCompleteResultScanResultCache.html#CF">CF</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestCompleteResultScanResultCache.html" title="class in org.apache.hadoop.hbase.client">TestCompleteResultScanResultCache</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#CF">CF</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" title="class in org.apache.hadoop.hbase.client">TestGetScanColumnsWithNewVersionBehavior</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGetScanPartialResult.html#CF">CF</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetScanPartialResult.html" title="class in org.apache.hadoop.hbase.client">TestGetScanPartialResult</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#CF">CF</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></dt>
@@ -4495,6 +4497,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGetProcedureResult.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetProcedureResult.html" title="class in org.apache.hadoop.hbase.client">TestGetProcedureResult</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" title="class in org.apache.hadoop.hbase.client">TestGetScanColumnsWithNewVersionBehavior</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGetScanPartialResult.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetScanPartialResult.html" title="class in org.apache.hadoop.hbase.client">TestGetScanPartialResult</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestHBaseAdminNoCluster.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestHBaseAdminNoCluster.html" title="class in org.apache.hadoop.hbase.client">TestHBaseAdminNoCluster</a></dt>
@@ -7629,6 +7633,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/TestDurability.html#COL">COL</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/TestDurability.html" title="class in org.apache.hadoop.hbase.regionserver.wal">TestDurability</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#col0">col0</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.querymatcher.<a href="org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html" title="class in org.apache.hadoop.hbase.regionserver.querymatcher">TestNewVersionBehaviorTracker</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestRowCounter.html#COL1">COL1</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestRowCounter.html" title="class in org.apache.hadoop.hbase.mapreduce">TestRowCounter</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/querymatcher/AbstractTestScanQueryMatcher.html#col1">col1</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.querymatcher.<a href="org/apache/hadoop/hbase/regionserver/querymatcher/AbstractTestScanQueryMatcher.html" title="class in org.apache.hadoop.hbase.regionserver.querymatcher">AbstractTestScanQueryMatcher</a></dt>
@@ -7667,6 +7673,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/querymatcher/TestExplicitColumnTracker.html#col3">col3</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.querymatcher.<a href="org/apache/hadoop/hbase/regionserver/querymatcher/TestExplicitColumnTracker.html" title="class in org.apache.hadoop.hbase.regionserver.querymatcher">TestExplicitColumnTracker</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#col3">col3</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.querymatcher.<a href="org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html" title="class in org.apache.hadoop.hbase.regionserver.querymatcher">TestNewVersionBehaviorTracker</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestKeyValueHeap.html#col3">col3</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestKeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">TestKeyValueHeap</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestNewVersionBehaviorFromClientSide.html#col3">col3</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestNewVersionBehaviorFromClientSide.html" title="class in org.apache.hadoop.hbase.regionserver">TestNewVersionBehaviorFromClientSide</a></dt>
@@ -7677,6 +7685,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/querymatcher/TestExplicitColumnTracker.html#col4">col4</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.querymatcher.<a href="org/apache/hadoop/hbase/regionserver/querymatcher/TestExplicitColumnTracker.html" title="class in org.apache.hadoop.hbase.regionserver.querymatcher">TestExplicitColumnTracker</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#col4">col4</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.querymatcher.<a href="org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html" title="class in org.apache.hadoop.hbase.regionserver.querymatcher">TestNewVersionBehaviorTracker</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestKeyValueHeap.html#col4">col4</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestKeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">TestKeyValueHeap</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/querymatcher/AbstractTestScanQueryMatcher.html#col5">col5</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.querymatcher.<a href="org/apache/hadoop/hbase/regionserver/querymatcher/AbstractTestScanQueryMatcher.html" title="class in org.apache.hadoop.hbase.regionserver.querymatcher">AbstractTestScanQueryMatcher</a></dt>
@@ -7701,6 +7711,12 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestLeaseRenewal.html#COL_QUAL">COL_QUAL</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestLeaseRenewal.html" title="class in org.apache.hadoop.hbase.client">TestLeaseRenewal</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#COLA">COLA</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" title="class in org.apache.hadoop.hbase.client">TestGetScanColumnsWithNewVersionBehavior</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#COLB">COLB</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" title="class in org.apache.hadoop.hbase.client">TestGetScanColumnsWithNewVersionBehavior</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#COLC">COLC</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" title="class in org.apache.hadoop.hbase.client">TestGetScanColumnsWithNewVersionBehavior</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/TestAssignmentManagerBase.html#collectAssignmentManagerMetrics--">collectAssignmentManagerMetrics()</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestAssignmentManagerBase.html" title="class in org.apache.hadoop.hbase.master.assignment">TestAssignmentManagerBase</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/TestMergeTableRegionsProcedure.html#collectAssignmentManagerMetrics--">collectAssignmentManagerMetrics()</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/TestMergeTableRegionsProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">TestMergeTableRegionsProcedure</a></dt>
@@ -22523,6 +22539,11 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.html#isMultiUnevenColumnFamilies-org.apache.hadoop.conf.Configuration-">isMultiUnevenColumnFamilies(Configuration)</a></span> - Static method in class org.apache.hadoop.hbase.test.<a href="org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.html" title="class in org.apache.hadoop.hbase.test">IntegrationTestBigLinkedList</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HBaseTestingUtility.html#isNewVersionBehaviorEnabled--">isNewVersionBehaviorEnabled()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></dt>
+<dd>
+<div class="block">Check whether the tests should assume NEW_VERSION_BEHAVIOR when creating
+  new column families.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/PerformanceEvaluation.TestOptions.html#isNomapred--">isNomapred()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/PerformanceEvaluation.TestOptions.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.TestOptions</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/types/TestStruct.SpecializedPojo1Type1.html#isNullable--">isNullable()</a></span> - Method in class org.apache.hadoop.hbase.types.<a href="org/apache/hadoop/hbase/types/TestStruct.SpecializedPojo1Type1.html" title="class in org.apache.hadoop.hbase.types">TestStruct.SpecializedPojo1Type1</a></dt>
@@ -28051,6 +28072,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tool/MapreduceTestingShim.html#newJobContext-org.apache.hadoop.conf.Configuration-">newJobContext(Configuration)</a></span> - Method in class org.apache.hadoop.hbase.tool.<a href="org/apache/hadoop/hbase/tool/MapreduceTestingShim.html" title="class in org.apache.hadoop.hbase.tool">MapreduceTestingShim</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html#newKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">newKVHeap(List&lt;? extends KeyValueScanner&gt;, CellComparator)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestStoreScanner.CellGridStoreScanner</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/LoadTestTool.html#newParser--">newParser()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/LoadTestTool.html" title="class in org.apache.hadoop.hbase.util">LoadTestTool</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/MasterProcedureSchedulerPerformanceEvaluation.ProcedureFactory.html#newProcedure-long-">newProcedure(long)</a></span> - Method in interface org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/MasterProcedureSchedulerPerformanceEvaluation.ProcedureFactory.html" title="interface in org.apache.hadoop.hbase.master.procedure">MasterProcedureSchedulerPerformanceEvaluation.ProcedureFactory</a></dt>
@@ -35001,6 +35024,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGet.html#ROW">ROW</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGet.html" title="class in org.apache.hadoop.hbase.client">TestGet</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#ROW">ROW</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" title="class in org.apache.hadoop.hbase.client">TestGetScanColumnsWithNewVersionBehavior</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGetScanPartialResult.html#ROW">ROW</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetScanPartialResult.html" title="class in org.apache.hadoop.hbase.client">TestGetScanPartialResult</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#ROW">ROW</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestIncrementsFromClientSide</a></dt>
@@ -37762,6 +37787,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGetProcedureResult.html#setUp--">setUp()</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetProcedureResult.html" title="class in org.apache.hadoop.hbase.client">TestGetProcedureResult</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#setUp--">setUp()</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" title="class in org.apache.hadoop.hbase.client">TestGetScanColumnsWithNewVersionBehavior</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGetScanPartialResult.html#setUp--">setUp()</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetScanPartialResult.html" title="class in org.apache.hadoop.hbase.client">TestGetScanPartialResult</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#setUp--">setUp()</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></dt>
@@ -42291,6 +42318,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.ScanThread.html#table">table</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.ScanThread.html" title="class in org.apache.hadoop.hbase.client">TestBlockEvictionFromClient.ScanThread</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#TABLE">TABLE</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" title="class in org.apache.hadoop.hbase.client">TestGetScanColumnsWithNewVersionBehavior</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGetScanPartialResult.html#TABLE">TABLE</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetScanPartialResult.html" title="class in org.apache.hadoop.hbase.client">TestGetScanPartialResult</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestRawAsyncTableLimitedScanWithFilter.html#TABLE">TABLE</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestRawAsyncTableLimitedScanWithFilter.html" title="class in org.apache.hadoop.hbase.client">TestRawAsyncTableLimitedScanWithFilter</a></dt>
@@ -43401,6 +43430,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGetProcedureResult.html#tearDown--">tearDown()</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetProcedureResult.html" title="class in org.apache.hadoop.hbase.client">TestGetProcedureResult</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#tearDown--">tearDown()</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" title="class in org.apache.hadoop.hbase.client">TestGetScanColumnsWithNewVersionBehavior</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGetScanPartialResult.html#tearDown--">tearDown()</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetScanPartialResult.html" title="class in org.apache.hadoop.hbase.client">TestGetScanPartialResult</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html#tearDown--">tearDown()</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestInvalidMutationDurabilityException.html" title="class in org.apache.hadoop.hbase.client">TestInvalidMutationDurabilityException</a></dt>
@@ -44583,6 +44614,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestClientOperationInterrupt.html#test">test</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestClientOperationInterrupt.html" title="class in org.apache.hadoop.hbase.client">TestClientOperationInterrupt</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#test--">test()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" title="class in org.apache.hadoop.hbase.client">TestGetScanColumnsWithNewVersionBehavior</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGetScanPartialResult.html#test--">test()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetScanPartialResult.html" title="class in org.apache.hadoop.hbase.client">TestGetScanPartialResult</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestRowComparator.html#test-java.util.function.Function-">test(Function&lt;byte[], T&gt;)</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestRowComparator.html" title="class in org.apache.hadoop.hbase.client">TestRowComparator</a></dt>
@@ -45173,6 +45206,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSideScanExcpetion</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" title="class in org.apache.hadoop.hbase.client">TestGetScanColumnsWithNewVersionBehavior</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGetScanPartialResult.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetScanPartialResult.html" title="class in org.apache.hadoop.hbase.client">TestGetScanPartialResult</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestHbck.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestHbck.html" title="class in org.apache.hadoop.hbase.client">TestHbck</a></dt>
@@ -48943,6 +48978,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/filter/TestColumnRangeFilter.html#TestColumnRangeFilterWithColumnPaginationFilter--">TestColumnRangeFilterWithColumnPaginationFilter()</a></span> - Method in class org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/TestColumnRangeFilter.html" title="class in org.apache.hadoop.hbase.filter">TestColumnRangeFilter</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#testColumns--">testColumns()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.querymatcher.<a href="org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html" title="class in org.apache.hadoop.hbase.regionserver.querymatcher">TestNewVersionBehaviorTracker</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/rest/model/TestColumnSchemaModel.html" title="class in org.apache.hadoop.hbase.rest.model"><span class="typeNameLink">TestColumnSchemaModel</span></a> - Class in <a href="org/apache/hadoop/hbase/rest/model/package-summary.html">org.apache.hadoop.hbase.rest.model</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/model/TestColumnSchemaModel.html#TestColumnSchemaModel--">TestColumnSchemaModel()</a></span> - Constructor for class org.apache.hadoop.hbase.rest.model.<a href="org/apache/hadoop/hbase/rest/model/TestColumnSchemaModel.html" title="class in org.apache.hadoop.hbase.rest.model">TestColumnSchemaModel</a></dt>
@@ -53161,6 +53198,13 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rsgroup/TestRSGroupsAdmin1.html#testGetRSGroupInfoOfTableCPHookCalled--">testGetRSGroupInfoOfTableCPHookCalled()</a></span> - Method in class org.apache.hadoop.hbase.rsgroup.<a href="org/apache/hadoop/hbase/rsgroup/TestRSGroupsAdmin1.html" title="class in org.apache.hadoop.hbase.rsgroup">TestRSGroupsAdmin1</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestGetScanColumnsWithNewVersionBehavior</span></a> - Class in <a href="org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></dt>
+<dd>
+<div class="block">Testcase for HBASE-21032, where use the wrong readType from a Scan instance which is actually a
+ get scan and cause returning only 1 cell per rpc call.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#TestGetScanColumnsWithNewVersionBehavior--">TestGetScanColumnsWithNewVersionBehavior()</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" title="class in org.apache.hadoop.hbase.client">TestGetScanColumnsWithNewVersionBehavior</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mob/TestMobFile.html#testGetScanner--">testGetScanner()</a></span> - Method in class org.apache.hadoop.hbase.mob.<a href="org/apache/hadoop/hbase/mob/TestMobFile.html" title="class in org.apache.hadoop.hbase.mob">TestMobFile</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/client/TestRemoteHTableRetries.html#testGetScanner--">testGetScanner()</a></span> - Method in class org.apache.hadoop.hbase.rest.client.<a href="org/apache/hadoop/hbase/rest/client/TestRemoteHTableRetries.html" title="class in org.apache.hadoop.hbase.rest.client">TestRemoteHTableRetries</a></dt>
@@ -61840,6 +61884,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html#testReverseScanWithCompaction--">testReverseScanWithCompaction()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html" title="class in org.apache.hadoop.hbase.client">TestBlockEvictionFromClient</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#testReverseScanWithFlush--">testReverseScanWithFlush()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestScannersFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestScannersFromClientSide</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/encoding/TestSeekBeforeWithReverseScan.html#testReverseScanWithoutPadding--">testReverseScanWithoutPadding()</a></span> - Method in class org.apache.hadoop.hbase.io.encoding.<a href="org/apache/hadoop/hbase/io/encoding/TestSeekBeforeWithReverseScan.html" title="class in org.apache.hadoop.hbase.io.encoding">TestSeekBeforeWithReverseScan</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/encoding/TestSeekBeforeWithReverseScan.html#testReverseScanWithPadding--">testReverseScanWithPadding()</a></span> - Method in class org.apache.hadoop.hbase.io.encoding.<a href="org/apache/hadoop/hbase/io/encoding/TestSeekBeforeWithReverseScan.html" title="class in org.apache.hadoop.hbase.io.encoding">TestSeekBeforeWithReverseScan</a></dt>
@@ -68302,6 +68348,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/ReplicationSourceDummy.html#tryThrottle-int-">tryThrottle(int)</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>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html#TS">TS</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" title="class in org.apache.hadoop.hbase.client">TestGetScanColumnsWithNewVersionBehavior</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestPutDotHas.html#TS">TS</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestPutDotHas.html" title="class in org.apache.hadoop.hbase.client">TestPutDotHas</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html#TS">TS</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestReversibleScanners.html" title="class in org.apache.hadoop.hbase.regionserver">TestReversibleScanners</a></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html b/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html
index 67df231..18929b7 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html
@@ -105,7 +105,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static interface <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3838">HBaseTestingUtility.PortAllocator.AvailablePortChecker</a></pre>
+<pre>static interface <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3882">HBaseTestingUtility.PortAllocator.AvailablePortChecker</a></pre>
 </li>
 </ul>
 </div>
@@ -149,7 +149,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockListLast">
 <li class="blockList">
 <h4>available</h4>
-<pre>boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html#line.3839">available</a>(int&nbsp;port)</pre>
+<pre>boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html#line.3883">available</a>(int&nbsp;port)</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html b/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html
index 2bf9775..3f3b03c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3777">HBaseTestingUtility.PortAllocator</a>
+<pre>static class <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3821">HBaseTestingUtility.PortAllocator</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 </li>
 </ul>
@@ -250,7 +250,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>MIN_RANDOM_PORT</h4>
-<pre>private static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3778">MIN_RANDOM_PORT</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3822">MIN_RANDOM_PORT</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HBaseTestingUtility.PortAllocator.MIN_RANDOM_PORT">Constant Field Values</a></dd>
@@ -263,7 +263,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>MAX_RANDOM_PORT</h4>
-<pre>private static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3779">MAX_RANDOM_PORT</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3823">MAX_RANDOM_PORT</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HBaseTestingUtility.PortAllocator.MAX_RANDOM_PORT">Constant Field Values</a></dd>
@@ -276,7 +276,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>takenRandomPorts</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3782">takenRandomPorts</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3826">takenRandomPorts</a></pre>
 <div class="block">A set of ports that have been claimed using <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#randomFreePort--"><code>randomFreePort()</code></a>.</div>
 </li>
 </ul>
@@ -286,7 +286,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>random</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3784">random</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3828">random</a></pre>
 </li>
 </ul>
 <a name="portChecker">
@@ -295,7 +295,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>portChecker</h4>
-<pre>private final&nbsp;<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator.AvailablePortChecker</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3785">portChecker</a></pre>
+<pre>private final&nbsp;<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator.AvailablePortChecker</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3829">portChecker</a></pre>
 </li>
 </ul>
 </li>
@@ -312,7 +312,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>PortAllocator</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3787">PortAllocator</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a>&nbsp;random)</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3831">PortAllocator</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a>&nbsp;random)</pre>
 </li>
 </ul>
 <a name="PortAllocator-java.util.Random-org.apache.hadoop.hbase.HBaseTestingUtility.PortAllocator.AvailablePortChecker-">
@@ -321,7 +321,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>PortAllocator</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3803">PortAllocator</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a>&nbsp;random,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3847">PortAllocator</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a>&nbsp;random,
                      <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator.AvailablePortChecker</a>&nbsp;portChecker)</pre>
 </li>
 </ul>
@@ -339,7 +339,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>randomFreePort</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3812">randomFreePort</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3856">randomFreePort</a>()</pre>
 <div class="block">Returns a random free port and marks that port as taken. Not thread-safe. Expected to be
  called from single-threaded test setup code/</div>
 </li>
@@ -350,7 +350,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>randomPort</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3833">randomPort</a>()</pre>
+<pre>private&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3877">randomPort</a>()</pre>
 <div class="block">Returns a random port. These ports cannot be registered with IANA and are
  intended for dynamic allocation (see http://bit.ly/dynports).</div>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html b/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html
index 7c56bbd..145f672 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2152">HBaseTestingUtility.SeenRowTracker</a>
+<pre>public static class <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2196">HBaseTestingUtility.SeenRowTracker</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">A tracker for tracking and validating table rows
  generated with <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A-"><code>HBaseTestingUtility.loadTable(Table, byte[])</code></a></div>
@@ -231,7 +231,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>dim</h4>
-<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2153">dim</a></pre>
+<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2197">dim</a></pre>
 </li>
 </ul>
 <a name="seenRows">
@@ -240,7 +240,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>seenRows</h4>
-<pre>int[][][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2154">seenRows</a></pre>
+<pre>int[][][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2198">seenRows</a></pre>
 </li>
 </ul>
 <a name="startRow">
@@ -249,7 +249,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>startRow</h4>
-<pre>byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2155">startRow</a></pre>
+<pre>byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2199">startRow</a></pre>
 </li>
 </ul>
 <a name="stopRow">
@@ -258,7 +258,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>stopRow</h4>
-<pre>byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2156">stopRow</a></pre>
+<pre>byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2200">stopRow</a></pre>
 </li>
 </ul>
 </li>
@@ -275,7 +275,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>SeenRowTracker</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2158">SeenRowTracker</a>(byte[]&nbsp;startRow,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2202">SeenRowTracker</a>(byte[]&nbsp;startRow,
                       byte[]&nbsp;stopRow)</pre>
 </li>
 </ul>
@@ -293,7 +293,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>reset</h4>
-<pre>void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2163">reset</a>()</pre>
+<pre>void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2207">reset</a>()</pre>
 </li>
 </ul>
 <a name="i-byte-">
@@ -302,7 +302,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>i</h4>
-<pre>int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2169">i</a>(byte&nbsp;b)</pre>
+<pre>int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2213">i</a>(byte&nbsp;b)</pre>
 </li>
 </ul>
 <a name="addRow-byte:A-">
@@ -311,7 +311,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>addRow</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2173">addRow</a>(byte[]&nbsp;row)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2217">addRow</a>(byte[]&nbsp;row)</pre>
 </li>
 </ul>
 <a name="validate--">
@@ -320,7 +320,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>validate</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2180">validate</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2224">validate</a>()</pre>
 <div class="block">Validate that all the rows between startRow and stopRow are seen exactly once, and
  all other rows none</div>
 </li>


[14/29] hbase-site git commit: Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html
index 5704943..3491d35 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html
@@ -651,7 +651,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CELL_WITH_VERSIONS_BLOCK2_BOUNDARY</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.211">CELL_WITH_VERSIONS_BLOCK2_BOUNDARY</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.217">CELL_WITH_VERSIONS_BLOCK2_BOUNDARY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.TestStoreScanner.CELL_WITH_VERSIONS_BLOCK2_BOUNDARY">Constant Field Values</a></dd>
@@ -664,7 +664,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CELL_WITH_VERSIONS</h4>
-<pre>private static final&nbsp;org.apache.hadoop.hbase.Cell[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.213">CELL_WITH_VERSIONS</a></pre>
+<pre>private static final&nbsp;org.apache.hadoop.hbase.Cell[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.219">CELL_WITH_VERSIONS</a></pre>
 </li>
 </ul>
 <a name="kvs">
@@ -673,7 +673,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>kvs</h4>
-<pre>private static final&nbsp;org.apache.hadoop.hbase.KeyValue[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.757">kvs</a></pre>
+<pre>private static final&nbsp;org.apache.hadoop.hbase.KeyValue[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.763">kvs</a></pre>
 </li>
 </ul>
 </li>
@@ -707,7 +707,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testWithColumnCountGetFilter</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.280">testWithColumnCountGetFilter</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.286">testWithColumnCountGetFilter</a>()
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -721,7 +721,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getCols</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.318">getCols</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;strCols)</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.324">getCols</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;strCols)</pre>
 </li>
 </ul>
 <a name="testFullRowGetDoesNotOverreadWhenRowInsideOneBlock--">
@@ -730,7 +730,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testFullRowGetDoesNotOverreadWhenRowInsideOneBlock</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.328">testFullRowGetDoesNotOverreadWhenRowInsideOneBlock</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.334">testFullRowGetDoesNotOverreadWhenRowInsideOneBlock</a>()
                                                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -744,7 +744,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testFullRowSpansBlocks</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.350">testFullRowSpansBlocks</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.356">testFullRowSpansBlocks</a>()
                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -758,7 +758,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testOptimize</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.376">testOptimize</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.382">testOptimize</a>()
                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Test optimize in StoreScanner. Test that we skip to the next 'block' when we it makes sense
  reading the block 'index'.</div>
@@ -774,7 +774,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testOptimizeAndGet</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.404">testOptimizeAndGet</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.410">testOptimizeAndGet</a>()
                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Ensure the optimize Scan method in StoreScanner does not get in the way of a Get doing minimum
  work... seeking to start of block and then SKIPPING until we find the wanted Cell.
@@ -792,7 +792,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testOptimizeAndGetWithFakedNextBlockIndexStart</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.433">testOptimizeAndGetWithFakedNextBlockIndexStart</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.439">testOptimizeAndGetWithFakedNextBlockIndexStart</a>()
                                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Ensure that optimize does not cause the Get to do more seeking than required. Optimize
  (see HBASE-15392) was causing us to seek all Cells in a block when a Get Scan if the next block
@@ -812,7 +812,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanTimeRange</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.452">testScanTimeRange</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.458">testScanTimeRange</a>()
                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -826,7 +826,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanSameTimestamp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.507">testScanSameTimestamp</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.513">testScanSameTimestamp</a>()
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -840,7 +840,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testWontNextToNext</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.536">testWontNextToNext</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.542">testWontNextToNext</a>()
                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -854,7 +854,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDeleteVersionSameTimestamp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.567">testDeleteVersionSameTimestamp</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.573">testDeleteVersionSameTimestamp</a>()
                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -868,7 +868,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDeletedRowThenGoodRow</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.586">testDeletedRowThenGoodRow</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.592">testDeletedRowThenGoodRow</a>()
                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -882,7 +882,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDeleteVersionMaskingMultiplePuts</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.608">testDeleteVersionMaskingMultiplePuts</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.614">testDeleteVersionMaskingMultiplePuts</a>()
                                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -896,7 +896,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDeleteVersionsMixedAndMultipleVersionReturn</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.634">testDeleteVersionsMixedAndMultipleVersionReturn</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.640">testDeleteVersionsMixedAndMultipleVersionReturn</a>()
                                                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -910,7 +910,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testWildCardOneVersionScan</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.659">testWildCardOneVersionScan</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.665">testWildCardOneVersionScan</a>()
                                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -924,7 +924,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testWildCardScannerUnderDeletes</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.677">testWildCardScannerUnderDeletes</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.683">testWildCardScannerUnderDeletes</a>()
                                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -938,7 +938,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDeleteFamily</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.711">testDeleteFamily</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.717">testDeleteFamily</a>()
                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -952,7 +952,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDeleteColumn</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.741">testDeleteColumn</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.747">testDeleteColumn</a>()
                       throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -966,7 +966,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testSkipColumn</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.771">testSkipColumn</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.777">testSkipColumn</a>()
                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -980,7 +980,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testWildCardTtlScan</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.795">testWildCardTtlScan</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.801">testWildCardTtlScan</a>()
                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -994,7 +994,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScannerReseekDoesntNPE</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.832">testScannerReseekDoesntNPE</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.838">testScannerReseekDoesntNPE</a>()
                                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1008,7 +1008,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testPeek</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.846">testPeek</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.852">testPeek</a>()
               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1022,7 +1022,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testExpiredDeleteFamily</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.862">testExpiredDeleteFamily</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.868">testExpiredDeleteFamily</a>()
                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Ensure that expired delete family markers don't override valid puts</div>
 <dl>
@@ -1037,7 +1037,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testDeleteMarkerLongevity</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.888">testDeleteMarkerLongevity</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.894">testDeleteMarkerLongevity</a>()
                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1051,7 +1051,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testPreadNotEnabledForCompactionStoreScanners</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.959">testPreadNotEnabledForCompactionStoreScanners</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.965">testPreadNotEnabledForCompactionStoreScanners</a>()
                                                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/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 f938956..9c93416 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -709,11 +709,11 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DataBlockEncodingTool.Manipulation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DataBlockEncodingTool.Manipulation</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestAtomicOperation.TestStep</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestCacheOnWriteInSchema.CacheOnWriteType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.Metric.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRegionServerReadRequestMetrics.Metric</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiLogThreshold.ActionType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestMultiLogThreshold.ActionType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestCacheOnWriteInSchema.CacheOnWriteType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DataBlockEncodingTool.Manipulation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DataBlockEncodingTool.Manipulation</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestAtomicOperation.TestStep</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html
index 185388e..3d4e606 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.37">TestNewVersionBehaviorTracker</a>
+<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.39">TestNewVersionBehaviorTracker</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 </li>
 </ul>
@@ -135,25 +135,37 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private byte[]</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#col1">col1</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#col0">col0</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#col1">col1</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#col2">col2</a></span></code>&nbsp;</td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code>private byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#col3">col3</a></span></code>&nbsp;</td>
+</tr>
 <tr class="rowColor">
+<td class="colFirst"><code>private byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#col4">col4</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>private org.apache.hadoop.hbase.CellComparator</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#comparator">comparator</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#family">family</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#row">row</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#value">value</a></span></code>&nbsp;</td>
 </tr>
@@ -191,26 +203,30 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </tr>
 <tr id="i0" class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#testFamilyVersionDelete--">testFamilyVersionDelete</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#testColumns--">testColumns</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/querymatcher/TestNewVersionBehaviorTracker.html#testFamilyVersionsDelete--">testFamilyVersionsDelete</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#testFamilyVersionDelete--">testFamilyVersionDelete</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i2" class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#testMaxVersionMask--">testMaxVersionMask</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#testFamilyVersionsDelete--">testFamilyVersionsDelete</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i3" class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#testMinVersionsAndTTL--">testMinVersionsAndTTL</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#testMaxVersionMask--">testMaxVersionMask</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i4" class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#testVersionDelete--">testVersionDelete</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#testMinVersionsAndTTL--">testMinVersionsAndTTL</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i5" class="rowColor">
 <td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#testVersionDelete--">testVersionDelete</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#testVersionsDelete--">testVersionsDelete</a></span>()</code>&nbsp;</td>
 </tr>
 </table>
@@ -241,7 +257,16 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CLASS_RULE</h4>
-<pre>public static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.40">CLASS_RULE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.42">CLASS_RULE</a></pre>
+</li>
+</ul>
+<a name="col0">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>col0</h4>
+<pre>private final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.45">col0</a></pre>
 </li>
 </ul>
 <a name="col1">
@@ -250,7 +275,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>col1</h4>
-<pre>private final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.43">col1</a></pre>
+<pre>private final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.46">col1</a></pre>
 </li>
 </ul>
 <a name="col2">
@@ -259,7 +284,25 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>col2</h4>
-<pre>private final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.44">col2</a></pre>
+<pre>private final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.47">col2</a></pre>
+</li>
+</ul>
+<a name="col3">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>col3</h4>
+<pre>private final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.48">col3</a></pre>
+</li>
+</ul>
+<a name="col4">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>col4</h4>
+<pre>private final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.49">col4</a></pre>
 </li>
 </ul>
 <a name="row">
@@ -268,7 +311,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>row</h4>
-<pre>private final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.45">row</a></pre>
+<pre>private final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.50">row</a></pre>
 </li>
 </ul>
 <a name="family">
@@ -277,7 +320,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>family</h4>
-<pre>private final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.46">family</a></pre>
+<pre>private final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.51">family</a></pre>
 </li>
 </ul>
 <a name="value">
@@ -286,7 +329,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>value</h4>
-<pre>private final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.47">value</a></pre>
+<pre>private final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.52">value</a></pre>
 </li>
 </ul>
 <a name="comparator">
@@ -295,7 +338,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>comparator</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.CellComparator <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.48">comparator</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.hbase.CellComparator <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.53">comparator</a></pre>
 </li>
 </ul>
 </li>
@@ -312,7 +355,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestNewVersionBehaviorTracker</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.37">TestNewVersionBehaviorTracker</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.39">TestNewVersionBehaviorTracker</a>()</pre>
 </li>
 </ul>
 </li>
@@ -323,13 +366,27 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <!--   -->
 </a>
 <h3>Method Detail</h3>
+<a name="testColumns--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testColumns</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.56">testColumns</a>()
+                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
 <a name="testMaxVersionMask--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>testMaxVersionMask</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.50">testMaxVersionMask</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.86">testMaxVersionMask</a>()</pre>
 </li>
 </ul>
 <a name="testVersionsDelete--">
@@ -338,7 +395,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testVersionsDelete</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.90">testVersionsDelete</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.126">testVersionsDelete</a>()</pre>
 </li>
 </ul>
 <a name="testVersionDelete--">
@@ -347,7 +404,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testVersionDelete</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.119">testVersionDelete</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.155">testVersionDelete</a>()</pre>
 </li>
 </ul>
 <a name="testFamilyVersionsDelete--">
@@ -356,7 +413,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testFamilyVersionsDelete</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.154">testFamilyVersionsDelete</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.190">testFamilyVersionsDelete</a>()</pre>
 </li>
 </ul>
 <a name="testFamilyVersionDelete--">
@@ -365,7 +422,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testFamilyVersionDelete</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.181">testFamilyVersionDelete</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.217">testFamilyVersionDelete</a>()</pre>
 </li>
 </ul>
 <a name="testMinVersionsAndTTL--">
@@ -374,7 +431,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testMinVersionsAndTTL</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.215">testMinVersionsAndTTL</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.251">testMinVersionsAndTTL</a>()
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/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 a9f1e66..fb48d2e 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -147,9 +147,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/FaultyFSLog.FailureType.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">FaultyFSLog.FailureType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/TestWALSplit.Corruptions.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALSplit.Corruptions</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/IOTestProvider.AllowedOperations.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">IOTestProvider.AllowedOperations</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/TestWALSplit.Corruptions.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALSplit.Corruptions</span></a></li>
+<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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/overview-tree.html b/testdevapidocs/overview-tree.html
index ee46588..cab19ff 100644
--- a/testdevapidocs/overview-tree.html
+++ b/testdevapidocs/overview-tree.html
@@ -2918,6 +2918,7 @@
 <li type="circle">org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestGetLastFlushedSequenceId.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">TestGetLastFlushedSequenceId</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetProcedureResult.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestGetProcedureResult</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">TestGetReplicationLoad</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestGetScanColumnsWithNewVersionBehavior</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetScanPartialResult.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestGetScanPartialResult</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.http.<a href="org/apache/hadoop/hbase/http/TestGlobalFilter.RecordingFilter.html" title="class in org.apache.hadoop.hbase.http"><span class="typeNameLink">TestGlobalFilter.RecordingFilter</span></a> (implements javax.servlet.Filter)</li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestGlobalMemStoreSize.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">TestGlobalMemStoreSize</span></a></li>


[21/29] hbase-site git commit: Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html
----------------------------------------------------------------------
diff --git a/testapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html b/testapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html
index 945486d..50cb7ca 100644
--- a/testapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html
+++ b/testapidocs/org/apache/hadoop/hbase/HBaseTestingUtility.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":10,"i2":10,"i3":10,"i4":9,"i5":10,"i6":10,"i7":10,"i8":9,"i9":9,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":9,"i16":10,"i17":10,"i18":9,"i19":42,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":41,"i26":41,"i27":10,"i28":10,"i29":10,"i30":42,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":9,"i37":9,"i38":9,"i39":9,"i40":9,"i41":9,"i42":9,"i43":10,"i44":9,"i45":9,"i46":9,"i47":9,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":42,"i70":42,"i71":10,"i72":10,"i73":10,"i74":10,"i75":10,"i76":10,"i77":9,"i78":10,"i79":10,"i80":10,"i81":10,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":10,"i91":10,"i92":10,"i93":10,"i94":10,"i95":9,"i96":9,"i97":10,"i98":9,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":10,"i105":10,"i106":10,"i107":10,"i108":9,"i109":9,"i110":9,"i111"
 :42,"i112":10,"i113":10,"i114":10,"i115":9,"i116":42,"i117":10,"i118":10,"i119":10,"i120":10,"i121":10,"i122":10,"i123":10,"i124":10,"i125":10,"i126":10,"i127":9,"i128":10,"i129":10,"i130":10,"i131":10,"i132":10,"i133":10,"i134":10,"i135":10,"i136":10,"i137":10,"i138":10,"i139":10,"i140":10,"i141":9,"i142":9,"i143":10,"i144":10,"i145":10,"i146":10,"i147":10,"i148":9,"i149":9,"i150":10,"i151":10,"i152":9,"i153":10,"i154":10,"i155":10,"i156":10,"i157":9,"i158":9,"i159":10,"i160":10,"i161":10,"i162":10,"i163":10,"i164":10,"i165":10,"i166":42,"i167":10,"i168":42,"i169":42,"i170":42,"i171":42,"i172":42,"i173":42,"i174":42,"i175":42,"i176":42,"i177":42,"i178":10,"i179":10,"i180":10,"i181":10,"i182":10,"i183":10,"i184":10,"i185":42,"i186":42,"i187":42,"i188":10,"i189":10,"i190":10,"i191":10,"i192":10,"i193":10,"i194":10,"i195":10,"i196":10,"i197":10,"i198":10,"i199":10,"i200":10,"i201":10,"i202":9,"i203":10,"i204":10,"i205":10,"i206":10,"i207":10,"i208":10,"i209":10,"i210":10,"i211":10,"i2
 12":10,"i213":10,"i214":10,"i215":10,"i216":10,"i217":10};
+var methods = {"i0":9,"i1":10,"i2":10,"i3":10,"i4":9,"i5":10,"i6":10,"i7":10,"i8":9,"i9":9,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":9,"i16":10,"i17":10,"i18":9,"i19":42,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":41,"i26":41,"i27":10,"i28":10,"i29":10,"i30":42,"i31":10,"i32":10,"i33":10,"i34":10,"i35":10,"i36":9,"i37":9,"i38":9,"i39":9,"i40":9,"i41":9,"i42":9,"i43":10,"i44":9,"i45":9,"i46":9,"i47":9,"i48":10,"i49":10,"i50":10,"i51":10,"i52":10,"i53":10,"i54":10,"i55":10,"i56":10,"i57":10,"i58":10,"i59":10,"i60":10,"i61":10,"i62":10,"i63":10,"i64":10,"i65":10,"i66":10,"i67":10,"i68":10,"i69":42,"i70":42,"i71":10,"i72":10,"i73":10,"i74":10,"i75":10,"i76":10,"i77":9,"i78":10,"i79":10,"i80":10,"i81":10,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":10,"i91":10,"i92":10,"i93":10,"i94":10,"i95":9,"i96":9,"i97":10,"i98":9,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":10,"i105":10,"i106":10,"i107":10,"i108":9,"i109":9,"i110":9,"i111"
 :42,"i112":10,"i113":10,"i114":10,"i115":9,"i116":42,"i117":10,"i118":10,"i119":10,"i120":10,"i121":10,"i122":10,"i123":10,"i124":10,"i125":10,"i126":10,"i127":9,"i128":10,"i129":10,"i130":10,"i131":10,"i132":10,"i133":10,"i134":10,"i135":10,"i136":10,"i137":10,"i138":10,"i139":10,"i140":10,"i141":10,"i142":9,"i143":9,"i144":10,"i145":10,"i146":10,"i147":10,"i148":10,"i149":9,"i150":9,"i151":10,"i152":10,"i153":9,"i154":10,"i155":10,"i156":10,"i157":10,"i158":9,"i159":9,"i160":10,"i161":10,"i162":10,"i163":10,"i164":10,"i165":10,"i166":10,"i167":42,"i168":10,"i169":42,"i170":42,"i171":42,"i172":42,"i173":42,"i174":42,"i175":42,"i176":42,"i177":42,"i178":42,"i179":10,"i180":10,"i181":10,"i182":10,"i183":10,"i184":10,"i185":10,"i186":42,"i187":42,"i188":42,"i189":10,"i190":10,"i191":10,"i192":10,"i193":10,"i194":10,"i195":10,"i196":10,"i197":10,"i198":10,"i199":10,"i200":10,"i201":10,"i202":10,"i203":9,"i204":10,"i205":10,"i206":10,"i207":10,"i208":10,"i209":10,"i210":10,"i211":10,"i2
 12":10,"i213":10,"i214":10,"i215":10,"i216":10,"i217":10,"i218":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";
@@ -1207,36 +1207,43 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </tr>
 <tr id="i129" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#isNewVersionBehaviorEnabled--">isNewVersionBehaviorEnabled</a></span>()</code>
+<div class="block">Check whether the tests should assume NEW_VERSION_BEHAVIOR when creating
+  new column families.</div>
+</td>
+</tr>
+<tr id="i130" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#isReadShortCircuitOn--">isReadShortCircuitOn</a></span>()</code>
 <div class="block">Get the HBase setting for dfs.client.read.shortcircuit from the conf or a system property.</div>
 </td>
 </tr>
-<tr id="i130" class="altColor">
+<tr id="i131" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#killMiniHBaseCluster--">killMiniHBaseCluster</a></span>()</code>
 <div class="block">Abruptly Shutdown HBase mini cluster.</div>
 </td>
 </tr>
-<tr id="i131" class="rowColor">
+<tr id="i132" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadNumericRows-org.apache.hadoop.hbase.client.Table-byte:A-int-int-">loadNumericRows</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;t,
                byte[]&nbsp;f,
                int&nbsp;startRow,
                int&nbsp;endRow)</code>&nbsp;</td>
 </tr>
-<tr id="i132" class="altColor">
+<tr id="i133" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRandomRows-org.apache.hadoop.hbase.client.Table-byte:A-int-int-">loadRandomRows</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;t,
               byte[]&nbsp;f,
               int&nbsp;rowSize,
               int&nbsp;totalRows)</code>&nbsp;</td>
 </tr>
-<tr id="i133" class="rowColor">
+<tr id="i134" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-">loadRegion</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/regionserver/HRegion.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;r,
           byte[]&nbsp;f)</code>&nbsp;</td>
 </tr>
-<tr id="i134" class="altColor">
+<tr id="i135" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-boolean-">loadRegion</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/regionserver/HRegion.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;r,
           byte[]&nbsp;f,
@@ -1244,26 +1251,26 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Load region with rows from 'aaa' to 'zzz'.</div>
 </td>
 </tr>
-<tr id="i135" class="rowColor">
+<tr id="i136" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadRegion-org.apache.hadoop.hbase.regionserver.Region-byte:A-">loadRegion</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/regionserver/Region.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;r,
           byte[]&nbsp;f)</code>&nbsp;</td>
 </tr>
-<tr id="i136" class="altColor">
+<tr id="i137" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A-">loadTable</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;t,
          byte[]&nbsp;f)</code>
 <div class="block">Load table with rows from 'aaa' to 'zzz'.</div>
 </td>
 </tr>
-<tr id="i137" class="rowColor">
+<tr id="i138" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A:A-">loadTable</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;t,
          byte[][]&nbsp;f)</code>
 <div class="block">Load table of multiple column families with rows from 'aaa' to 'zzz'.</div>
 </td>
 </tr>
-<tr id="i138" class="altColor">
+<tr id="i139" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A:A-byte:A-">loadTable</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;t,
          byte[][]&nbsp;f,
@@ -1271,7 +1278,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Load table of multiple column families with rows from 'aaa' to 'zzz'.</div>
 </td>
 </tr>
-<tr id="i139" class="rowColor">
+<tr id="i140" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A:A-byte:A-boolean-">loadTable</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;t,
          byte[][]&nbsp;f,
@@ -1280,7 +1287,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Load table of multiple column families with rows from 'aaa' to 'zzz'.</div>
 </td>
 </tr>
-<tr id="i140" class="altColor">
+<tr id="i141" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A-boolean-">loadTable</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;t,
          byte[]&nbsp;f,
@@ -1288,100 +1295,100 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Load table with rows from 'aaa' to 'zzz'.</div>
 </td>
 </tr>
-<tr id="i141" class="rowColor">
+<tr id="i142" class="altColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>[]&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#memStoreTSTagsAndOffheapCombination--">memStoreTSTagsAndOffheapCombination</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i142" class="altColor">
+<tr id="i143" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#modifyTableSync-org.apache.hadoop.hbase.client.Admin-org.apache.hadoop.hbase.client.TableDescriptor-">modifyTableSync</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Admin.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Admin</a>&nbsp;admin,
                <a href="../../../../../apidocs/org/apache/hadoop/hbase/client/TableDescriptor.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;desc)</code>
 <div class="block">Modify a table, synchronous.</div>
 </td>
 </tr>
-<tr id="i143" class="rowColor">
+<tr id="i144" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#moveRegionAndWait-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">moveRegionAndWait</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/RegionInfo.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;destRegion,
                  <a href="../../../../../apidocs/org/apache/hadoop/hbase/ServerName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">ServerName</a>&nbsp;destServer)</code>
 <div class="block">Move region to destination server and wait till region is completely moved and online</div>
 </td>
 </tr>
-<tr id="i144" class="altColor">
+<tr id="i145" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../apidocs/org/apache/hadoop/hbase/Waiter.ExplainingPredicate.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">Waiter.ExplainingPredicate</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateNoRegionsInTransition--">predicateNoRegionsInTransition</a></span>()</code>
 <div class="block">Returns a <a href="../../../../../apidocs/org/apache/hadoop/hbase/Waiter.Predicate.html?is-external=true" title="class or interface in org.apache.hadoop.hbase"><code>Waiter.Predicate</code></a> for checking that there are no regions in transition in master</div>
 </td>
 </tr>
-<tr id="i145" class="rowColor">
+<tr id="i146" class="altColor">
 <td class="colFirst"><code><a href="../../../../../apidocs/org/apache/hadoop/hbase/Waiter.Predicate.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">Waiter.Predicate</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateTableAvailable-org.apache.hadoop.hbase.TableName-">predicateTableAvailable</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Returns a <a href="../../../../../apidocs/org/apache/hadoop/hbase/Waiter.Predicate.html?is-external=true" title="class or interface in org.apache.hadoop.hbase"><code>Waiter.Predicate</code></a> for checking that table is enabled</div>
 </td>
 </tr>
-<tr id="i146" class="altColor">
+<tr id="i147" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../apidocs/org/apache/hadoop/hbase/Waiter.Predicate.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">Waiter.Predicate</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateTableDisabled-org.apache.hadoop.hbase.TableName-">predicateTableDisabled</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Returns a <a href="../../../../../apidocs/org/apache/hadoop/hbase/Waiter.Predicate.html?is-external=true" title="class or interface in org.apache.hadoop.hbase"><code>Waiter.Predicate</code></a> for checking that table is enabled</div>
 </td>
 </tr>
-<tr id="i147" class="rowColor">
+<tr id="i148" class="altColor">
 <td class="colFirst"><code><a href="../../../../../apidocs/org/apache/hadoop/hbase/Waiter.Predicate.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">Waiter.Predicate</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#predicateTableEnabled-org.apache.hadoop.hbase.TableName-">predicateTableEnabled</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Returns a <a href="../../../../../apidocs/org/apache/hadoop/hbase/Waiter.Predicate.html?is-external=true" title="class or interface in org.apache.hadoop.hbase"><code>Waiter.Predicate</code></a> for checking that table is enabled</div>
 </td>
 </tr>
-<tr id="i148" class="altColor">
+<tr id="i149" class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#randomFreePort--">randomFreePort</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i149" class="rowColor">
+<tr id="i150" class="altColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#randomMultiCastAddress--">randomMultiCastAddress</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i150" class="altColor">
+<tr id="i151" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#restartHBaseCluster-int-">restartHBaseCluster</a></span>(int&nbsp;servers)</code>
 <div class="block">Starts the hbase cluster up again after shutting it down previously in a
  test.</div>
 </td>
 </tr>
-<tr id="i151" class="rowColor">
+<tr id="i152" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#restartHBaseCluster-int-java.util.List-">restartHBaseCluster</a></span>(int&nbsp;servers,
                    <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;ports)</code>&nbsp;</td>
 </tr>
-<tr id="i152" class="altColor">
+<tr id="i153" class="rowColor">
 <td class="colFirst"><code>static &lt;T&gt;&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#safeGetAsStr-java.util.List-int-">safeGetAsStr</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;T&gt;&nbsp;lst,
             int&nbsp;i)</code>&nbsp;</td>
 </tr>
-<tr id="i153" class="rowColor">
+<tr id="i154" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setDFSCluster-org.apache.hadoop.hdfs.MiniDFSCluster-">setDFSCluster</a></span>(org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;cluster)</code>&nbsp;</td>
 </tr>
-<tr id="i154" class="altColor">
+<tr id="i155" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setDFSCluster-org.apache.hadoop.hdfs.MiniDFSCluster-boolean-">setDFSCluster</a></span>(org.apache.hadoop.hdfs.MiniDFSCluster&nbsp;cluster,
              boolean&nbsp;requireDown)</code>
 <div class="block">Set the MiniDFSCluster</div>
 </td>
 </tr>
-<tr id="i155" class="rowColor">
+<tr id="i156" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setFileSystemURI-java.lang.String-">setFileSystemURI</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;fsURI)</code>&nbsp;</td>
 </tr>
-<tr id="i156" class="altColor">
+<tr id="i157" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setHBaseCluster-org.apache.hadoop.hbase.HBaseCluster-">setHBaseCluster</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/HBaseCluster.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">HBaseCluster</a>&nbsp;hbaseCluster)</code>&nbsp;</td>
 </tr>
-<tr id="i157" class="rowColor">
+<tr id="i158" class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setMaxRecoveryErrorCount-java.io.OutputStream-int-">setMaxRecoveryErrorCount</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;stream,
                         int&nbsp;max)</code>
 <div class="block">Set maxRecoveryErrorCount in DFSClient.</div>
 </td>
 </tr>
-<tr id="i158" class="altColor">
+<tr id="i159" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setReplicas-org.apache.hadoop.hbase.client.Admin-org.apache.hadoop.hbase.TableName-int-">setReplicas</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Admin.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Admin</a>&nbsp;admin,
            <a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
@@ -1389,50 +1396,50 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <div class="block">Set the number of Region replicas.</div>
 </td>
 </tr>
-<tr id="i159" class="rowColor">
+<tr id="i160" class="altColor">
 <td class="colFirst"><code>protected org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setupDataTestDir--">setupDataTestDir</a></span>()</code>
 <div class="block">Home our data in a dir under <a href="../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.html#DEFAULT_BASE_TEST_DIRECTORY"><code>HBaseCommonTestingUtility.DEFAULT_BASE_TEST_DIRECTORY</code></a>.</div>
 </td>
 </tr>
-<tr id="i160" class="altColor">
+<tr id="i161" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.minikdc.MiniKdc</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#setupMiniKdc-java.io.File-">setupMiniKdc</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a>&nbsp;keytabFile)</code>
 <div class="block">Sets up <code>MiniKdc</code> for testing security.</div>
 </td>
 </tr>
-<tr id="i161" class="rowColor">
+<tr id="i162" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniCluster--">shutdownMiniCluster</a></span>()</code>
 <div class="block">Stops mini hbase, zk, and hdfs clusters.</div>
 </td>
 </tr>
-<tr id="i162" class="altColor">
+<tr id="i163" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniDFSCluster--">shutdownMiniDFSCluster</a></span>()</code>
 <div class="block">Shuts down instance created by call to <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-int-"><code>startMiniDFSCluster(int)</code></a>
  or does nothing.</div>
 </td>
 </tr>
-<tr id="i163" class="rowColor">
+<tr id="i164" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniHBaseCluster--">shutdownMiniHBaseCluster</a></span>()</code>
 <div class="block">Shutdown HBase mini cluster.Does not shutdown zk or dfs if running.</div>
 </td>
 </tr>
-<tr id="i164" class="altColor">
+<tr id="i165" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#shutdownMiniMapReduceCluster--">shutdownMiniMapReduceCluster</a></span>()</code>
 <div class="block">Stops the previously started <code>MiniMRCluster</code>.</div>
 </td>
 </tr>
-<tr id="i165" class="rowColor">
+<tr id="i166" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster--">startMiniCluster</a></span>()</code>
 <div class="block">Start up a minicluster of hbase, dfs and zookeeper all using default options.</div>
 </td>
 </tr>
-<tr id="i166" class="altColor">
+<tr id="i167" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-boolean-">startMiniCluster</a></span>(boolean&nbsp;createWALDir)</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -1440,13 +1447,13 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i167" class="rowColor">
+<tr id="i168" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-">startMiniCluster</a></span>(int&nbsp;numSlaves)</code>
 <div class="block">Start up a minicluster of hbase, dfs and zookeeper clusters with given slave node number.</div>
 </td>
 </tr>
-<tr id="i168" class="altColor">
+<tr id="i169" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-boolean-">startMiniCluster</a></span>(int&nbsp;numSlaves,
                 boolean&nbsp;createRootDir)</code>
@@ -1455,7 +1462,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i169" class="rowColor">
+<tr id="i170" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-boolean-boolean-">startMiniCluster</a></span>(int&nbsp;numSlaves,
                 boolean&nbsp;createRootDir,
@@ -1465,7 +1472,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i170" class="altColor">
+<tr id="i171" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-">startMiniCluster</a></span>(int&nbsp;numMasters,
                 int&nbsp;numSlaves)</code>
@@ -1474,7 +1481,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i171" class="rowColor">
+<tr id="i172" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-boolean-">startMiniCluster</a></span>(int&nbsp;numMasters,
                 int&nbsp;numSlaves,
@@ -1484,7 +1491,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i172" class="altColor">
+<tr id="i173" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-int-">startMiniCluster</a></span>(int&nbsp;numMasters,
                 int&nbsp;numRegionServers,
@@ -1494,7 +1501,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i173" class="rowColor">
+<tr id="i174" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-int-java.lang.String:A-java.lang.Class-java.lang.Class-">startMiniCluster</a></span>(int&nbsp;numMasters,
                 int&nbsp;numRegionServers,
@@ -1507,7 +1514,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i174" class="altColor">
+<tr id="i175" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-int-java.lang.String:A-java.lang.Class-java.lang.Class-boolean-boolean-">startMiniCluster</a></span>(int&nbsp;numMasters,
                 int&nbsp;numRegionServers,
@@ -1522,7 +1529,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i175" class="rowColor">
+<tr id="i176" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-java.lang.String:A-">startMiniCluster</a></span>(int&nbsp;numMasters,
                 int&nbsp;numSlaves,
@@ -1532,7 +1539,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i176" class="altColor">
+<tr id="i177" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-java.lang.String:A-boolean-">startMiniCluster</a></span>(int&nbsp;numMasters,
                 int&nbsp;numSlaves,
@@ -1543,7 +1550,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i177" class="rowColor">
+<tr id="i178" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-int-int-java.lang.String:A-java.lang.Class-java.lang.Class-">startMiniCluster</a></span>(int&nbsp;numMasters,
                 int&nbsp;numSlaves,
@@ -1555,48 +1562,48 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i178" class="altColor">
+<tr id="i179" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-org.apache.hadoop.hbase.StartMiniClusterOption-">startMiniCluster</a></span>(<a href="../../../../org/apache/hadoop/hbase/StartMiniClusterOption.html" title="class in org.apache.hadoop.hbase">StartMiniClusterOption</a>&nbsp;option)</code>
 <div class="block">Start up a mini cluster of hbase, optionally dfs and zookeeper if needed.</div>
 </td>
 </tr>
-<tr id="i179" class="rowColor">
+<tr id="i180" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-int-">startMiniDFSCluster</a></span>(int&nbsp;servers)</code>
 <div class="block">Start a minidfscluster.</div>
 </td>
 </tr>
-<tr id="i180" class="altColor">
+<tr id="i181" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-int-java.lang.String:A-">startMiniDFSCluster</a></span>(int&nbsp;servers,
                    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;hosts)</code>
 <div class="block">Start a minidfscluster.</div>
 </td>
 </tr>
-<tr id="i181" class="rowColor">
+<tr id="i182" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-int-java.lang.String:A-java.lang.String:A-">startMiniDFSCluster</a></span>(int&nbsp;servers,
                    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;racks,
                    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;hosts)</code>&nbsp;</td>
 </tr>
-<tr id="i182" class="altColor">
+<tr id="i183" class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-java.lang.String:A-">startMiniDFSCluster</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;hosts)</code>
 <div class="block">Start a minidfscluster.</div>
 </td>
 </tr>
-<tr id="i183" class="rowColor">
+<tr id="i184" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.hdfs.MiniDFSCluster</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSClusterForTestWAL-int-">startMiniDFSClusterForTestWAL</a></span>(int&nbsp;namenodePort)</code>&nbsp;</td>
 </tr>
-<tr id="i184" class="altColor">
+<tr id="i185" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster--">startMiniHBaseCluster</a></span>()</code>
 <div class="block">Starts up mini hbase cluster using default options.</div>
 </td>
 </tr>
-<tr id="i185" class="rowColor">
+<tr id="i186" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-int-int-">startMiniHBaseCluster</a></span>(int&nbsp;numMasters,
                      int&nbsp;numRegionServers)</code>
@@ -1605,7 +1612,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i186" class="altColor">
+<tr id="i187" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-int-int-java.util.List-">startMiniHBaseCluster</a></span>(int&nbsp;numMasters,
                      int&nbsp;numRegionServers,
@@ -1615,7 +1622,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i187" class="rowColor">
+<tr id="i188" class="altColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-int-int-java.util.List-java.lang.Class-java.lang.Class-boolean-boolean-">startMiniHBaseCluster</a></span>(int&nbsp;numMasters,
                      int&nbsp;numRegionServers,
@@ -1629,66 +1636,66 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 </div>
 </td>
 </tr>
-<tr id="i188" class="altColor">
+<tr id="i189" class="rowColor">
 <td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniHBaseCluster-org.apache.hadoop.hbase.StartMiniClusterOption-">startMiniHBaseCluster</a></span>(<a href="../../../../org/apache/hadoop/hbase/StartMiniClusterOption.html" title="class in org.apache.hadoop.hbase">StartMiniClusterOption</a>&nbsp;option)</code>
 <div class="block">Starts up mini hbase cluster.</div>
 </td>
 </tr>
-<tr id="i189" class="rowColor">
+<tr id="i190" class="altColor">
 <td class="colFirst"><code>org.apache.hadoop.mapred.MiniMRCluster</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniMapReduceCluster--">startMiniMapReduceCluster</a></span>()</code>
 <div class="block">Starts a <code>MiniMRCluster</code> with a default number of
  <code>TaskTracker</code>'s.</div>
 </td>
 </tr>
-<tr id="i190" class="altColor">
+<tr id="i191" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#truncateTable-org.apache.hadoop.hbase.TableName-">truncateTable</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Truncate a table using the admin command.</div>
 </td>
 </tr>
-<tr id="i191" class="rowColor">
+<tr id="i192" class="altColor">
 <td class="colFirst"><code><a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#truncateTable-org.apache.hadoop.hbase.TableName-boolean-">truncateTable</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
              boolean&nbsp;preserveRegions)</code>
 <div class="block">Truncate a table using the admin command.</div>
 </td>
 </tr>
-<tr id="i192" class="altColor">
+<tr id="i193" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#unassignRegion-byte:A-">unassignRegion</a></span>(byte[]&nbsp;regionName)</code>
 <div class="block">Unassign the named region.</div>
 </td>
 </tr>
-<tr id="i193" class="rowColor">
+<tr id="i194" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#unassignRegion-java.lang.String-">unassignRegion</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regionName)</code>
 <div class="block">Unassign the named region.</div>
 </td>
 </tr>
-<tr id="i194" class="altColor">
+<tr id="i195" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#unassignRegionByRow-byte:A-org.apache.hadoop.hbase.client.RegionLocator-">unassignRegionByRow</a></span>(byte[]&nbsp;row,
                    <a href="../../../../../apidocs/org/apache/hadoop/hbase/client/RegionLocator.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;table)</code>
 <div class="block">Closes the region containing the given row.</div>
 </td>
 </tr>
-<tr id="i195" class="rowColor">
+<tr id="i196" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#unassignRegionByRow-java.lang.String-org.apache.hadoop.hbase.client.RegionLocator-">unassignRegionByRow</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;row,
                    <a href="../../../../../apidocs/org/apache/hadoop/hbase/client/RegionLocator.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">RegionLocator</a>&nbsp;table)</code>
 <div class="block">Closes the region containing the given row.</div>
 </td>
 </tr>
-<tr id="i196" class="altColor">
+<tr id="i197" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-int-int-">verifyNumericRows</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/regionserver/HRegion.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
                  byte[]&nbsp;f,
                  int&nbsp;startRow,
                  int&nbsp;endRow)</code>&nbsp;</td>
 </tr>
-<tr id="i197" class="rowColor">
+<tr id="i198" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.HRegion-byte:A-int-int-boolean-">verifyNumericRows</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/regionserver/HRegion.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
                  byte[]&nbsp;f,
@@ -1696,14 +1703,14 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
                  int&nbsp;endRow,
                  boolean&nbsp;present)</code>&nbsp;</td>
 </tr>
-<tr id="i198" class="altColor">
+<tr id="i199" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.Region-byte:A-int-int-">verifyNumericRows</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/regionserver/Region.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;region,
                  byte[]&nbsp;f,
                  int&nbsp;startRow,
                  int&nbsp;endRow)</code>&nbsp;</td>
 </tr>
-<tr id="i199" class="rowColor">
+<tr id="i200" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.regionserver.Region-byte:A-int-int-boolean-">verifyNumericRows</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/regionserver/Region.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.regionserver">Region</a>&nbsp;region,
                  byte[]&nbsp;f,
@@ -1711,7 +1718,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
                  int&nbsp;endRow,
                  boolean&nbsp;present)</code>&nbsp;</td>
 </tr>
-<tr id="i200" class="altColor">
+<tr id="i201" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyNumericRows-org.apache.hadoop.hbase.client.Table-byte:A-int-int-int-">verifyNumericRows</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/Table.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">Table</a>&nbsp;table,
                  byte[]&nbsp;f,
@@ -1719,78 +1726,78 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
                  int&nbsp;endRow,
                  int&nbsp;replicaId)</code>&nbsp;</td>
 </tr>
-<tr id="i201" class="rowColor">
+<tr id="i202" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#verifyTableDescriptorIgnoreTableName-org.apache.hadoop.hbase.client.TableDescriptor-org.apache.hadoop.hbase.client.TableDescriptor-">verifyTableDescriptorIgnoreTableName</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/client/TableDescriptor.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;ltd,
                                     <a href="../../../../../apidocs/org/apache/hadoop/hbase/client/TableDescriptor.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;rtd)</code>&nbsp;</td>
 </tr>
-<tr id="i202" class="altColor">
+<tr id="i203" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitForHostPort-java.lang.String-int-">waitForHostPort</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;host,
                int&nbsp;port)</code>&nbsp;</td>
 </tr>
-<tr id="i203" class="rowColor">
+<tr id="i204" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitLabelAvailable-long-java.lang.String...-">waitLabelAvailable</a></span>(long&nbsp;timeoutMillis,
                   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>...&nbsp;labels)</code>
 <div class="block">Wait until labels is ready in VisibilityLabelsCache.</div>
 </td>
 </tr>
-<tr id="i204" class="altColor">
+<tr id="i205" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable-byte:A-long-">waitTableAvailable</a></span>(byte[]&nbsp;table,
                   long&nbsp;timeoutMillis)</code>
 <div class="block">Wait until all regions in a table have been assigned</div>
 </td>
 </tr>
-<tr id="i205" class="rowColor">
+<tr id="i206" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable-org.apache.hadoop.hbase.TableName-">waitTableAvailable</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;table)</code>
 <div class="block">Wait until all regions in a table have been assigned.</div>
 </td>
 </tr>
-<tr id="i206" class="altColor">
+<tr id="i207" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableAvailable-org.apache.hadoop.hbase.TableName-long-">waitTableAvailable</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
                   long&nbsp;timeoutMillis)</code>&nbsp;</td>
 </tr>
-<tr id="i207" class="rowColor">
+<tr id="i208" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled-byte:A-">waitTableDisabled</a></span>(byte[]&nbsp;table)</code>
 <div class="block">Waits for a table to be 'disabled'.</div>
 </td>
 </tr>
-<tr id="i208" class="altColor">
+<tr id="i209" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled-byte:A-long-">waitTableDisabled</a></span>(byte[]&nbsp;table,
                  long&nbsp;timeoutMillis)</code>
 <div class="block">Waits for a table to be 'disabled'.</div>
 </td>
 </tr>
-<tr id="i209" class="rowColor">
+<tr id="i210" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableDisabled-org.apache.hadoop.hbase.TableName-long-">waitTableDisabled</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
                  long&nbsp;millisTimeout)</code>&nbsp;</td>
 </tr>
-<tr id="i210" class="altColor">
+<tr id="i211" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled-byte:A-long-">waitTableEnabled</a></span>(byte[]&nbsp;table,
                 long&nbsp;timeoutMillis)</code>
 <div class="block">Waits for a table to be 'enabled'.</div>
 </td>
 </tr>
-<tr id="i211" class="rowColor">
+<tr id="i212" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled-org.apache.hadoop.hbase.TableName-">waitTableEnabled</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;table)</code>
 <div class="block">Waits for a table to be 'enabled'.</div>
 </td>
 </tr>
-<tr id="i212" class="altColor">
+<tr id="i213" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitTableEnabled-org.apache.hadoop.hbase.TableName-long-">waitTableEnabled</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
                 long&nbsp;timeoutMillis)</code>&nbsp;</td>
 </tr>
-<tr id="i213" class="rowColor">
+<tr id="i214" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllRegionsAssigned-org.apache.hadoop.hbase.TableName-">waitUntilAllRegionsAssigned</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>
 <div class="block">Wait until all regions for a table in hbase:meta have a non-empty
@@ -1800,7 +1807,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
  server.</div>
 </td>
 </tr>
-<tr id="i214" class="altColor">
+<tr id="i215" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllRegionsAssigned-org.apache.hadoop.hbase.TableName-long-">waitUntilAllRegionsAssigned</a></span>(<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                            long&nbsp;timeout)</code>
@@ -1808,19 +1815,19 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
  info:server, or until timeout.</div>
 </td>
 </tr>
-<tr id="i215" class="rowColor">
+<tr id="i216" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilAllSystemRegionsAssigned--">waitUntilAllSystemRegionsAssigned</a></span>()</code>
 <div class="block">Waith until all system table's regions get assigned</div>
 </td>
 </tr>
-<tr id="i216" class="altColor">
+<tr id="i217" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilNoRegionsInTransition--">waitUntilNoRegionsInTransition</a></span>()</code>
 <div class="block">Wait until no regions in transition.</div>
 </td>
 </tr>
-<tr id="i217" class="rowColor">
+<tr id="i218" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#waitUntilNoRegionsInTransition-long-">waitUntilNoRegionsInTransition</a></span>(long&nbsp;timeout)</code>
 <div class="block">Wait until no regions in transition.</div>
@@ -1941,7 +1948,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>fam1</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1856">fam1</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1894">fam1</a></pre>
 </li>
 </ul>
 <a name="fam2">
@@ -1950,7 +1957,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>fam2</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1857">fam2</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1895">fam2</a></pre>
 </li>
 </ul>
 <a name="fam3">
@@ -1959,7 +1966,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>fam3</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1858">fam3</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1896">fam3</a></pre>
 </li>
 </ul>
 <a name="COLUMNS">
@@ -1968,7 +1975,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>COLUMNS</h4>
-<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1859">COLUMNS</a></pre>
+<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1897">COLUMNS</a></pre>
 </li>
 </ul>
 <a name="FIRST_CHAR">
@@ -1977,7 +1984,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>FIRST_CHAR</h4>
-<pre>public static final&nbsp;char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1862">FIRST_CHAR</a></pre>
+<pre>public static final&nbsp;char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1900">FIRST_CHAR</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HBaseTestingUtility.FIRST_CHAR">Constant Field Values</a></dd>
@@ -1990,7 +1997,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>LAST_CHAR</h4>
-<pre>public static final&nbsp;char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1863">LAST_CHAR</a></pre>
+<pre>public static final&nbsp;char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1901">LAST_CHAR</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HBaseTestingUtility.LAST_CHAR">Constant Field Values</a></dd>
@@ -2003,7 +2010,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>START_KEY_BYTES</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1864">START_KEY_BYTES</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1902">START_KEY_BYTES</a></pre>
 </li>
 </ul>
 <a name="START_KEY">
@@ -2012,7 +2019,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>START_KEY</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1865">START_KEY</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1903">START_KEY</a></pre>
 </li>
 </ul>
 <a name="ROWS">
@@ -2021,7 +2028,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>ROWS</h4>
-<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2420">ROWS</a></pre>
+<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2464">ROWS</a></pre>
 <div class="block">All the row values for the data loaded by <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#loadTable-org.apache.hadoop.hbase.client.Table-byte:A-"><code>loadTable(Table, byte[])</code></a></div>
 </li>
 </ul>
@@ -2031,7 +2038,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>KEYS</h4>
-<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2435">KEYS</a></pre>
+<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2479">KEYS</a></pre>
 </li>
 </ul>
 <a name="KEYS_FOR_HBA_CREATE_TABLE">
@@ -2040,7 +2047,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
 <ul class="blockListLast">
 <li class="blockList">
 <h4>KEYS_FOR_HBA_CREATE_TABLE</h4>
-<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2447">KEYS_FOR_HBA_CREATE_TABLE</a></pre>
+<pre>public static final&nbsp;byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2491">KEYS_FOR_HBA_CREATE_TABLE</a></pre>
 </li>
 </ul>
 </li>
@@ -2449,13 +2456,24 @@ public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/HTableDescri
 </dl>
 </li>
 </ul>
+<a name="isNewVersionBehaviorEnabled--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isNewVersionBehaviorEnabled</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.720">isNewVersionBehaviorEnabled</a>()</pre>
+<div class="block">Check whether the tests should assume NEW_VERSION_BEHAVIOR when creating
+  new column families. Default to false.</div>
+</li>
+</ul>
 <a name="isReadShortCircuitOn--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>isReadShortCircuitOn</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.722">isReadShortCircuitOn</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.734">isReadShortCircuitOn</a>()</pre>
 <div class="block">Get the HBase setting for dfs.client.read.shortcircuit from the conf or a system property.
   This allows to specify this parameter on the command line.
    If not set, default is true.</div>
@@ -2467,7 +2485,7 @@ public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/HTableDescri
 <ul class="blockList">
 <li class="blockList">
 <h4>shutdownMiniDFSCluster</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.764">shutdownMiniDFSCluster</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.776">shutdownMiniDFSCluster</a>()
                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Shuts down instance created by call to <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniDFSCluster-int-"><code>startMiniDFSCluster(int)</code></a>
  or does nothing.</div>
@@ -2484,7 +2502,7 @@ public&nbsp;<a href="../../../../../apidocs/org/apache/hadoop/hbase/HTableDescri
 <li class="blockList">
 <h4>startMiniCluster</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.783">startMiniCluster</a>(boolean&nbsp;createWALDir)
+public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.795">startMiniCluster</a>(boolean&nbsp;createWALDir)
                                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Use <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-org.apache.hadoop.hbase.StartMiniClusterOption-"><code>startMiniCluster(StartMiniClusterOption)</code></a> instead.</span></div>
 <div class="block">Start up a minicluster of hbase, dfs, and zookeeper where WAL's walDir is created separately.
@@ -2508,7 +2526,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <li class="blockList">
 <h4>startMiniCluster</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.799">startMiniCluster</a>(int&nbsp;numSlaves,
+public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.811">startMiniCluster</a>(int&nbsp;numSlaves,
                                                      boolean&nbsp;createRootDir)
                                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Use <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-org.apache.hadoop.hbase.StartMiniClusterOption-"><code>startMiniCluster(StartMiniClusterOption)</code></a> instead.</span></div>
@@ -2534,7 +2552,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <li class="blockList">
 <h4>startMiniCluster</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.817">startMiniCluster</a>(int&nbsp;numSlaves,
+public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.829">startMiniCluster</a>(int&nbsp;numSlaves,
                                                      boolean&nbsp;createRootDir,
                                                      boolean&nbsp;createWALDir)
                                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
@@ -2562,7 +2580,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <li class="blockList">
 <h4>startMiniCluster</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.836">startMiniCluster</a>(int&nbsp;numMasters,
+public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.848">startMiniCluster</a>(int&nbsp;numMasters,
                                                      int&nbsp;numSlaves,
                                                      boolean&nbsp;createRootDir)
                                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
@@ -2590,7 +2608,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <li class="blockList">
 <h4>startMiniCluster</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.854">startMiniCluster</a>(int&nbsp;numMasters,
+public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.866">startMiniCluster</a>(int&nbsp;numMasters,
                                                      int&nbsp;numSlaves)
                                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Use <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#startMiniCluster-org.apache.hadoop.hbase.StartMiniClusterOption-"><code>startMiniCluster(StartMiniClusterOption)</code></a> instead.</span></div>
@@ -2616,7 +2634,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <li class="blockList">
 <h4>startMiniCluster</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.873">startMiniCluster</a>(int&nbsp;numMasters,
+public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.885">startMiniCluster</a>(int&nbsp;numMasters,
                                                      int&nbsp;numSlaves,
                                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;dataNodeHosts,
                                                      boolean&nbsp;createRootDir)
@@ -2647,7 +2665,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <li class="blockList">
 <h4>startMiniCluster</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.893">startMiniCluster</a>(int&nbsp;numMasters,
+public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.905">startMiniCluster</a>(int&nbsp;numMasters,
                                                      int&nbsp;numSlaves,
                                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;dataNodeHosts)
                                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
@@ -2676,7 +2694,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <li class="blockList">
 <h4>startMiniCluster</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.912">startMiniCluster</a>(int&nbsp;numMasters,
+public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.924">startMiniCluster</a>(int&nbsp;numMasters,
                                                      int&nbsp;numRegionServers,
                                                      int&nbsp;numDataNodes)
                                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
@@ -2704,7 +2722,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <li class="blockList">
 <h4>startMiniCluster</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.934">startMiniCluster</a>(int&nbsp;numMasters,
+public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.946">startMiniCluster</a>(int&nbsp;numMasters,
                                                      int&nbsp;numSlaves,
                                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;dataNodeHosts,
                                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true" title="class or interface in java.lang">Class</a>&lt;? extends <a href="../../../../../apidocs/org/apache/hadoop/hbase/master/HMaster.html?is-external=true" title="class or interface in org.apache.hadoop.hbase.master">HMaster</a>&gt;&nbsp;masterClass,
@@ -2737,7 +2755,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <li class="blockList">
 <h4>startMiniCluster</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.961">startMiniCluster</a>(int&nbsp;numMasters,
+public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.973">startMiniCluster</a>(int&nbsp;numMasters,
                                                      int&nbsp;numRegionServers,
                                                      int&nbsp;numDataNodes,
                                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;dataNodeHosts,
@@ -2772,7 +2790,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <li class="blockList">
 <h4>startMiniCluster</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.990">startMiniCluster</a>(int&nbsp;numMasters,
+public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1002">startMiniCluster</a>(int&nbsp;numMasters,
                                                      int&nbsp;numRegionServers,
                                                      int&nbsp;numDataNodes,
                                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;dataNodeHosts,
@@ -2810,7 +2828,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniCluster</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1010">startMiniCluster</a>(int&nbsp;numSlaves)
+<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1022">startMiniCluster</a>(int&nbsp;numSlaves)
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Start up a minicluster of hbase, dfs and zookeeper clusters with given slave node number.
  All other options will use default values, defined in <a href="../../../../../apidocs/org/apache/hadoop/hbase/StartMiniClusterOption.Builder.html?is-external=true" title="class or interface in org.apache.hadoop.hbase"><code>StartMiniClusterOption.Builder</code></a>.</div>
@@ -2831,7 +2849,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniCluster</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1022">startMiniCluster</a>()
+<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1034">startMiniCluster</a>()
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Start up a minicluster of hbase, dfs and zookeeper all using default options.
  Option default value can be found in <a href="../../../../../apidocs/org/apache/hadoop/hbase/StartMiniClusterOption.Builder.html?is-external=true" title="class or interface in org.apache.hadoop.hbase"><code>StartMiniClusterOption.Builder</code></a>.</div>
@@ -2850,7 +2868,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniCluster</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1032">startMiniCluster</a>(<a href="../../../../org/apache/hadoop/hbase/StartMiniClusterOption.html" title="class in org.apache.hadoop.hbase">StartMiniClusterOption</a>&nbsp;option)
+<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1044">startMiniCluster</a>(<a href="../../../../org/apache/hadoop/hbase/StartMiniClusterOption.html" title="class in org.apache.hadoop.hbase">StartMiniClusterOption</a>&nbsp;option)
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Start up a mini cluster of hbase, optionally dfs and zookeeper if needed.
  It modifies Configuration.  It homes the cluster data directory under a random
@@ -2869,7 +2887,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniHBaseCluster</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1070">startMiniHBaseCluster</a>(<a href="../../../../org/apache/hadoop/hbase/StartMiniClusterOption.html" title="class in org.apache.hadoop.hbase">StartMiniClusterOption</a>&nbsp;option)
+<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1082">startMiniHBaseCluster</a>(<a href="../../../../org/apache/hadoop/hbase/StartMiniClusterOption.html" title="class in org.apache.hadoop.hbase">StartMiniClusterOption</a>&nbsp;option)
                                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Starts up mini hbase cluster.
@@ -2893,7 +2911,7 @@ public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>startMiniHBaseCluster</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1116">startMiniHBaseCluster</a>()
+<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" ti

<TRUNCATED>

[02/29] hbase-site git commit: Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html
index 5982fda..5fda559 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html
@@ -178,807 +178,813 @@
 <span class="sourceLineNo">170</span>      if (count == null) {<a name="line.170"></a>
 <span class="sourceLineNo">171</span>        count = new AtomicInteger(0);<a name="line.171"></a>
 <span class="sourceLineNo">172</span>      }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      heap = new KeyValueHeapWithCount(scanners, comparator, count);<a name="line.173"></a>
+<span class="sourceLineNo">173</span>      heap = newKVHeap(scanners, comparator);<a name="line.173"></a>
 <span class="sourceLineNo">174</span>    }<a name="line.174"></a>
 <span class="sourceLineNo">175</span><a name="line.175"></a>
 <span class="sourceLineNo">176</span>    @Override<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    protected boolean trySkipToNextRow(Cell cell) throws IOException {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      boolean optimized = super.trySkipToNextRow(cell);<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.179"></a>
-<span class="sourceLineNo">180</span>          + ", optimized=" + optimized);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      if (optimized) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        optimization.incrementAndGet();<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      }<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      return optimized;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>    @Override<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.190"></a>
-<span class="sourceLineNo">191</span>          + ", optimized=" + optimized);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      if (optimized) {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        optimization.incrementAndGet();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      }<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      return optimized;<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 Cell getNextIndexedKey() {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      // Fake block boundaries by having index of next block change as we go through scan.<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      return count.get() &gt; CELL_GRID_BLOCK4_BOUNDARY?<a name="line.201"></a>
-<span class="sourceLineNo">202</span>          PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK5_BOUNDARY]):<a name="line.202"></a>
-<span class="sourceLineNo">203</span>            count.get() &gt; CELL_GRID_BLOCK3_BOUNDARY?<a name="line.203"></a>
-<span class="sourceLineNo">204</span>                PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK4_BOUNDARY]):<a name="line.204"></a>
-<span class="sourceLineNo">205</span>                  count.get() &gt; CELL_GRID_BLOCK2_BOUNDARY?<a name="line.205"></a>
-<span class="sourceLineNo">206</span>                      PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK3_BOUNDARY]):<a name="line.206"></a>
-<span class="sourceLineNo">207</span>                        PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK2_BOUNDARY]);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    }<a name="line.208"></a>
-<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
-<span class="sourceLineNo">210</span><a name="line.210"></a>
-<span class="sourceLineNo">211</span>  private static final int CELL_WITH_VERSIONS_BLOCK2_BOUNDARY = 4;<a name="line.211"></a>
-<span class="sourceLineNo">212</span><a name="line.212"></a>
-<span class="sourceLineNo">213</span>  private static final Cell[] CELL_WITH_VERSIONS = new Cell [] {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    createCell(ONE, CF, ONE, 2L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    createCell(ONE, CF, ONE, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    createCell(ONE, CF, TWO, 2L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    createCell(ONE, CF, TWO, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    // Offset 4 CELL_WITH_VERSIONS_BLOCK2_BOUNDARY<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    createCell(TWO, CF, ONE, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    createCell(TWO, CF, TWO, 1L, KeyValue.Type.Put.getCode(), VALUE),<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>  private static class CellWithVersionsStoreScanner extends StoreScanner {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    // Count of how often optimize is called and of how often it does an optimize.<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    final AtomicInteger optimization = new AtomicInteger(0);<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>    CellWithVersionsStoreScanner(final Scan scan, ScanInfo scanInfo) throws IOException {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      super(scan, scanInfo, scan.getFamilyMap().get(CF),<a name="line.228"></a>
-<span class="sourceLineNo">229</span>          Arrays.&lt;KeyValueScanner&gt; asList(new KeyValueScanner[] {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>              new KeyValueScanFixture(CellComparator.getInstance(), CELL_WITH_VERSIONS) }));<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    }<a name="line.231"></a>
+<span class="sourceLineNo">177</span>    protected KeyValueHeap newKVHeap(List&lt;? extends KeyValueScanner&gt; scanners,<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        CellComparator comparator) throws IOException {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      return new KeyValueHeapWithCount(scanners, comparator, count);<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>    protected boolean trySkipToNextRow(Cell cell) throws IOException {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      boolean optimized = super.trySkipToNextRow(cell);<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.185"></a>
+<span class="sourceLineNo">186</span>          + ", optimized=" + optimized);<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      if (optimized) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>        optimization.incrementAndGet();<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      return optimized;<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>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.196"></a>
+<span class="sourceLineNo">197</span>          + ", optimized=" + optimized);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      if (optimized) {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>        optimization.incrementAndGet();<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      }<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      return optimized;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    }<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>    @Override<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    public Cell getNextIndexedKey() {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      // Fake block boundaries by having index of next block change as we go through scan.<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      return count.get() &gt; CELL_GRID_BLOCK4_BOUNDARY?<a name="line.207"></a>
+<span class="sourceLineNo">208</span>          PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK5_BOUNDARY]):<a name="line.208"></a>
+<span class="sourceLineNo">209</span>            count.get() &gt; CELL_GRID_BLOCK3_BOUNDARY?<a name="line.209"></a>
+<span class="sourceLineNo">210</span>                PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK4_BOUNDARY]):<a name="line.210"></a>
+<span class="sourceLineNo">211</span>                  count.get() &gt; CELL_GRID_BLOCK2_BOUNDARY?<a name="line.211"></a>
+<span class="sourceLineNo">212</span>                      PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK3_BOUNDARY]):<a name="line.212"></a>
+<span class="sourceLineNo">213</span>                        PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK2_BOUNDARY]);<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>  private static final int CELL_WITH_VERSIONS_BLOCK2_BOUNDARY = 4;<a name="line.217"></a>
+<span class="sourceLineNo">218</span><a name="line.218"></a>
+<span class="sourceLineNo">219</span>  private static final Cell[] CELL_WITH_VERSIONS = new Cell [] {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    createCell(ONE, CF, ONE, 2L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    createCell(ONE, CF, ONE, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    createCell(ONE, CF, TWO, 2L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    createCell(ONE, CF, TWO, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    // Offset 4 CELL_WITH_VERSIONS_BLOCK2_BOUNDARY<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    createCell(TWO, CF, ONE, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    createCell(TWO, CF, TWO, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  };<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>  private static class CellWithVersionsStoreScanner extends StoreScanner {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    // Count of how often optimize is called and of how often it does an optimize.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    final AtomicInteger optimization = new AtomicInteger(0);<a name="line.231"></a>
 <span class="sourceLineNo">232</span><a name="line.232"></a>
-<span class="sourceLineNo">233</span>    @Override<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.236"></a>
-<span class="sourceLineNo">237</span>          + ", optimized=" + optimized);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      if (optimized) {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        optimization.incrementAndGet();<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      }<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      return optimized;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    }<a name="line.242"></a>
-<span class="sourceLineNo">243</span><a name="line.243"></a>
-<span class="sourceLineNo">244</span>    @Override<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    public Cell getNextIndexedKey() {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      // Fake block boundaries by having index of next block change as we go through scan.<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      return PrivateCellUtil<a name="line.247"></a>
-<span class="sourceLineNo">248</span>          .createFirstOnRow(CELL_WITH_VERSIONS[CELL_WITH_VERSIONS_BLOCK2_BOUNDARY]);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  private static class CellWithVersionsNoOptimizeStoreScanner extends StoreScanner {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    // Count of how often optimize is called and of how often it does an optimize.<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    final AtomicInteger optimization = new AtomicInteger(0);<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>    CellWithVersionsNoOptimizeStoreScanner(Scan scan, ScanInfo scanInfo) throws IOException {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      super(scan, scanInfo, scan.getFamilyMap().get(CF),<a name="line.257"></a>
-<span class="sourceLineNo">258</span>          Arrays.&lt;KeyValueScanner&gt; asList(new KeyValueScanner[] {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>              new KeyValueScanFixture(CellComparator.getInstance(), CELL_WITH_VERSIONS) }));<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    }<a name="line.260"></a>
+<span class="sourceLineNo">233</span>    CellWithVersionsStoreScanner(final Scan scan, ScanInfo scanInfo) throws IOException {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      super(scan, scanInfo, scan.getFamilyMap().get(CF),<a name="line.234"></a>
+<span class="sourceLineNo">235</span>          Arrays.&lt;KeyValueScanner&gt; asList(new KeyValueScanner[] {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>              new KeyValueScanFixture(CellComparator.getInstance(), CELL_WITH_VERSIONS) }));<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    }<a name="line.237"></a>
+<span class="sourceLineNo">238</span><a name="line.238"></a>
+<span class="sourceLineNo">239</span>    @Override<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.242"></a>
+<span class="sourceLineNo">243</span>          + ", optimized=" + optimized);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      if (optimized) {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        optimization.incrementAndGet();<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      }<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      return optimized;<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    }<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>    @Override<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    public Cell getNextIndexedKey() {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      // Fake block boundaries by having index of next block change as we go through scan.<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      return PrivateCellUtil<a name="line.253"></a>
+<span class="sourceLineNo">254</span>          .createFirstOnRow(CELL_WITH_VERSIONS[CELL_WITH_VERSIONS_BLOCK2_BOUNDARY]);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>  }<a name="line.256"></a>
+<span class="sourceLineNo">257</span><a name="line.257"></a>
+<span class="sourceLineNo">258</span>  private static class CellWithVersionsNoOptimizeStoreScanner extends StoreScanner {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    // Count of how often optimize is called and of how often it does an optimize.<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    final AtomicInteger optimization = new AtomicInteger(0);<a name="line.260"></a>
 <span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>    @Override<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.265"></a>
-<span class="sourceLineNo">266</span>          + ", optimized=" + optimized);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      if (optimized) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        optimization.incrementAndGet();<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      }<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      return optimized;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    }<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>    @Override<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    public Cell getNextIndexedKey() {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      return null;<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">262</span>    CellWithVersionsNoOptimizeStoreScanner(Scan scan, ScanInfo scanInfo) throws IOException {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      super(scan, scanInfo, scan.getFamilyMap().get(CF),<a name="line.263"></a>
+<span class="sourceLineNo">264</span>          Arrays.&lt;KeyValueScanner&gt; asList(new KeyValueScanner[] {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>              new KeyValueScanFixture(CellComparator.getInstance(), CELL_WITH_VERSIONS) }));<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>    @Override<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.271"></a>
+<span class="sourceLineNo">272</span>          + ", optimized=" + optimized);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      if (optimized) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        optimization.incrementAndGet();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      return optimized;<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>  @Test<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  public void testWithColumnCountGetFilter() throws Exception {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    Get get = new Get(ONE);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    get.readAllVersions();<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    get.addFamily(CF);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    get.setFilter(new ColumnCountGetFilter(2));<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>    try (CellWithVersionsNoOptimizeStoreScanner scannerNoOptimize =<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        new CellWithVersionsNoOptimizeStoreScanner(new Scan(get), this.scanInfo)) {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      while (scannerNoOptimize.next(results)) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        continue;<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      }<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      assertEquals(2, results.size());<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      assertTrue(CellUtil.matchingColumn(results.get(0), CELL_WITH_VERSIONS[0]));<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      assertTrue(CellUtil.matchingColumn(results.get(1), CELL_WITH_VERSIONS[2]));<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      assertTrue("Optimize should do some optimizations",<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        scannerNoOptimize.optimization.get() == 0);<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>    get.setFilter(new ColumnCountGetFilter(2));<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    try (CellWithVersionsStoreScanner scanner =<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        new CellWithVersionsStoreScanner(new Scan(get), this.scanInfo)) {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      while (scanner.next(results)) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        continue;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      }<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      assertEquals(2, results.size());<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      assertTrue(CellUtil.matchingColumn(results.get(0), CELL_WITH_VERSIONS[0]));<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      assertTrue(CellUtil.matchingColumn(results.get(1), CELL_WITH_VERSIONS[2]));<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      assertTrue("Optimize should do some optimizations", scanner.optimization.get() &gt; 0);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    }<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  }<a name="line.311"></a>
-<span class="sourceLineNo">312</span><a name="line.312"></a>
-<span class="sourceLineNo">313</span>  /*<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   * Test utility for building a NavigableSet for scanners.<a name="line.314"></a>
-<span class="sourceLineNo">315</span>   * @param strCols<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * @return<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   */<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  NavigableSet&lt;byte[]&gt; getCols(String ...strCols) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    NavigableSet&lt;byte[]&gt; cols = new TreeSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    for (String col : strCols) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      byte[] bytes = Bytes.toBytes(col);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      cols.add(bytes);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    return cols;<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>  @Test<a name="line.327"></a>
-<span class="sourceLineNo">328</span>  public void testFullRowGetDoesNotOverreadWhenRowInsideOneBlock() throws IOException {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    // Do a Get against row two. Row two is inside a block that starts with row TWO but ends with<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    // row TWO_POINT_TWO. We should read one block only.<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    Get get = new Get(TWO);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    Scan scan = new Scan(get);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      while (scanner.next(results)) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        continue;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      assertEquals(4, results.size());<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      // We should have gone the optimize route 5 times totally... an INCLUDE for the four cells<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      // in the row plus the DONE on the end.<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      assertEquals(5, scanner.count.get());<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      // For a full row Get, there should be no opportunity for scanner optimization.<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      assertEquals(0, scanner.optimization.get());<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  }<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  @Test<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  public void testFullRowSpansBlocks() throws IOException {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    // Do a Get against row FOUR. It spans two blocks.<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    Get get = new Get(FOUR);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    Scan scan = new Scan(get);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      while (scanner.next(results)) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        continue;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      }<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      assertEquals(5, results.size());<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      // We should have gone the optimize route 6 times totally... an INCLUDE for the five cells<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      // in the row plus the DONE on the end.<a name="line.363"></a>
-<span class="sourceLineNo">364</span>      assertEquals(6, scanner.count.get());<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      // For a full row Get, there should be no opportunity for scanner optimization.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      assertEquals(0, scanner.optimization.get());<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>  /**<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * Test optimize in StoreScanner. Test that we skip to the next 'block' when we it makes sense<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * reading the block 'index'.<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * @throws IOException<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   */<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  @Test<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  public void testOptimize() throws IOException {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    Scan scan = new Scan();<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    // A scan that just gets the first qualifier on each row of the CELL_GRID<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    scan.addColumn(CF, ONE);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      while (scanner.next(results)) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>        continue;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      }<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      assertEquals(4, results.size());<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      for (Cell cell: results) {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>        assertTrue(Bytes.equals(ONE, 0, ONE.length,<a name="line.389"></a>
-<span class="sourceLineNo">390</span>            cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength()));<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      }<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      assertTrue("Optimize should do some optimizations", scanner.optimization.get() &gt; 0);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    }<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  }<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>  /**<a name="line.396"></a>
-<span class="sourceLineNo">397</span>   * Ensure the optimize Scan method in StoreScanner does not get in the way of a Get doing minimum<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * work... seeking to start of block and then SKIPPING until we find the wanted Cell.<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * This 'simple' scenario mimics case of all Cells fitting inside a single HFileBlock.<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * See HBASE-15392. This test is a little cryptic. Takes a bit of staring to figure what it up to.<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * @throws IOException<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  @Test<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  public void testOptimizeAndGet() throws IOException {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    // First test a Get of two columns in the row R2. Every Get is a Scan. Get columns named<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    // R2 and R3.<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    Get get = new Get(TWO);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    get.addColumn(CF, TWO);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    get.addColumn(CF, THREE);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    Scan scan = new Scan(get);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      // For a Get there should be no more next's after the first call.<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      assertEquals(false, scanner.next(results));<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      // Should be one result only.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      assertEquals(2, results.size());<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      // And we should have gone through optimize twice only.<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      assertEquals("First qcode is SEEK_NEXT_COL and second INCLUDE_AND_SEEK_NEXT_ROW", 3,<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        scanner.count.get());<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  }<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>  /**<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   * Ensure that optimize does not cause the Get to do more seeking than required. Optimize<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   * (see HBASE-15392) was causing us to seek all Cells in a block when a Get Scan if the next block<a name="line.425"></a>
-<span class="sourceLineNo">426</span>   * index/start key was a different row to the current one. A bug. We'd call next too often<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * because we had to exhaust all Cells in the current row making us load the next block just to<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * discard what we read there. This test is a little cryptic. Takes a bit of staring to figure<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * what it up to.<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   * @throws IOException<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   */<a name="line.431"></a>
-<span class="sourceLineNo">432</span>  @Test<a name="line.432"></a>
-<span class="sourceLineNo">433</span>  public void testOptimizeAndGetWithFakedNextBlockIndexStart() throws IOException {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    // First test a Get of second column in the row R2. Every Get is a Scan. Second column has a<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    // qualifier of R2.<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    Get get = new Get(THREE);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    get.addColumn(CF, TWO);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    Scan scan = new Scan(get);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      // For a Get there should be no more next's after the first call.<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      assertEquals(false, scanner.next(results));<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      // Should be one result only.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      assertEquals(1, results.size());<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      // And we should have gone through optimize twice only.<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      assertEquals("First qcode is SEEK_NEXT_COL and second INCLUDE_AND_SEEK_NEXT_ROW", 2,<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        scanner.count.get());<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>  @Test<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  public void testScanTimeRange() throws IOException {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    String r1 = "R1";<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    // returns only 1 of these 2 even though same timestamp<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        create(r1, CF_STR, "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.456"></a>
-<span class="sourceLineNo">457</span>        create(r1, CF_STR, "a", 2, KeyValue.Type.Put, "dont-care"),<a name="line.457"></a>
-<span class="sourceLineNo">458</span>        create(r1, CF_STR, "a", 3, KeyValue.Type.Put, "dont-care"),<a name="line.458"></a>
-<span class="sourceLineNo">459</span>        create(r1, CF_STR, "a", 4, KeyValue.Type.Put, "dont-care"),<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        create(r1, CF_STR, "a", 5, KeyValue.Type.Put, "dont-care"),<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    };<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    List&lt;KeyValueScanner&gt; scanners = Arrays.&lt;KeyValueScanner&gt;asList(<a name="line.462"></a>
-<span class="sourceLineNo">463</span>        new KeyValueScanner[] {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>            new KeyValueScanFixture(CellComparator.getInstance(), kvs)<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    });<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    scanSpec.setTimeRange(0, 6);<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    scanSpec.readAllVersions();<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    List&lt;Cell&gt; results = null;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      results = new ArrayList&lt;&gt;();<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      assertEquals(true, scan.next(results));<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      assertEquals(5, results.size());<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      assertEquals(kvs[kvs.length - 1], results.get(0));<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    }<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    // Scan limited TimeRange<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    scanSpec.setTimeRange(1, 3);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    scanSpec.readAllVersions();<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      results = new ArrayList&lt;&gt;();<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      assertEquals(true, scan.next(results));<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      assertEquals(2, results.size());<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    }<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    // Another range.<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    scanSpec.setTimeRange(5, 10);<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    scanSpec.readAllVersions();<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      results = new ArrayList&lt;&gt;();<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      assertEquals(true, scan.next(results));<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      assertEquals(1, results.size());<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    }<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    // See how TimeRange and Versions interact.<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    // Another range.<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    scanSpec.setTimeRange(0, 10);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    scanSpec.readVersions(3);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      results = new ArrayList&lt;&gt;();<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      assertEquals(true, scan.next(results));<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      assertEquals(3, results.size());<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>  @Test<a name="line.506"></a>
-<span class="sourceLineNo">507</span>  public void testScanSameTimestamp() throws IOException {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    // returns only 1 of these 2 even though same timestamp<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.510"></a>
-<span class="sourceLineNo">511</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    };<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    List&lt;KeyValueScanner&gt; scanners = Arrays.asList(<a name="line.513"></a>
-<span class="sourceLineNo">514</span>        new KeyValueScanner[] {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>            new KeyValueScanFixture(CellComparator.getInstance(), kvs)<a name="line.515"></a>
-<span class="sourceLineNo">516</span>        });<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    // this only uses maxVersions (default=1) and TimeRange (default=all)<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      assertEquals(true, scan.next(results));<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      assertEquals(1, results.size());<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      assertEquals(kvs[0], results.get(0));<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    }<a name="line.525"></a>
-<span class="sourceLineNo">526</span>  }<a name="line.526"></a>
-<span class="sourceLineNo">527</span><a name="line.527"></a>
-<span class="sourceLineNo">528</span>  /*<a name="line.528"></a>
-<span class="sourceLineNo">529</span>   * Test test shows exactly how the matcher's return codes confuses the StoreScanner<a name="line.529"></a>
-<span class="sourceLineNo">530</span>   * and prevent it from doing the right thing.  Seeking once, then nexting twice<a name="line.530"></a>
-<span class="sourceLineNo">531</span>   * should return R1, then R2, but in this case it doesnt.<a name="line.531"></a>
-<span class="sourceLineNo">532</span>   * TODO this comment makes no sense above. Appears to do the right thing.<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   * @throws IOException<a name="line.533"></a>
-<span class="sourceLineNo">534</span>   */<a name="line.534"></a>
-<span class="sourceLineNo">535</span>  @Test<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  public void testWontNextToNext() throws IOException {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    // build the scan file:<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.538"></a>
-<span class="sourceLineNo">539</span>        create("R1", "cf", "a", 2, KeyValue.Type.Put, "dont-care"),<a name="line.539"></a>
-<span class="sourceLineNo">540</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.540"></a>
-<span class="sourceLineNo">541</span>        create("R2", "cf", "a", 1, KeyValue.Type.Put, "dont-care")<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    };<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    List&lt;KeyValueScanner&gt; scanners = scanFixture(kvs);<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    // this only uses maxVersions (default=1) and TimeRange (default=all)<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.548"></a>
-<span class="sourceLineNo">549</span>      scan.next(results);<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      assertEquals(1, results.size());<a name="line.550"></a>
-<span class="sourceLineNo">551</span>      assertEquals(kvs[0], results.get(0));<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      // should be ok...<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      // now scan _next_ again.<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      results.clear();<a name="line.554"></a>
+<span class="sourceLineNo">279</span>    @Override<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    public Cell getNextIndexedKey() {<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>  @Test<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  public void testWithColumnCountGetFilter() throws Exception {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    Get get = new Get(ONE);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    get.readAllVersions();<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    get.addFamily(CF);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    get.setFilter(new ColumnCountGetFilter(2));<a name="line.290"></a>
+<span class="sourceLineNo">291</span><a name="line.291"></a>
+<span class="sourceLineNo">292</span>    try (CellWithVersionsNoOptimizeStoreScanner scannerNoOptimize =<a name="line.292"></a>
+<span class="sourceLineNo">293</span>        new CellWithVersionsNoOptimizeStoreScanner(new Scan(get), this.scanInfo)) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      while (scannerNoOptimize.next(results)) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        continue;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      }<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      assertEquals(2, results.size());<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      assertTrue(CellUtil.matchingColumn(results.get(0), CELL_WITH_VERSIONS[0]));<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      assertTrue(CellUtil.matchingColumn(results.get(1), CELL_WITH_VERSIONS[2]));<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      assertTrue("Optimize should do some optimizations",<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        scannerNoOptimize.optimization.get() == 0);<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>    get.setFilter(new ColumnCountGetFilter(2));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    try (CellWithVersionsStoreScanner scanner =<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        new CellWithVersionsStoreScanner(new Scan(get), this.scanInfo)) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      while (scanner.next(results)) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>        continue;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      assertEquals(2, results.size());<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      assertTrue(CellUtil.matchingColumn(results.get(0), CELL_WITH_VERSIONS[0]));<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      assertTrue(CellUtil.matchingColumn(results.get(1), CELL_WITH_VERSIONS[2]));<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      assertTrue("Optimize should do some optimizations", scanner.optimization.get() &gt; 0);<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    }<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>   * Test utility for building a NavigableSet for scanners.<a name="line.320"></a>
+<span class="sourceLineNo">321</span>   * @param strCols<a name="line.321"></a>
+<span class="sourceLineNo">322</span>   * @return<a name="line.322"></a>
+<span class="sourceLineNo">323</span>   */<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  NavigableSet&lt;byte[]&gt; getCols(String ...strCols) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    NavigableSet&lt;byte[]&gt; cols = new TreeSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    for (String col : strCols) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      byte[] bytes = Bytes.toBytes(col);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      cols.add(bytes);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    }<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    return cols;<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>  @Test<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  public void testFullRowGetDoesNotOverreadWhenRowInsideOneBlock() throws IOException {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    // Do a Get against row two. Row two is inside a block that starts with row TWO but ends with<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    // row TWO_POINT_TWO. We should read one block only.<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    Get get = new Get(TWO);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    Scan scan = new Scan(get);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.340"></a>
+<span class="sourceLineNo">341</span>      while (scanner.next(results)) {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        continue;<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      assertEquals(4, results.size());<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      // We should have gone the optimize route 5 times totally... an INCLUDE for the four cells<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      // in the row plus the DONE on the end.<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      assertEquals(5, scanner.count.get());<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      // For a full row Get, there should be no opportunity for scanner optimization.<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      assertEquals(0, scanner.optimization.get());<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  @Test<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  public void testFullRowSpansBlocks() throws IOException {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    // Do a Get against row FOUR. It spans two blocks.<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    Get get = new Get(FOUR);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    Scan scan = new Scan(get);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      while (scanner.next(results)) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>        continue;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      assertEquals(5, results.size());<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      // We should have gone the optimize route 6 times totally... an INCLUDE for the five cells<a name="line.368"></a>
+<span class="sourceLineNo">369</span>      // in the row plus the DONE on the end.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      assertEquals(6, scanner.count.get());<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      // For a full row Get, there should be no opportunity for scanner optimization.<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      assertEquals(0, scanner.optimization.get());<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><a name="line.375"></a>
+<span class="sourceLineNo">376</span>  /**<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   * Test optimize in StoreScanner. Test that we skip to the next 'block' when we it makes sense<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * reading the block 'index'.<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   * @throws IOException<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   */<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  @Test<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  public void testOptimize() throws IOException {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    Scan scan = new Scan();<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    // A scan that just gets the first qualifier on each row of the CELL_GRID<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    scan.addColumn(CF, ONE);<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      while (scanner.next(results)) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>        continue;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      }<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      assertEquals(4, results.size());<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      for (Cell cell: results) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        assertTrue(Bytes.equals(ONE, 0, ONE.length,<a name="line.395"></a>
+<span class="sourceLineNo">396</span>            cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength()));<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      }<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      assertTrue("Optimize should do some optimizations", scanner.optimization.get() &gt; 0);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    }<a name="line.399"></a>
+<span class="sourceLineNo">400</span>  }<a name="line.400"></a>
+<span class="sourceLineNo">401</span><a name="line.401"></a>
+<span class="sourceLineNo">402</span>  /**<a name="line.402"></a>
+<span class="sourceLineNo">403</span>   * Ensure the optimize Scan method in StoreScanner does not get in the way of a Get doing minimum<a name="line.403"></a>
+<span class="sourceLineNo">404</span>   * work... seeking to start of block and then SKIPPING until we find the wanted Cell.<a name="line.404"></a>
+<span class="sourceLineNo">405</span>   * This 'simple' scenario mimics case of all Cells fitting inside a single HFileBlock.<a name="line.405"></a>
+<span class="sourceLineNo">406</span>   * See HBASE-15392. This test is a little cryptic. Takes a bit of staring to figure what it up to.<a name="line.406"></a>
+<span class="sourceLineNo">407</span>   * @throws IOException<a name="line.407"></a>
+<span class="sourceLineNo">408</span>   */<a name="line.408"></a>
+<span class="sourceLineNo">409</span>  @Test<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  public void testOptimizeAndGet() throws IOException {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    // First test a Get of two columns in the row R2. Every Get is a Scan. Get columns named<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    // R2 and R3.<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    Get get = new Get(TWO);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    get.addColumn(CF, TWO);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    get.addColumn(CF, THREE);<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    Scan scan = new Scan(get);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      // For a Get there should be no more next's after the first call.<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      assertEquals(false, scanner.next(results));<a name="line.420"></a>
+<span class="sourceLineNo">421</span>      // Should be one result only.<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      assertEquals(2, results.size());<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      // And we should have gone through optimize twice only.<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      assertEquals("First qcode is SEEK_NEXT_COL and second INCLUDE_AND_SEEK_NEXT_ROW", 3,<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        scanner.count.get());<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><a name="line.428"></a>
+<span class="sourceLineNo">429</span>  /**<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * Ensure that optimize does not cause the Get to do more seeking than required. Optimize<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   * (see HBASE-15392) was causing us to seek all Cells in a block when a Get Scan if the next block<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   * index/start key was a different row to the current one. A bug. We'd call next too often<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   * because we had to exhaust all Cells in the current row making us load the next block just to<a name="line.433"></a>
+<span class="sourceLineNo">434</span>   * discard what we read there. This test is a little cryptic. Takes a bit of staring to figure<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   * what it up to.<a name="line.435"></a>
+<span class="sourceLineNo">436</span>   * @throws IOException<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   */<a name="line.437"></a>
+<span class="sourceLineNo">438</span>  @Test<a name="line.438"></a>
+<span class="sourceLineNo">439</span>  public void testOptimizeAndGetWithFakedNextBlockIndexStart() throws IOException {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    // First test a Get of second column in the row R2. Every Get is a Scan. Second column has a<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    // qualifier of R2.<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    Get get = new Get(THREE);<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    get.addColumn(CF, TWO);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    Scan scan = new Scan(get);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      // For a Get there should be no more next's after the first call.<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      assertEquals(false, scanner.next(results));<a name="line.448"></a>
+<span class="sourceLineNo">449</span>      // Should be one result only.<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      assertEquals(1, results.size());<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      // And we should have gone through optimize twice only.<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      assertEquals("First qcode is SEEK_NEXT_COL and second INCLUDE_AND_SEEK_NEXT_ROW", 2,<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        scanner.count.get());<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>  @Test<a name="line.457"></a>
+<span class="sourceLineNo">458</span>  public void testScanTimeRange() throws IOException {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    String r1 = "R1";<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    // returns only 1 of these 2 even though same timestamp<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.461"></a>
+<span class="sourceLineNo">462</span>        create(r1, CF_STR, "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.462"></a>
+<span class="sourceLineNo">463</span>        create(r1, CF_STR, "a", 2, KeyValue.Type.Put, "dont-care"),<a name="line.463"></a>
+<span class="sourceLineNo">464</span>        create(r1, CF_STR, "a", 3, KeyValue.Type.Put, "dont-care"),<a name="line.464"></a>
+<span class="sourceLineNo">465</span>        create(r1, CF_STR, "a", 4, KeyValue.Type.Put, "dont-care"),<a name="line.465"></a>
+<span class="sourceLineNo">466</span>        create(r1, CF_STR, "a", 5, KeyValue.Type.Put, "dont-care"),<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    };<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    List&lt;KeyValueScanner&gt; scanners = Arrays.&lt;KeyValueScanner&gt;asList(<a name="line.468"></a>
+<span class="sourceLineNo">469</span>        new KeyValueScanner[] {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>            new KeyValueScanFixture(CellComparator.getInstance(), kvs)<a name="line.470"></a>
+<span class="sourceLineNo">471</span>    });<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    scanSpec.setTimeRange(0, 6);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    scanSpec.readAllVersions();<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    List&lt;Cell&gt; results = null;<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>      results = new ArrayList&lt;&gt;();<a name="line.477"></a>
+<span class="sourceLineNo">478</span>      assertEquals(true, scan.next(results));<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      assertEquals(5, results.size());<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      assertEquals(kvs[kvs.length - 1], results.get(0));<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    }<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    // Scan limited TimeRange<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    scanSpec.setTimeRange(1, 3);<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    scanSpec.readAllVersions();<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      results = new ArrayList&lt;&gt;();<a name="line.487"></a>
+<span class="sourceLineNo">488</span>      assertEquals(true, scan.next(results));<a name="line.488"></a>
+<span class="sourceLineNo">489</span>      assertEquals(2, results.size());<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    }<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    // Another range.<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    scanSpec.setTimeRange(5, 10);<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    scanSpec.readAllVersions();<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.495"></a>
+<span class="sourceLineNo">496</span>      results = new ArrayList&lt;&gt;();<a name="line.496"></a>
+<span class="sourceLineNo">497</span>      assertEquals(true, scan.next(results));<a name="line.497"></a>
+<span class="sourceLineNo">498</span>      assertEquals(1, results.size());<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    }<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    // See how TimeRange and Versions interact.<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    // Another range.<a name="line.501"></a>
+<span class="sourceLineNo">502</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    scanSpec.setTimeRange(0, 10);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    scanSpec.readVersions(3);<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.505"></a>
+<span class="sourceLineNo">506</span>      results = new ArrayList&lt;&gt;();<a name="line.506"></a>
+<span class="sourceLineNo">507</span>      assertEquals(true, scan.next(results));<a name="line.507"></a>
+<span class="sourceLineNo">508</span>      assertEquals(3, results.size());<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><a name="line.511"></a>
+<span class="sourceLineNo">512</span>  @Test<a name="line.512"></a>
+<span class="sourceLineNo">513</span>  public void testScanSameTimestamp() throws IOException {<a name="line.513"></a>
+<span class="sourceLineNo">514</span>    // returns only 1 of these 2 even though same timestamp<a name="line.514"></a>
+<span class="sourceLineNo">515</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.515"></a>
+<span class="sourceLineNo">516</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.516"></a>
+<span class="sourceLineNo">517</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    };<a name="line.518"></a>
+<span class="sourceLineNo">519</span>    List&lt;KeyValueScanner&gt; scanners = Arrays.asList(<a name="line.519"></a>
+<span class="sourceLineNo">520</span>        new KeyValueScanner[] {<a name="line.520"></a>
+<span class="sourceLineNo">521</span>            new KeyValueScanFixture(CellComparator.getInstance(), kvs)<a name="line.521"></a>
+<span class="sourceLineNo">522</span>        });<a name="line.522"></a>
+<span class="sourceLineNo">523</span><a name="line.523"></a>
+<span class="sourceLineNo">524</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    // this only uses maxVersions (default=1) and TimeRange (default=all)<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.526"></a>
+<span class="sourceLineNo">527</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.527"></a>
+<span class="sourceLineNo">528</span>      assertEquals(true, scan.next(results));<a name="line.528"></a>
+<span class="sourceLineNo">529</span>      assertEquals(1, results.size());<a name="line.529"></a>
+<span class="sourceLineNo">530</span>      assertEquals(kvs[0], results.get(0));<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    }<a name="line.531"></a>
+<span class="sourceLineNo">532</span>  }<a name="line.532"></a>
+<span class="sourceLineNo">533</span><a name="line.533"></a>
+<span class="sourceLineNo">534</span>  /*<a name="line.534"></a>
+<span class="sourceLineNo">535</span>   * Test test shows exactly how the matcher's return codes confuses the StoreScanner<a name="line.535"></a>
+<span class="sourceLineNo">536</span>   * and prevent it from doing the right thing.  Seeking once, then nexting twice<a name="line.536"></a>
+<span class="sourceLineNo">537</span>   * should return R1, then R2, but in this case it doesnt.<a name="line.537"></a>
+<span class="sourceLineNo">538</span>   * TODO this comment makes no sense above. Appears to do the right thing.<a name="line.538"></a>
+<span class="sourceLineNo">539</span>   * @throws IOException<a name="line.539"></a>
+<span class="sourceLineNo">540</span>   */<a name="line.540"></a>
+<span class="sourceLineNo">541</span>  @Test<a name="line.541"></a>
+<span class="sourceLineNo">542</span>  public void testWontNextToNext() throws IOException {<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    // build the scan file:<a name="line.543"></a>
+<span class="sourceLineNo">544</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.544"></a>
+<span class="sourceLineNo">545</span>        create("R1", "cf", "a", 2, KeyValue.Type.Put, "dont-care"),<a name="line.545"></a>
+<span class="sourceLineNo">546</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.546"></a>
+<span class="sourceLineNo">547</span>        create("R2", "cf", "a", 1, KeyValue.Type.Put, "dont-care")<a name="line.547"></a>
+<span class="sourceLineNo">548</span>    };<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    List&lt;KeyValueScanner&gt; scanners = scanFixture(kvs);<a name="line.549"></a>
+<span class="sourceLineNo">550</span><a name="line.550"></a>
+<span class="sourceLineNo">551</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    // this only uses maxVersions (default=1) and TimeRange (default=all)<a name="line.552"></a>
+<span class="sourceLineNo">553</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.553"></a>
+<span class="sourceLineNo">554</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.554"></a>
 <span class="sourceLineNo">555</span>      scan.next(results);<a name="line.555"></a>
 <span class="sourceLineNo">556</span>      assertEquals(1, results.size());<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      assertEquals(kvs[2], results.get(0));<a name="line.557"></a>
-<span class="sourceLineNo">558</span><a name="line.558"></a>
-<span class="sourceLineNo">559</span>      results.clear();<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      scan.next(results);<a name="line.560"></a>
-<span class="sourceLineNo">561</span>      assertEquals(0, results.size());<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">557</span>      assertEquals(kvs[0], results.get(0));<a name="line.557"></a>
+<span class="sourceLineNo">558</span>      // should be ok...<a name="line.558"></a>
+<span class="sourceLineNo">559</span>      // now scan _next_ again.<a name="line.559"></a>
+<span class="sourceLineNo">560</span>      results.clear();<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      scan.next(results);<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      assertEquals(1, results.size());<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      assertEquals(kvs[2], results.get(0));<a name="line.563"></a>
 <span class="sourceLineNo">564</span><a name="line.564"></a>
-<span class="sourceLineNo">565</span><a name="line.565"></a>
-<span class="sourceLineNo">566</span>  @Test<a name="line.566"></a>
-<span class="sourceLineNo">567</span>  public void testDeleteVersionSameTimestamp() throws IOException {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    KeyValue [] kvs = new KeyValue [] {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.569"></a>
-<span class="sourceLineNo">570</span>        create("R1", "cf", "a", 1, KeyValue.Type.Delete, "dont-care"),<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    };<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    List&lt;KeyValueScanner&gt; scanners = scanFixture(kvs);<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.574"></a>
-<span class="sourceLineNo">575</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      assertFalse(scan.next(results));<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      assertEquals(0, results.size());<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    }<a name="line.578"></a>
-<span class="sourceLineNo">579</span>  }<a name="line.579"></a>
-<span class="sourceLineNo">580</span><a name="line.580"></a>
-<span class="sourceLineNo">581</span>  /*<a name="line.581"></a>
-<span class="sourceLineNo">582</span>   * Test the case where there is a delete row 'in front of' the next row, the scanner<a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * will move to the next row.<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   */<a name="line.584"></a>
-<span class="sourceLineNo">585</span>  @Test<a name="line.585"></a>
-<span class="sourceLineNo">586</span>  public void testDeletedRowThenGoodRow() throws IOException {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    KeyValue [] kvs = new KeyValue [] {<a name="line.587"></a>
-<span class="sourceLineNo">588</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.588"></a>
-<span class="sourceLineNo">589</span>        create("R1", "cf", "a", 1, KeyValue.Type.Delete, "dont-care"),<a name="line.589"></a>
-<span class="sourceLineNo">590</span>        create("R2", "cf", "a", 20, KeyValue.Type.Put, "dont-care")<a name="line.590"></a>
-<span class="sourceLineNo">591</span>    };<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    List&lt;KeyValueScanner&gt; scanners = scanFixture(kvs);<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.595"></a>
-<span class="sourceLineNo">596</span>      assertEquals(true, scan.next(results));<a name="line.596"></a>
-<span class="sourceLineNo">597</span>      assertEquals(0, results.size());<a name="line.597"></a>
-<span class="sourceLineNo">598</span><a name="line.598"></a>
-<span class="sourceLineNo">599</span>      assertEquals(true, scan.next(results));<a name="line.599"></a>
-<span class="sourceLineNo">600</span>      assertEquals(1, results.size());<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      assertEquals(kvs[2], results.get(0));<a name="line.601"></a>
-<span class="sourceLineNo">602</span><a name="line.602"></a>
-<span class="sourceLineNo">603</span>      assertEquals(false, scan.next(results));<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    }<a name="line.604"></a>
-<span class="sourceLineNo">605</span>  }<a name="line.605"></a>
-<span class="sourceLineNo">606</span><a name="line.606"></a>
-<span class="sourceLineNo">607</span>  @Test<a name="line.607"></a>
-<span class="sourceLineNo">608</span>  public void testDeleteVersionMaskingMultiplePuts() throws IOException {<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    long now = System.currentTimeMillis();<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    KeyValue [] kvs1 = new KeyValue[] {<a name="line.610"></a>
-<span class="sourceLineNo">611</span>        create("R1", "cf", "a", now, KeyValue.Type.Put, "dont-care"),<a name="line.611"></a>
-<span class="sourceLineNo">612</span>        create("R1", "cf", "a", now, KeyValue.Type.Delete, "dont-care")<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    };<a name="line.613"></a>
-<span class="sourceLineNo">614</span>    KeyValue [] kvs2 = new KeyValue[] {<a name="line.614"></a>
-<span class="sourceLineNo">615</span>        create("R1", "cf", "a", now-500, KeyValue.Type.Put, "dont-care"),<a name="line.615"></a>
-<span class="sourceLineNo">616</span>        create("R1", "cf", "a", now-100, KeyValue.Type.Put, "dont-care"),<a name="line.616"></a>
-<span class="sourceLineNo">617</span>        create("R1", "cf", "a", now, KeyValue.Type.Put, "dont-care")<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    };<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    List&lt;KeyValueScanner&gt; scanners = scanFixture(kvs1, kvs2);<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>    try (StoreScanner scan = new StoreScanner(new Scan().withStartRow(Bytes.toBytes("R1")),<a name="line.621"></a>
-<span class="sourceLineNo">622</span>        scanInfo, getCols("a"), scanners)) {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.623"></a>
-<span class="sourceLineNo">624</span>      // the two put at ts=now will be masked by the 1 delete, and<a name="line.624"></a>
-<span class="sourceLineNo">625</span>      // since the scan default returns 1 version we'll return the newest<a name="line.625"></a>
-<span class="sourceLineNo">626</span>      // key, which is kvs[2], now-100.<a name="line.626"></a>
-<span class="sourceLineNo">627</span>      assertEquals(true, scan.next(results));<a name="line.627"></a>
-<span class="sourceLineNo">628</span>      assertEquals(1, results.size());<a name="line.628"></a>
-<span class="sourceLineNo">629</span>      assertEquals(kvs2[1], results.get(0));<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    }<a name="line.630"></a>
-<span class="sourceLineNo">631</span>  }<a name="line.631"></a>
-<span class="sourceLineNo">632</span><a name="line.632"></a>
-<span class="sourceLineNo">633</span>  @Test<a name="line.633"></a>
-<span class="sourceLineNo">634</span>  public void testDeleteVersionsMixedAndMultipleVersionReturn() throws IOException {<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    long now = System.currentTimeMillis();<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    KeyValue [] kvs1 = new KeyValue[] {<a name="line.636"></a>
-<span class="sourceLineNo">637</span>        create("R1", "cf", "a", now, KeyValue.Type.Put, "dont-care"),<a name="line.637"></a>
-<span class="sourceLineNo">638</span>        create("R1", "cf", "a", now, KeyValue.Type.Delete, "dont-care")<a name="line.638"></a>
-<span class="sourceLineNo">639</span>    };<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    KeyValue [] kvs2 = new KeyValue[] {<a name="line.640"></a>
-<span class="sourceLineNo">641</span>        create("R1", "cf", "a", now-500, KeyValue.Type.Put, "dont-care"),<a name="line.641"></a>
-<span class="sourceLineNo">642</span>        create("R1", "cf", "a", now+500, KeyValue.Type.Put, "dont-care"),<a name="line.642"></a>
+<span class="sourceLineNo">565</span>      results.clear();<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      scan.next(results);<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      assertEquals(0, results.size());<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    }<a name="line.568

<TRUNCATED>

[24/29] hbase-site git commit: Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/devapidocs/src-html/org/apache/hadoop/hbase/master/DeadServer.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/DeadServer.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/DeadServer.html
index da85524..7acd928 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/DeadServer.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/DeadServer.html
@@ -26,248 +26,247 @@
 <span class="sourceLineNo">018</span> */<a name="line.18"></a>
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.master;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import org.slf4j.Logger;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.slf4j.LoggerFactory;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.ServerName;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.26"></a>
-<span class="sourceLineNo">027</span><a name="line.27"></a>
-<span class="sourceLineNo">028</span>import com.google.common.base.Preconditions;<a name="line.28"></a>
-<span class="sourceLineNo">029</span><a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.ArrayList;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.Collections;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import java.util.Comparator;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.Date;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.HashMap;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.HashSet;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.Iterator;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import java.util.List;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import java.util.Map;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import java.util.Set;<a name="line.39"></a>
+<span class="sourceLineNo">021</span>import java.util.ArrayList;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.Collections;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.util.Comparator;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.util.Date;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.util.HashMap;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.util.HashSet;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.Iterator;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.List;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.Map;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.Set;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.ServerName;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.slf4j.Logger;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.slf4j.LoggerFactory;<a name="line.36"></a>
+<span class="sourceLineNo">037</span><a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hbase.thirdparty.com.google.common.base.Preconditions;<a name="line.38"></a>
+<span class="sourceLineNo">039</span><a name="line.39"></a>
 <span class="sourceLineNo">040</span><a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>/**<a name="line.42"></a>
-<span class="sourceLineNo">043</span> * Class to hold dead servers list and utility querying dead server list.<a name="line.43"></a>
-<span class="sourceLineNo">044</span> * On znode expiration, servers are added here.<a name="line.44"></a>
-<span class="sourceLineNo">045</span> */<a name="line.45"></a>
-<span class="sourceLineNo">046</span>@InterfaceAudience.Private<a name="line.46"></a>
-<span class="sourceLineNo">047</span>public class DeadServer {<a name="line.47"></a>
-<span class="sourceLineNo">048</span>  private static final Logger LOG = LoggerFactory.getLogger(DeadServer.class);<a name="line.48"></a>
-<span class="sourceLineNo">049</span><a name="line.49"></a>
-<span class="sourceLineNo">050</span>  /**<a name="line.50"></a>
-<span class="sourceLineNo">051</span>   * Set of known dead servers.  On znode expiration, servers are added here.<a name="line.51"></a>
-<span class="sourceLineNo">052</span>   * This is needed in case of a network partitioning where the server's lease<a name="line.52"></a>
-<span class="sourceLineNo">053</span>   * expires, but the server is still running. After the network is healed,<a name="line.53"></a>
-<span class="sourceLineNo">054</span>   * and it's server logs are recovered, it will be told to call server startup<a name="line.54"></a>
-<span class="sourceLineNo">055</span>   * because by then, its regions have probably been reassigned.<a name="line.55"></a>
-<span class="sourceLineNo">056</span>   */<a name="line.56"></a>
-<span class="sourceLineNo">057</span>  private final Map&lt;ServerName, Long&gt; deadServers = new HashMap&lt;&gt;();<a name="line.57"></a>
-<span class="sourceLineNo">058</span><a name="line.58"></a>
-<span class="sourceLineNo">059</span>  /**<a name="line.59"></a>
-<span class="sourceLineNo">060</span>   * Set of dead servers currently being processed<a name="line.60"></a>
-<span class="sourceLineNo">061</span>   */<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  private final Set&lt;ServerName&gt; processingServers = new HashSet&lt;ServerName&gt;();<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>   * A dead server that comes back alive has a different start code. The new start code should be<a name="line.65"></a>
-<span class="sourceLineNo">066</span>   *  greater than the old one, but we don't take this into account in this method.<a name="line.66"></a>
-<span class="sourceLineNo">067</span>   *<a name="line.67"></a>
-<span class="sourceLineNo">068</span>   * @param newServerName Servername as either &lt;code&gt;host:port&lt;/code&gt; or<a name="line.68"></a>
-<span class="sourceLineNo">069</span>   *                      &lt;code&gt;host,port,startcode&lt;/code&gt;.<a name="line.69"></a>
-<span class="sourceLineNo">070</span>   * @return true if this server was dead before and coming back alive again<a name="line.70"></a>
-<span class="sourceLineNo">071</span>   */<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  public synchronized boolean cleanPreviousInstance(final ServerName newServerName) {<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    Iterator&lt;ServerName&gt; it = deadServers.keySet().iterator();<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    while (it.hasNext()) {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      ServerName sn = it.next();<a name="line.75"></a>
-<span class="sourceLineNo">076</span>      if (ServerName.isSameAddress(sn, newServerName)) {<a name="line.76"></a>
-<span class="sourceLineNo">077</span>        // remove from deadServers<a name="line.77"></a>
-<span class="sourceLineNo">078</span>        it.remove();<a name="line.78"></a>
-<span class="sourceLineNo">079</span>        // remove from processingServers<a name="line.79"></a>
-<span class="sourceLineNo">080</span>        boolean removed = processingServers.remove(sn);<a name="line.80"></a>
-<span class="sourceLineNo">081</span>        if (removed) {<a name="line.81"></a>
-<span class="sourceLineNo">082</span>          LOG.debug("Removed " + sn + " ; numProcessing=" + processingServers.size());<a name="line.82"></a>
-<span class="sourceLineNo">083</span>        }<a name="line.83"></a>
-<span class="sourceLineNo">084</span>        return true;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      }<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>    return false;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  }<a name="line.89"></a>
-<span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>  /**<a name="line.91"></a>
-<span class="sourceLineNo">092</span>   * @param serverName server name.<a name="line.92"></a>
-<span class="sourceLineNo">093</span>   * @return true if this server is on the dead servers list false otherwise<a name="line.93"></a>
-<span class="sourceLineNo">094</span>   */<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  public synchronized boolean isDeadServer(final ServerName serverName) {<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    return deadServers.containsKey(serverName);<a name="line.96"></a>
-<span class="sourceLineNo">097</span>  }<a name="line.97"></a>
-<span class="sourceLineNo">098</span><a name="line.98"></a>
-<span class="sourceLineNo">099</span>  /**<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   * @param serverName server name.<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   * @return true if this server is on the processing servers list false otherwise<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   */<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  public synchronized boolean isProcessingServer(final ServerName serverName) {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    return processingServers.contains(serverName);<a name="line.104"></a>
-<span class="sourceLineNo">105</span>  }<a name="line.105"></a>
-<span class="sourceLineNo">106</span><a name="line.106"></a>
-<span class="sourceLineNo">107</span>  /**<a name="line.107"></a>
-<span class="sourceLineNo">108</span>   * Checks if there are currently any dead servers being processed by the<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   * master.  Returns true if at least one region server is currently being<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   * processed as dead.<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   *<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   * @return true if any RS are being processed as dead<a name="line.112"></a>
-<span class="sourceLineNo">113</span>   */<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  public synchronized boolean areDeadServersInProgress() {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    return !processingServers.isEmpty();<a name="line.115"></a>
-<span class="sourceLineNo">116</span>  }<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>  public synchronized Set&lt;ServerName&gt; copyServerNames() {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    Set&lt;ServerName&gt; clone = new HashSet&lt;&gt;(deadServers.size());<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    clone.addAll(deadServers.keySet());<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    return clone;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  }<a name="line.122"></a>
-<span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>  /**<a name="line.124"></a>
-<span class="sourceLineNo">125</span>   * Adds the server to the dead server list if it's not there already.<a name="line.125"></a>
-<span class="sourceLineNo">126</span>   * @param sn the server name<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   */<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  public synchronized void add(ServerName sn) {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    if (!deadServers.containsKey(sn)){<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      deadServers.put(sn, EnvironmentEdgeManager.currentTime());<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    }<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    boolean added = processingServers.add(sn);<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    if (LOG.isDebugEnabled() &amp;&amp; added) {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      LOG.debug("Added " + sn + "; numProcessing=" + processingServers.size());<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    }<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  }<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>  /**<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   * Notify that we started processing this dead server.<a name="line.139"></a>
-<span class="sourceLineNo">140</span>   * @param sn ServerName for the dead server.<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   */<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  public synchronized void notifyServer(ServerName sn) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    boolean added = processingServers.add(sn);<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    if (LOG.isDebugEnabled()) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>      if (added) {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>        LOG.debug("Added " + sn + "; numProcessing=" + processingServers.size());<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      }<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      LOG.debug("Started processing " + sn + "; numProcessing=" + processingServers.size());<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    }<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>  /**<a name="line.152"></a>
-<span class="sourceLineNo">153</span>   * Complete processing for this dead server.<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   * @param sn ServerName for the dead server.<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   */<a name="line.155"></a>
-<span class="sourceLineNo">156</span>  public synchronized void finish(ServerName sn) {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    boolean removed = processingServers.remove(sn);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    if (LOG.isDebugEnabled()) {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      LOG.debug("Finished processing " + sn + "; numProcessing=" + processingServers.size());<a name="line.159"></a>
-<span class="sourceLineNo">160</span>      if (removed) {<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        LOG.debug("Removed " + sn + " ; numProcessing=" + processingServers.size());<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>  }<a name="line.164"></a>
-<span class="sourceLineNo">165</span><a name="line.165"></a>
-<span class="sourceLineNo">166</span>  public synchronized int size() {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    return deadServers.size();<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  }<a name="line.168"></a>
-<span class="sourceLineNo">169</span><a name="line.169"></a>
-<span class="sourceLineNo">170</span>  public synchronized boolean isEmpty() {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    return deadServers.isEmpty();<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>  public synchronized void cleanAllPreviousInstances(final ServerName newServerName) {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    Iterator&lt;ServerName&gt; it = deadServers.keySet().iterator();<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    while (it.hasNext()) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      ServerName sn = it.next();<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      if (ServerName.isSameAddress(sn, newServerName)) {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>        // remove from deadServers<a name="line.179"></a>
-<span class="sourceLineNo">180</span>        it.remove();<a name="line.180"></a>
-<span class="sourceLineNo">181</span>        // remove from processingServers<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        boolean removed = processingServers.remove(sn);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>        if (removed) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>          LOG.debug("Removed " + sn + " ; numProcessing=" + processingServers.size());<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>    }<a name="line.187"></a>
-<span class="sourceLineNo">188</span>  }<a name="line.188"></a>
-<span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span>  @Override<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  public synchronized String toString() {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    // Display unified set of servers from both maps<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    Set&lt;ServerName&gt; servers = new HashSet&lt;ServerName&gt;();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    servers.addAll(deadServers.keySet());<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    servers.addAll(processingServers);<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    StringBuilder sb = new StringBuilder();<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    for (ServerName sn : servers) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      if (sb.length() &gt; 0) {<a name="line.198"></a>
-<span class="sourceLineNo">199</span>        sb.append(", ");<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      }<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      sb.append(sn.toString());<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      // Star entries that are being processed<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      if (processingServers.contains(sn)) {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>        sb.append("*");<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      }<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    return sb.toString();<a name="line.207"></a>
-<span class="sourceLineNo">208</span>  }<a name="line.208"></a>
-<span class="sourceLineNo">209</span><a name="line.209"></a>
-<span class="sourceLineNo">210</span>  /**<a name="line.210"></a>
-<span class="sourceLineNo">211</span>   * Extract all the servers dead since a given time, and sort them.<a name="line.211"></a>
-<span class="sourceLineNo">212</span>   * @param ts the time, 0 for all<a name="line.212"></a>
-<span class="sourceLineNo">213</span>   * @return a sorted array list, by death time, lowest values first.<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   */<a name="line.214"></a>
-<span class="sourceLineNo">215</span>  public synchronized List&lt;Pair&lt;ServerName, Long&gt;&gt; copyDeadServersSince(long ts){<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    List&lt;Pair&lt;ServerName, Long&gt;&gt; res =  new ArrayList&lt;&gt;(size());<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>    for (Map.Entry&lt;ServerName, Long&gt; entry:deadServers.entrySet()){<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      if (entry.getValue() &gt;= ts){<a name="line.219"></a>
-<span class="sourceLineNo">220</span>        res.add(new Pair&lt;&gt;(entry.getKey(), entry.getValue()));<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>    Collections.sort(res, ServerNameDeathDateComparator);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    return res;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  }<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  <a name="line.227"></a>
-<span class="sourceLineNo">228</span>  /**<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * Get the time when a server died<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   * @param deadServerName the dead server name<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   * @return the date when the server died <a name="line.231"></a>
-<span class="sourceLineNo">232</span>   */<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  public synchronized Date getTimeOfDeath(final ServerName deadServerName){<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    Long time = deadServers.get(deadServerName);<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    return time == null ? null : new Date(time);<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>  private static Comparator&lt;Pair&lt;ServerName, Long&gt;&gt; ServerNameDeathDateComparator =<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      new Comparator&lt;Pair&lt;ServerName, Long&gt;&gt;(){<a name="line.239"></a>
-<span class="sourceLineNo">240</span><a name="line.240"></a>
-<span class="sourceLineNo">241</span>    @Override<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    public int compare(Pair&lt;ServerName, Long&gt; o1, Pair&lt;ServerName, Long&gt; o2) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      return o1.getSecond().compareTo(o2.getSecond());<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    }<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  };<a name="line.245"></a>
-<span class="sourceLineNo">246</span><a name="line.246"></a>
-<span class="sourceLineNo">247</span>  /**<a name="line.247"></a>
-<span class="sourceLineNo">248</span>   * remove the specified dead server<a name="line.248"></a>
-<span class="sourceLineNo">249</span>   * @param deadServerName the dead server name<a name="line.249"></a>
-<span class="sourceLineNo">250</span>   * @return true if this server was removed<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>  public synchronized boolean removeDeadServer(final ServerName deadServerName) {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    Preconditions.checkState(!processingServers.contains(deadServerName),<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      "Asked to remove server still in processingServers set " + deadServerName +<a name="line.255"></a>
-<span class="sourceLineNo">256</span>          " (numProcessing=" + processingServers.size() + ")");<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    if (deadServers.remove(deadServerName) == null) {<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      return false;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    }<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    return true;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>  }<a name="line.261"></a>
-<span class="sourceLineNo">262</span>}<a name="line.262"></a>
+<span class="sourceLineNo">041</span>/**<a name="line.41"></a>
+<span class="sourceLineNo">042</span> * Class to hold dead servers list and utility querying dead server list.<a name="line.42"></a>
+<span class="sourceLineNo">043</span> * On znode expiration, servers are added here.<a name="line.43"></a>
+<span class="sourceLineNo">044</span> */<a name="line.44"></a>
+<span class="sourceLineNo">045</span>@InterfaceAudience.Private<a name="line.45"></a>
+<span class="sourceLineNo">046</span>public class DeadServer {<a name="line.46"></a>
+<span class="sourceLineNo">047</span>  private static final Logger LOG = LoggerFactory.getLogger(DeadServer.class);<a name="line.47"></a>
+<span class="sourceLineNo">048</span><a name="line.48"></a>
+<span class="sourceLineNo">049</span>  /**<a name="line.49"></a>
+<span class="sourceLineNo">050</span>   * Set of known dead servers.  On znode expiration, servers are added here.<a name="line.50"></a>
+<span class="sourceLineNo">051</span>   * This is needed in case of a network partitioning where the server's lease<a name="line.51"></a>
+<span class="sourceLineNo">052</span>   * expires, but the server is still running. After the network is healed,<a name="line.52"></a>
+<span class="sourceLineNo">053</span>   * and it's server logs are recovered, it will be told to call server startup<a name="line.53"></a>
+<span class="sourceLineNo">054</span>   * because by then, its regions have probably been reassigned.<a name="line.54"></a>
+<span class="sourceLineNo">055</span>   */<a name="line.55"></a>
+<span class="sourceLineNo">056</span>  private final Map&lt;ServerName, Long&gt; deadServers = new HashMap&lt;&gt;();<a name="line.56"></a>
+<span class="sourceLineNo">057</span><a name="line.57"></a>
+<span class="sourceLineNo">058</span>  /**<a name="line.58"></a>
+<span class="sourceLineNo">059</span>   * Set of dead servers currently being processed<a name="line.59"></a>
+<span class="sourceLineNo">060</span>   */<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  private final Set&lt;ServerName&gt; processingServers = new HashSet&lt;ServerName&gt;();<a name="line.61"></a>
+<span class="sourceLineNo">062</span><a name="line.62"></a>
+<span class="sourceLineNo">063</span>  /**<a name="line.63"></a>
+<span class="sourceLineNo">064</span>   * A dead server that comes back alive has a different start code. The new start code should be<a name="line.64"></a>
+<span class="sourceLineNo">065</span>   *  greater than the old one, but we don't take this into account in this method.<a name="line.65"></a>
+<span class="sourceLineNo">066</span>   *<a name="line.66"></a>
+<span class="sourceLineNo">067</span>   * @param newServerName Servername as either &lt;code&gt;host:port&lt;/code&gt; or<a name="line.67"></a>
+<span class="sourceLineNo">068</span>   *                      &lt;code&gt;host,port,startcode&lt;/code&gt;.<a name="line.68"></a>
+<span class="sourceLineNo">069</span>   * @return true if this server was dead before and coming back alive again<a name="line.69"></a>
+<span class="sourceLineNo">070</span>   */<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  public synchronized boolean cleanPreviousInstance(final ServerName newServerName) {<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    Iterator&lt;ServerName&gt; it = deadServers.keySet().iterator();<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    while (it.hasNext()) {<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      ServerName sn = it.next();<a name="line.74"></a>
+<span class="sourceLineNo">075</span>      if (ServerName.isSameAddress(sn, newServerName)) {<a name="line.75"></a>
+<span class="sourceLineNo">076</span>        // remove from deadServers<a name="line.76"></a>
+<span class="sourceLineNo">077</span>        it.remove();<a name="line.77"></a>
+<span class="sourceLineNo">078</span>        // remove from processingServers<a name="line.78"></a>
+<span class="sourceLineNo">079</span>        boolean removed = processingServers.remove(sn);<a name="line.79"></a>
+<span class="sourceLineNo">080</span>        if (removed) {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>          LOG.debug("Removed " + sn + " ; numProcessing=" + processingServers.size());<a name="line.81"></a>
+<span class="sourceLineNo">082</span>        }<a name="line.82"></a>
+<span class="sourceLineNo">083</span>        return true;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      }<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    }<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>    return false;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  }<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>  /**<a name="line.90"></a>
+<span class="sourceLineNo">091</span>   * @param serverName server name.<a name="line.91"></a>
+<span class="sourceLineNo">092</span>   * @return true if this server is on the dead servers list false otherwise<a name="line.92"></a>
+<span class="sourceLineNo">093</span>   */<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  public synchronized boolean isDeadServer(final ServerName serverName) {<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    return deadServers.containsKey(serverName);<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  }<a name="line.96"></a>
+<span class="sourceLineNo">097</span><a name="line.97"></a>
+<span class="sourceLineNo">098</span>  /**<a name="line.98"></a>
+<span class="sourceLineNo">099</span>   * @param serverName server name.<a name="line.99"></a>
+<span class="sourceLineNo">100</span>   * @return true if this server is on the processing servers list false otherwise<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   */<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  public synchronized boolean isProcessingServer(final ServerName serverName) {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    return processingServers.contains(serverName);<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  }<a name="line.104"></a>
+<span class="sourceLineNo">105</span><a name="line.105"></a>
+<span class="sourceLineNo">106</span>  /**<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   * Checks if there are currently any dead servers being processed by the<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * master.  Returns true if at least one region server is currently being<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   * processed as dead.<a name="line.109"></a>
+<span class="sourceLineNo">110</span>   *<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   * @return true if any RS are being processed as dead<a name="line.111"></a>
+<span class="sourceLineNo">112</span>   */<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  public synchronized boolean areDeadServersInProgress() {<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    return !processingServers.isEmpty();<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  }<a name="line.115"></a>
+<span class="sourceLineNo">116</span><a name="line.116"></a>
+<span class="sourceLineNo">117</span>  public synchronized Set&lt;ServerName&gt; copyServerNames() {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    Set&lt;ServerName&gt; clone = new HashSet&lt;&gt;(deadServers.size());<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    clone.addAll(deadServers.keySet());<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    return clone;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  }<a name="line.121"></a>
+<span class="sourceLineNo">122</span><a name="line.122"></a>
+<span class="sourceLineNo">123</span>  /**<a name="line.123"></a>
+<span class="sourceLineNo">124</span>   * Adds the server to the dead server list if it's not there already.<a name="line.124"></a>
+<span class="sourceLineNo">125</span>   * @param sn the server name<a name="line.125"></a>
+<span class="sourceLineNo">126</span>   */<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  public synchronized void add(ServerName sn) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    if (!deadServers.containsKey(sn)){<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      deadServers.put(sn, EnvironmentEdgeManager.currentTime());<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    }<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    boolean added = processingServers.add(sn);<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    if (LOG.isDebugEnabled() &amp;&amp; added) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      LOG.debug("Added " + sn + "; numProcessing=" + processingServers.size());<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    }<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  }<a name="line.135"></a>
+<span class="sourceLineNo">136</span><a name="line.136"></a>
+<span class="sourceLineNo">137</span>  /**<a name="line.137"></a>
+<span class="sourceLineNo">138</span>   * Notify that we started processing this dead server.<a name="line.138"></a>
+<span class="sourceLineNo">139</span>   * @param sn ServerName for the dead server.<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   */<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  public synchronized void notifyServer(ServerName sn) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    boolean added = processingServers.add(sn);<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    if (LOG.isDebugEnabled()) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      if (added) {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>        LOG.debug("Added " + sn + "; numProcessing=" + processingServers.size());<a name="line.145"></a>
+<span class="sourceLineNo">146</span>      }<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      LOG.debug("Started processing " + sn + "; numProcessing=" + processingServers.size());<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    }<a name="line.148"></a>
+<span class="sourceLineNo">149</span>  }<a name="line.149"></a>
+<span class="sourceLineNo">150</span><a name="line.150"></a>
+<span class="sourceLineNo">151</span>  /**<a name="line.151"></a>
+<span class="sourceLineNo">152</span>   * Complete processing for this dead server.<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   * @param sn ServerName for the dead server.<a name="line.153"></a>
+<span class="sourceLineNo">154</span>   */<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  public synchronized void finish(ServerName sn) {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    boolean removed = processingServers.remove(sn);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    if (LOG.isDebugEnabled()) {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      LOG.debug("Finished processing " + sn + "; numProcessing=" + processingServers.size());<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      if (removed) {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>        LOG.debug("Removed " + sn + " ; numProcessing=" + processingServers.size());<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><a name="line.164"></a>
+<span class="sourceLineNo">165</span>  public synchronized int size() {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    return deadServers.size();<a name="line.166"></a>
+<span class="sourceLineNo">167</span>  }<a name="line.167"></a>
+<span class="sourceLineNo">168</span><a name="line.168"></a>
+<span class="sourceLineNo">169</span>  public synchronized boolean isEmpty() {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    return deadServers.isEmpty();<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>  public synchronized void cleanAllPreviousInstances(final ServerName newServerName) {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    Iterator&lt;ServerName&gt; it = deadServers.keySet().iterator();<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    while (it.hasNext()) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      ServerName sn = it.next();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      if (ServerName.isSameAddress(sn, newServerName)) {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        // remove from deadServers<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        it.remove();<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        // remove from processingServers<a name="line.180"></a>
+<span class="sourceLineNo">181</span>        boolean removed = processingServers.remove(sn);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>        if (removed) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>          LOG.debug("Removed " + sn + " ; numProcessing=" + processingServers.size());<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        }<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      }<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    }<a name="line.186"></a>
+<span class="sourceLineNo">187</span>  }<a name="line.187"></a>
+<span class="sourceLineNo">188</span><a name="line.188"></a>
+<span class="sourceLineNo">189</span>  @Override<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  public synchronized String toString() {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    // Display unified set of servers from both maps<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    Set&lt;ServerName&gt; servers = new HashSet&lt;ServerName&gt;();<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    servers.addAll(deadServers.keySet());<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    servers.addAll(processingServers);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    StringBuilder sb = new StringBuilder();<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    for (ServerName sn : servers) {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      if (sb.length() &gt; 0) {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>        sb.append(", ");<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      }<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      sb.append(sn.toString());<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      // Star entries that are being processed<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      if (processingServers.contains(sn)) {<a name="line.202"></a>
+<span class="sourceLineNo">203</span>        sb.append("*");<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>    return sb.toString();<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  }<a name="line.207"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>  /**<a name="line.209"></a>
+<span class="sourceLineNo">210</span>   * Extract all the servers dead since a given time, and sort them.<a name="line.210"></a>
+<span class="sourceLineNo">211</span>   * @param ts the time, 0 for all<a name="line.211"></a>
+<span class="sourceLineNo">212</span>   * @return a sorted array list, by death time, lowest values first.<a name="line.212"></a>
+<span class="sourceLineNo">213</span>   */<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  public synchronized List&lt;Pair&lt;ServerName, Long&gt;&gt; copyDeadServersSince(long ts){<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    List&lt;Pair&lt;ServerName, Long&gt;&gt; res =  new ArrayList&lt;&gt;(size());<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>    for (Map.Entry&lt;ServerName, Long&gt; entry:deadServers.entrySet()){<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      if (entry.getValue() &gt;= ts){<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        res.add(new Pair&lt;&gt;(entry.getKey(), entry.getValue()));<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      }<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    }<a name="line.221"></a>
+<span class="sourceLineNo">222</span><a name="line.222"></a>
+<span class="sourceLineNo">223</span>    Collections.sort(res, ServerNameDeathDateComparator);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    return res;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
+<span class="sourceLineNo">226</span>  <a name="line.226"></a>
+<span class="sourceLineNo">227</span>  /**<a name="line.227"></a>
+<span class="sourceLineNo">228</span>   * Get the time when a server died<a name="line.228"></a>
+<span class="sourceLineNo">229</span>   * @param deadServerName the dead server name<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * @return the date when the server died <a name="line.230"></a>
+<span class="sourceLineNo">231</span>   */<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  public synchronized Date getTimeOfDeath(final ServerName deadServerName){<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    Long time = deadServers.get(deadServerName);<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    return time == null ? null : new Date(time);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>  }<a name="line.235"></a>
+<span class="sourceLineNo">236</span><a name="line.236"></a>
+<span class="sourceLineNo">237</span>  private static Comparator&lt;Pair&lt;ServerName, Long&gt;&gt; ServerNameDeathDateComparator =<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      new Comparator&lt;Pair&lt;ServerName, Long&gt;&gt;(){<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 int compare(Pair&lt;ServerName, Long&gt; o1, Pair&lt;ServerName, Long&gt; o2) {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      return o1.getSecond().compareTo(o2.getSecond());<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">246</span>  /**<a name="line.246"></a>
+<span class="sourceLineNo">247</span>   * remove the specified dead server<a name="line.247"></a>
+<span class="sourceLineNo">248</span>   * @param deadServerName the dead server name<a name="line.248"></a>
+<span class="sourceLineNo">249</span>   * @return true if this server was removed<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>  public synchronized boolean removeDeadServer(final ServerName deadServerName) {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    Preconditions.checkState(!processingServers.contains(deadServerName),<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      "Asked to remove server still in processingServers set " + deadServerName +<a name="line.254"></a>
+<span class="sourceLineNo">255</span>          " (numProcessing=" + processingServers.size() + ")");<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    if (deadServers.remove(deadServerName) == null) {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      return false;<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    }<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    return true;<a name="line.259"></a>
+<span class="sourceLineNo">260</span>  }<a name="line.260"></a>
+<span class="sourceLineNo">261</span>}<a name="line.261"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html
index 09aca29..79b1a78 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html
@@ -67,82 +67,81 @@
 <span class="sourceLineNo">059</span>  }<a name="line.59"></a>
 <span class="sourceLineNo">060</span><a name="line.60"></a>
 <span class="sourceLineNo">061</span>  @Override<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  protected void resetKVHeap(List&lt;? extends KeyValueScanner&gt; scanners,<a name="line.62"></a>
+<span class="sourceLineNo">062</span>  protected KeyValueHeap newKVHeap(List&lt;? extends KeyValueScanner&gt; scanners,<a name="line.62"></a>
 <span class="sourceLineNo">063</span>      CellComparator comparator) throws IOException {<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    // Combine all seeked scanners with a heap<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    heap = new ReversedKeyValueHeap(scanners, comparator);<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  }<a name="line.66"></a>
-<span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>  @Override<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  protected void seekScanners(List&lt;? extends KeyValueScanner&gt; scanners,<a name="line.69"></a>
-<span class="sourceLineNo">070</span>      Cell seekKey, boolean isLazy, boolean isParallelSeek)<a name="line.70"></a>
-<span class="sourceLineNo">071</span>      throws IOException {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    // Seek all scanners to the start of the Row (or if the exact matching row<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    // key does not exist, then to the start of the previous matching Row).<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    if (CellUtil.matchingRows(seekKey, HConstants.EMPTY_START_ROW)) {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      for (KeyValueScanner scanner : scanners) {<a name="line.75"></a>
-<span class="sourceLineNo">076</span>        scanner.seekToLastRow();<a name="line.76"></a>
-<span class="sourceLineNo">077</span>      }<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    } else {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>      for (KeyValueScanner scanner : scanners) {<a name="line.79"></a>
-<span class="sourceLineNo">080</span>        scanner.backwardSeek(seekKey);<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      }<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    }<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  }<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span>  @Override<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  protected boolean seekToNextRow(Cell kv) throws IOException {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    return seekToPreviousRow(kv);<a name="line.87"></a>
-<span class="sourceLineNo">088</span>  }<a name="line.88"></a>
-<span class="sourceLineNo">089</span><a name="line.89"></a>
-<span class="sourceLineNo">090</span>  /**<a name="line.90"></a>
-<span class="sourceLineNo">091</span>   * Do a backwardSeek in a reversed StoreScanner(scan backward)<a name="line.91"></a>
-<span class="sourceLineNo">092</span>   */<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  @Override<a name="line.93"></a>
-<span class="sourceLineNo">094</span>  protected boolean seekAsDirection(Cell kv) throws IOException {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    return backwardSeek(kv);<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  }<a name="line.96"></a>
-<span class="sourceLineNo">097</span><a name="line.97"></a>
-<span class="sourceLineNo">098</span>  @Override<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  protected void checkScanOrder(Cell prevKV, Cell kv,<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      CellComparator comparator) throws IOException {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    // Check that the heap gives us KVs in an increasing order for same row and<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    // decreasing order for different rows.<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    assert prevKV == null || comparator == null || comparator.compareRows(kv, prevKV) &lt; 0<a name="line.103"></a>
-<span class="sourceLineNo">104</span>        || (CellUtil.matchingRows(kv, prevKV) &amp;&amp; comparator.compare(kv,<a name="line.104"></a>
-<span class="sourceLineNo">105</span>            prevKV) &gt;= 0) : "Key " + prevKV<a name="line.105"></a>
-<span class="sourceLineNo">106</span>        + " followed by a " + "error order key " + kv + " in cf " + store<a name="line.106"></a>
-<span class="sourceLineNo">107</span>        + " in reversed scan";<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>  @Override<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  public boolean reseek(Cell kv) throws IOException {<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    throw new IllegalStateException(<a name="line.112"></a>
-<span class="sourceLineNo">113</span>        "reseek cannot be called on ReversedStoreScanner");<a name="line.113"></a>
-<span class="sourceLineNo">114</span>  }<a name="line.114"></a>
-<span class="sourceLineNo">115</span><a name="line.115"></a>
-<span class="sourceLineNo">116</span>  @Override<a name="line.116"></a>
-<span class="sourceLineNo">117</span>  public boolean seek(Cell key) throws IOException {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    throw new IllegalStateException(<a name="line.118"></a>
-<span class="sourceLineNo">119</span>        "seek cannot be called on ReversedStoreScanner");<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>  @Override<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  public boolean seekToPreviousRow(Cell key) throws IOException {<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    if (checkFlushed()) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      reopenAfterFlush();<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    }<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    return this.heap.seekToPreviousRow(key);<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  }<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  @Override<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  public boolean backwardSeek(Cell key) throws IOException {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    if (checkFlushed()) {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      reopenAfterFlush();<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    }<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    return this.heap.backwardSeek(key);<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  }<a name="line.136"></a>
-<span class="sourceLineNo">137</span>}<a name="line.137"></a>
+<span class="sourceLineNo">064</span>    return new ReversedKeyValueHeap(scanners, comparator);<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  }<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>  @Override<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  protected void seekScanners(List&lt;? extends KeyValueScanner&gt; scanners,<a name="line.68"></a>
+<span class="sourceLineNo">069</span>      Cell seekKey, boolean isLazy, boolean isParallelSeek)<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      throws IOException {<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    // Seek all scanners to the start of the Row (or if the exact matching row<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    // key does not exist, then to the start of the previous matching Row).<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    if (CellUtil.matchingRows(seekKey, HConstants.EMPTY_START_ROW)) {<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      for (KeyValueScanner scanner : scanners) {<a name="line.74"></a>
+<span class="sourceLineNo">075</span>        scanner.seekToLastRow();<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      }<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    } else {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      for (KeyValueScanner scanner : scanners) {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>        scanner.backwardSeek(seekKey);<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      }<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    }<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  }<a name="line.82"></a>
+<span class="sourceLineNo">083</span><a name="line.83"></a>
+<span class="sourceLineNo">084</span>  @Override<a name="line.84"></a>
+<span class="sourceLineNo">085</span>  protected boolean seekToNextRow(Cell kv) throws IOException {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    return seekToPreviousRow(kv);<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  }<a name="line.87"></a>
+<span class="sourceLineNo">088</span><a name="line.88"></a>
+<span class="sourceLineNo">089</span>  /**<a name="line.89"></a>
+<span class="sourceLineNo">090</span>   * Do a backwardSeek in a reversed StoreScanner(scan backward)<a name="line.90"></a>
+<span class="sourceLineNo">091</span>   */<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  @Override<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  protected boolean seekAsDirection(Cell kv) throws IOException {<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    return backwardSeek(kv);<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  }<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>  @Override<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  protected void checkScanOrder(Cell prevKV, Cell kv,<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      CellComparator comparator) throws IOException {<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    // Check that the heap gives us KVs in an increasing order for same row and<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    // decreasing order for different rows.<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    assert prevKV == null || comparator == null || comparator.compareRows(kv, prevKV) &lt; 0<a name="line.102"></a>
+<span class="sourceLineNo">103</span>        || (CellUtil.matchingRows(kv, prevKV) &amp;&amp; comparator.compare(kv,<a name="line.103"></a>
+<span class="sourceLineNo">104</span>            prevKV) &gt;= 0) : "Key " + prevKV<a name="line.104"></a>
+<span class="sourceLineNo">105</span>        + " followed by a " + "error order key " + kv + " in cf " + store<a name="line.105"></a>
+<span class="sourceLineNo">106</span>        + " in reversed scan";<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  }<a name="line.107"></a>
+<span class="sourceLineNo">108</span><a name="line.108"></a>
+<span class="sourceLineNo">109</span>  @Override<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  public boolean reseek(Cell kv) throws IOException {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    throw new IllegalStateException(<a name="line.111"></a>
+<span class="sourceLineNo">112</span>        "reseek cannot be called on ReversedStoreScanner");<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  }<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  @Override<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  public boolean seek(Cell key) throws IOException {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    throw new IllegalStateException(<a name="line.117"></a>
+<span class="sourceLineNo">118</span>        "seek cannot be called on ReversedStoreScanner");<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  }<a name="line.119"></a>
+<span class="sourceLineNo">120</span><a name="line.120"></a>
+<span class="sourceLineNo">121</span>  @Override<a name="line.121"></a>
+<span class="sourceLineNo">122</span>  public boolean seekToPreviousRow(Cell key) throws IOException {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    if (checkFlushed()) {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      reopenAfterFlush();<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    }<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    return this.heap.seekToPreviousRow(key);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
+<span class="sourceLineNo">128</span><a name="line.128"></a>
+<span class="sourceLineNo">129</span>  @Override<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  public boolean backwardSeek(Cell key) throws IOException {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    if (checkFlushed()) {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      reopenAfterFlush();<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    return this.heap.backwardSeek(key);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  }<a name="line.135"></a>
+<span class="sourceLineNo">136</span>}<a name="line.136"></a>
 
 
 


[06/29] hbase-site git commit: Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html
index 5982fda..5fda559 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html
@@ -178,807 +178,813 @@
 <span class="sourceLineNo">170</span>      if (count == null) {<a name="line.170"></a>
 <span class="sourceLineNo">171</span>        count = new AtomicInteger(0);<a name="line.171"></a>
 <span class="sourceLineNo">172</span>      }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      heap = new KeyValueHeapWithCount(scanners, comparator, count);<a name="line.173"></a>
+<span class="sourceLineNo">173</span>      heap = newKVHeap(scanners, comparator);<a name="line.173"></a>
 <span class="sourceLineNo">174</span>    }<a name="line.174"></a>
 <span class="sourceLineNo">175</span><a name="line.175"></a>
 <span class="sourceLineNo">176</span>    @Override<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    protected boolean trySkipToNextRow(Cell cell) throws IOException {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      boolean optimized = super.trySkipToNextRow(cell);<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.179"></a>
-<span class="sourceLineNo">180</span>          + ", optimized=" + optimized);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      if (optimized) {<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        optimization.incrementAndGet();<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      }<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      return optimized;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>    @Override<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.190"></a>
-<span class="sourceLineNo">191</span>          + ", optimized=" + optimized);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      if (optimized) {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        optimization.incrementAndGet();<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      }<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      return optimized;<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 Cell getNextIndexedKey() {<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      // Fake block boundaries by having index of next block change as we go through scan.<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      return count.get() &gt; CELL_GRID_BLOCK4_BOUNDARY?<a name="line.201"></a>
-<span class="sourceLineNo">202</span>          PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK5_BOUNDARY]):<a name="line.202"></a>
-<span class="sourceLineNo">203</span>            count.get() &gt; CELL_GRID_BLOCK3_BOUNDARY?<a name="line.203"></a>
-<span class="sourceLineNo">204</span>                PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK4_BOUNDARY]):<a name="line.204"></a>
-<span class="sourceLineNo">205</span>                  count.get() &gt; CELL_GRID_BLOCK2_BOUNDARY?<a name="line.205"></a>
-<span class="sourceLineNo">206</span>                      PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK3_BOUNDARY]):<a name="line.206"></a>
-<span class="sourceLineNo">207</span>                        PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK2_BOUNDARY]);<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    }<a name="line.208"></a>
-<span class="sourceLineNo">209</span>  }<a name="line.209"></a>
-<span class="sourceLineNo">210</span><a name="line.210"></a>
-<span class="sourceLineNo">211</span>  private static final int CELL_WITH_VERSIONS_BLOCK2_BOUNDARY = 4;<a name="line.211"></a>
-<span class="sourceLineNo">212</span><a name="line.212"></a>
-<span class="sourceLineNo">213</span>  private static final Cell[] CELL_WITH_VERSIONS = new Cell [] {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    createCell(ONE, CF, ONE, 2L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    createCell(ONE, CF, ONE, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    createCell(ONE, CF, TWO, 2L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    createCell(ONE, CF, TWO, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    // Offset 4 CELL_WITH_VERSIONS_BLOCK2_BOUNDARY<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    createCell(TWO, CF, ONE, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    createCell(TWO, CF, TWO, 1L, KeyValue.Type.Put.getCode(), VALUE),<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>  private static class CellWithVersionsStoreScanner extends StoreScanner {<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    // Count of how often optimize is called and of how often it does an optimize.<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    final AtomicInteger optimization = new AtomicInteger(0);<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>    CellWithVersionsStoreScanner(final Scan scan, ScanInfo scanInfo) throws IOException {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      super(scan, scanInfo, scan.getFamilyMap().get(CF),<a name="line.228"></a>
-<span class="sourceLineNo">229</span>          Arrays.&lt;KeyValueScanner&gt; asList(new KeyValueScanner[] {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>              new KeyValueScanFixture(CellComparator.getInstance(), CELL_WITH_VERSIONS) }));<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    }<a name="line.231"></a>
+<span class="sourceLineNo">177</span>    protected KeyValueHeap newKVHeap(List&lt;? extends KeyValueScanner&gt; scanners,<a name="line.177"></a>
+<span class="sourceLineNo">178</span>        CellComparator comparator) throws IOException {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      return new KeyValueHeapWithCount(scanners, comparator, count);<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>    protected boolean trySkipToNextRow(Cell cell) throws IOException {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      boolean optimized = super.trySkipToNextRow(cell);<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.185"></a>
+<span class="sourceLineNo">186</span>          + ", optimized=" + optimized);<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      if (optimized) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>        optimization.incrementAndGet();<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      }<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      return optimized;<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>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.196"></a>
+<span class="sourceLineNo">197</span>          + ", optimized=" + optimized);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      if (optimized) {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>        optimization.incrementAndGet();<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      }<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      return optimized;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    }<a name="line.202"></a>
+<span class="sourceLineNo">203</span><a name="line.203"></a>
+<span class="sourceLineNo">204</span>    @Override<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    public Cell getNextIndexedKey() {<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      // Fake block boundaries by having index of next block change as we go through scan.<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      return count.get() &gt; CELL_GRID_BLOCK4_BOUNDARY?<a name="line.207"></a>
+<span class="sourceLineNo">208</span>          PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK5_BOUNDARY]):<a name="line.208"></a>
+<span class="sourceLineNo">209</span>            count.get() &gt; CELL_GRID_BLOCK3_BOUNDARY?<a name="line.209"></a>
+<span class="sourceLineNo">210</span>                PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK4_BOUNDARY]):<a name="line.210"></a>
+<span class="sourceLineNo">211</span>                  count.get() &gt; CELL_GRID_BLOCK2_BOUNDARY?<a name="line.211"></a>
+<span class="sourceLineNo">212</span>                      PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK3_BOUNDARY]):<a name="line.212"></a>
+<span class="sourceLineNo">213</span>                        PrivateCellUtil.createFirstOnRow(CELL_GRID[CELL_GRID_BLOCK2_BOUNDARY]);<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>  private static final int CELL_WITH_VERSIONS_BLOCK2_BOUNDARY = 4;<a name="line.217"></a>
+<span class="sourceLineNo">218</span><a name="line.218"></a>
+<span class="sourceLineNo">219</span>  private static final Cell[] CELL_WITH_VERSIONS = new Cell [] {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    createCell(ONE, CF, ONE, 2L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    createCell(ONE, CF, ONE, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    createCell(ONE, CF, TWO, 2L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    createCell(ONE, CF, TWO, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    // Offset 4 CELL_WITH_VERSIONS_BLOCK2_BOUNDARY<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    createCell(TWO, CF, ONE, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    createCell(TWO, CF, TWO, 1L, KeyValue.Type.Put.getCode(), VALUE),<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  };<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>  private static class CellWithVersionsStoreScanner extends StoreScanner {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    // Count of how often optimize is called and of how often it does an optimize.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    final AtomicInteger optimization = new AtomicInteger(0);<a name="line.231"></a>
 <span class="sourceLineNo">232</span><a name="line.232"></a>
-<span class="sourceLineNo">233</span>    @Override<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.236"></a>
-<span class="sourceLineNo">237</span>          + ", optimized=" + optimized);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      if (optimized) {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        optimization.incrementAndGet();<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      }<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      return optimized;<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    }<a name="line.242"></a>
-<span class="sourceLineNo">243</span><a name="line.243"></a>
-<span class="sourceLineNo">244</span>    @Override<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    public Cell getNextIndexedKey() {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      // Fake block boundaries by having index of next block change as we go through scan.<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      return PrivateCellUtil<a name="line.247"></a>
-<span class="sourceLineNo">248</span>          .createFirstOnRow(CELL_WITH_VERSIONS[CELL_WITH_VERSIONS_BLOCK2_BOUNDARY]);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  }<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  private static class CellWithVersionsNoOptimizeStoreScanner extends StoreScanner {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    // Count of how often optimize is called and of how often it does an optimize.<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    final AtomicInteger optimization = new AtomicInteger(0);<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>    CellWithVersionsNoOptimizeStoreScanner(Scan scan, ScanInfo scanInfo) throws IOException {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      super(scan, scanInfo, scan.getFamilyMap().get(CF),<a name="line.257"></a>
-<span class="sourceLineNo">258</span>          Arrays.&lt;KeyValueScanner&gt; asList(new KeyValueScanner[] {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>              new KeyValueScanFixture(CellComparator.getInstance(), CELL_WITH_VERSIONS) }));<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    }<a name="line.260"></a>
+<span class="sourceLineNo">233</span>    CellWithVersionsStoreScanner(final Scan scan, ScanInfo scanInfo) throws IOException {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      super(scan, scanInfo, scan.getFamilyMap().get(CF),<a name="line.234"></a>
+<span class="sourceLineNo">235</span>          Arrays.&lt;KeyValueScanner&gt; asList(new KeyValueScanner[] {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>              new KeyValueScanFixture(CellComparator.getInstance(), CELL_WITH_VERSIONS) }));<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    }<a name="line.237"></a>
+<span class="sourceLineNo">238</span><a name="line.238"></a>
+<span class="sourceLineNo">239</span>    @Override<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.242"></a>
+<span class="sourceLineNo">243</span>          + ", optimized=" + optimized);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      if (optimized) {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>        optimization.incrementAndGet();<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      }<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      return optimized;<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    }<a name="line.248"></a>
+<span class="sourceLineNo">249</span><a name="line.249"></a>
+<span class="sourceLineNo">250</span>    @Override<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    public Cell getNextIndexedKey() {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      // Fake block boundaries by having index of next block change as we go through scan.<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      return PrivateCellUtil<a name="line.253"></a>
+<span class="sourceLineNo">254</span>          .createFirstOnRow(CELL_WITH_VERSIONS[CELL_WITH_VERSIONS_BLOCK2_BOUNDARY]);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>  }<a name="line.256"></a>
+<span class="sourceLineNo">257</span><a name="line.257"></a>
+<span class="sourceLineNo">258</span>  private static class CellWithVersionsNoOptimizeStoreScanner extends StoreScanner {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    // Count of how often optimize is called and of how often it does an optimize.<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    final AtomicInteger optimization = new AtomicInteger(0);<a name="line.260"></a>
 <span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>    @Override<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.265"></a>
-<span class="sourceLineNo">266</span>          + ", optimized=" + optimized);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      if (optimized) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        optimization.incrementAndGet();<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      }<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      return optimized;<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    }<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>    @Override<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    public Cell getNextIndexedKey() {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      return null;<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">262</span>    CellWithVersionsNoOptimizeStoreScanner(Scan scan, ScanInfo scanInfo) throws IOException {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      super(scan, scanInfo, scan.getFamilyMap().get(CF),<a name="line.263"></a>
+<span class="sourceLineNo">264</span>          Arrays.&lt;KeyValueScanner&gt; asList(new KeyValueScanner[] {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>              new KeyValueScanFixture(CellComparator.getInstance(), CELL_WITH_VERSIONS) }));<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>    @Override<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      boolean optimized = super.trySkipToNextColumn(cell);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      LOG.info("Cell=" + cell + ", nextIndex=" + CellUtil.toString(getNextIndexedKey(), false)<a name="line.271"></a>
+<span class="sourceLineNo">272</span>          + ", optimized=" + optimized);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      if (optimized) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>        optimization.incrementAndGet();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      return optimized;<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>  @Test<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  public void testWithColumnCountGetFilter() throws Exception {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    Get get = new Get(ONE);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    get.readAllVersions();<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    get.addFamily(CF);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    get.setFilter(new ColumnCountGetFilter(2));<a name="line.284"></a>
-<span class="sourceLineNo">285</span><a name="line.285"></a>
-<span class="sourceLineNo">286</span>    try (CellWithVersionsNoOptimizeStoreScanner scannerNoOptimize =<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        new CellWithVersionsNoOptimizeStoreScanner(new Scan(get), this.scanInfo)) {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      while (scannerNoOptimize.next(results)) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        continue;<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      }<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      assertEquals(2, results.size());<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      assertTrue(CellUtil.matchingColumn(results.get(0), CELL_WITH_VERSIONS[0]));<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      assertTrue(CellUtil.matchingColumn(results.get(1), CELL_WITH_VERSIONS[2]));<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      assertTrue("Optimize should do some optimizations",<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        scannerNoOptimize.optimization.get() == 0);<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>    get.setFilter(new ColumnCountGetFilter(2));<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    try (CellWithVersionsStoreScanner scanner =<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        new CellWithVersionsStoreScanner(new Scan(get), this.scanInfo)) {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      while (scanner.next(results)) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        continue;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      }<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      assertEquals(2, results.size());<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      assertTrue(CellUtil.matchingColumn(results.get(0), CELL_WITH_VERSIONS[0]));<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      assertTrue(CellUtil.matchingColumn(results.get(1), CELL_WITH_VERSIONS[2]));<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      assertTrue("Optimize should do some optimizations", scanner.optimization.get() &gt; 0);<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    }<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  }<a name="line.311"></a>
-<span class="sourceLineNo">312</span><a name="line.312"></a>
-<span class="sourceLineNo">313</span>  /*<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   * Test utility for building a NavigableSet for scanners.<a name="line.314"></a>
-<span class="sourceLineNo">315</span>   * @param strCols<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * @return<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   */<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  NavigableSet&lt;byte[]&gt; getCols(String ...strCols) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    NavigableSet&lt;byte[]&gt; cols = new TreeSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    for (String col : strCols) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      byte[] bytes = Bytes.toBytes(col);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      cols.add(bytes);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    return cols;<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>  @Test<a name="line.327"></a>
-<span class="sourceLineNo">328</span>  public void testFullRowGetDoesNotOverreadWhenRowInsideOneBlock() throws IOException {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    // Do a Get against row two. Row two is inside a block that starts with row TWO but ends with<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    // row TWO_POINT_TWO. We should read one block only.<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    Get get = new Get(TWO);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    Scan scan = new Scan(get);<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      while (scanner.next(results)) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        continue;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      assertEquals(4, results.size());<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      // We should have gone the optimize route 5 times totally... an INCLUDE for the four cells<a name="line.341"></a>
-<span class="sourceLineNo">342</span>      // in the row plus the DONE on the end.<a name="line.342"></a>
-<span class="sourceLineNo">343</span>      assertEquals(5, scanner.count.get());<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      // For a full row Get, there should be no opportunity for scanner optimization.<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      assertEquals(0, scanner.optimization.get());<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  }<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  @Test<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  public void testFullRowSpansBlocks() throws IOException {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    // Do a Get against row FOUR. It spans two blocks.<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    Get get = new Get(FOUR);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    Scan scan = new Scan(get);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      while (scanner.next(results)) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        continue;<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      }<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      assertEquals(5, results.size());<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      // We should have gone the optimize route 6 times totally... an INCLUDE for the five cells<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      // in the row plus the DONE on the end.<a name="line.363"></a>
-<span class="sourceLineNo">364</span>      assertEquals(6, scanner.count.get());<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      // For a full row Get, there should be no opportunity for scanner optimization.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      assertEquals(0, scanner.optimization.get());<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>  /**<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * Test optimize in StoreScanner. Test that we skip to the next 'block' when we it makes sense<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * reading the block 'index'.<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * @throws IOException<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   */<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  @Test<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  public void testOptimize() throws IOException {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    Scan scan = new Scan();<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    // A scan that just gets the first qualifier on each row of the CELL_GRID<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    scan.addColumn(CF, ONE);<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      while (scanner.next(results)) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>        continue;<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      }<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.386"></a>
-<span class="sourceLineNo">387</span>      assertEquals(4, results.size());<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      for (Cell cell: results) {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>        assertTrue(Bytes.equals(ONE, 0, ONE.length,<a name="line.389"></a>
-<span class="sourceLineNo">390</span>            cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength()));<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      }<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      assertTrue("Optimize should do some optimizations", scanner.optimization.get() &gt; 0);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    }<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  }<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>  /**<a name="line.396"></a>
-<span class="sourceLineNo">397</span>   * Ensure the optimize Scan method in StoreScanner does not get in the way of a Get doing minimum<a name="line.397"></a>
-<span class="sourceLineNo">398</span>   * work... seeking to start of block and then SKIPPING until we find the wanted Cell.<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * This 'simple' scenario mimics case of all Cells fitting inside a single HFileBlock.<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * See HBASE-15392. This test is a little cryptic. Takes a bit of staring to figure what it up to.<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * @throws IOException<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  @Test<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  public void testOptimizeAndGet() throws IOException {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    // First test a Get of two columns in the row R2. Every Get is a Scan. Get columns named<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    // R2 and R3.<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    Get get = new Get(TWO);<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    get.addColumn(CF, TWO);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    get.addColumn(CF, THREE);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    Scan scan = new Scan(get);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>      // For a Get there should be no more next's after the first call.<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      assertEquals(false, scanner.next(results));<a name="line.414"></a>
-<span class="sourceLineNo">415</span>      // Should be one result only.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      assertEquals(2, results.size());<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      // And we should have gone through optimize twice only.<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      assertEquals("First qcode is SEEK_NEXT_COL and second INCLUDE_AND_SEEK_NEXT_ROW", 3,<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        scanner.count.get());<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  }<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>  /**<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   * Ensure that optimize does not cause the Get to do more seeking than required. Optimize<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   * (see HBASE-15392) was causing us to seek all Cells in a block when a Get Scan if the next block<a name="line.425"></a>
-<span class="sourceLineNo">426</span>   * index/start key was a different row to the current one. A bug. We'd call next too often<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * because we had to exhaust all Cells in the current row making us load the next block just to<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * discard what we read there. This test is a little cryptic. Takes a bit of staring to figure<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * what it up to.<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   * @throws IOException<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   */<a name="line.431"></a>
-<span class="sourceLineNo">432</span>  @Test<a name="line.432"></a>
-<span class="sourceLineNo">433</span>  public void testOptimizeAndGetWithFakedNextBlockIndexStart() throws IOException {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    // First test a Get of second column in the row R2. Every Get is a Scan. Second column has a<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    // qualifier of R2.<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    Get get = new Get(THREE);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    get.addColumn(CF, TWO);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    Scan scan = new Scan(get);<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      // For a Get there should be no more next's after the first call.<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      assertEquals(false, scanner.next(results));<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      // Should be one result only.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      assertEquals(1, results.size());<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      // And we should have gone through optimize twice only.<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      assertEquals("First qcode is SEEK_NEXT_COL and second INCLUDE_AND_SEEK_NEXT_ROW", 2,<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        scanner.count.get());<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>  @Test<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  public void testScanTimeRange() throws IOException {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    String r1 = "R1";<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    // returns only 1 of these 2 even though same timestamp<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.455"></a>
-<span class="sourceLineNo">456</span>        create(r1, CF_STR, "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.456"></a>
-<span class="sourceLineNo">457</span>        create(r1, CF_STR, "a", 2, KeyValue.Type.Put, "dont-care"),<a name="line.457"></a>
-<span class="sourceLineNo">458</span>        create(r1, CF_STR, "a", 3, KeyValue.Type.Put, "dont-care"),<a name="line.458"></a>
-<span class="sourceLineNo">459</span>        create(r1, CF_STR, "a", 4, KeyValue.Type.Put, "dont-care"),<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        create(r1, CF_STR, "a", 5, KeyValue.Type.Put, "dont-care"),<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    };<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    List&lt;KeyValueScanner&gt; scanners = Arrays.&lt;KeyValueScanner&gt;asList(<a name="line.462"></a>
-<span class="sourceLineNo">463</span>        new KeyValueScanner[] {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>            new KeyValueScanFixture(CellComparator.getInstance(), kvs)<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    });<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    scanSpec.setTimeRange(0, 6);<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    scanSpec.readAllVersions();<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    List&lt;Cell&gt; results = null;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      results = new ArrayList&lt;&gt;();<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      assertEquals(true, scan.next(results));<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      assertEquals(5, results.size());<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      assertEquals(kvs[kvs.length - 1], results.get(0));<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    }<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    // Scan limited TimeRange<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    scanSpec.setTimeRange(1, 3);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    scanSpec.readAllVersions();<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      results = new ArrayList&lt;&gt;();<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      assertEquals(true, scan.next(results));<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      assertEquals(2, results.size());<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    }<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    // Another range.<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    scanSpec.setTimeRange(5, 10);<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    scanSpec.readAllVersions();<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      results = new ArrayList&lt;&gt;();<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      assertEquals(true, scan.next(results));<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      assertEquals(1, results.size());<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    }<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    // See how TimeRange and Versions interact.<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    // Another range.<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    scanSpec.setTimeRange(0, 10);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    scanSpec.readVersions(3);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      results = new ArrayList&lt;&gt;();<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      assertEquals(true, scan.next(results));<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      assertEquals(3, results.size());<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>  @Test<a name="line.506"></a>
-<span class="sourceLineNo">507</span>  public void testScanSameTimestamp() throws IOException {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    // returns only 1 of these 2 even though same timestamp<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.509"></a>
-<span class="sourceLineNo">510</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.510"></a>
-<span class="sourceLineNo">511</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    };<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    List&lt;KeyValueScanner&gt; scanners = Arrays.asList(<a name="line.513"></a>
-<span class="sourceLineNo">514</span>        new KeyValueScanner[] {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>            new KeyValueScanFixture(CellComparator.getInstance(), kvs)<a name="line.515"></a>
-<span class="sourceLineNo">516</span>        });<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    // this only uses maxVersions (default=1) and TimeRange (default=all)<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      assertEquals(true, scan.next(results));<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      assertEquals(1, results.size());<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      assertEquals(kvs[0], results.get(0));<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    }<a name="line.525"></a>
-<span class="sourceLineNo">526</span>  }<a name="line.526"></a>
-<span class="sourceLineNo">527</span><a name="line.527"></a>
-<span class="sourceLineNo">528</span>  /*<a name="line.528"></a>
-<span class="sourceLineNo">529</span>   * Test test shows exactly how the matcher's return codes confuses the StoreScanner<a name="line.529"></a>
-<span class="sourceLineNo">530</span>   * and prevent it from doing the right thing.  Seeking once, then nexting twice<a name="line.530"></a>
-<span class="sourceLineNo">531</span>   * should return R1, then R2, but in this case it doesnt.<a name="line.531"></a>
-<span class="sourceLineNo">532</span>   * TODO this comment makes no sense above. Appears to do the right thing.<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   * @throws IOException<a name="line.533"></a>
-<span class="sourceLineNo">534</span>   */<a name="line.534"></a>
-<span class="sourceLineNo">535</span>  @Test<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  public void testWontNextToNext() throws IOException {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    // build the scan file:<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.538"></a>
-<span class="sourceLineNo">539</span>        create("R1", "cf", "a", 2, KeyValue.Type.Put, "dont-care"),<a name="line.539"></a>
-<span class="sourceLineNo">540</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.540"></a>
-<span class="sourceLineNo">541</span>        create("R2", "cf", "a", 1, KeyValue.Type.Put, "dont-care")<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    };<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    List&lt;KeyValueScanner&gt; scanners = scanFixture(kvs);<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    // this only uses maxVersions (default=1) and TimeRange (default=all)<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.548"></a>
-<span class="sourceLineNo">549</span>      scan.next(results);<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      assertEquals(1, results.size());<a name="line.550"></a>
-<span class="sourceLineNo">551</span>      assertEquals(kvs[0], results.get(0));<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      // should be ok...<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      // now scan _next_ again.<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      results.clear();<a name="line.554"></a>
+<span class="sourceLineNo">279</span>    @Override<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    public Cell getNextIndexedKey() {<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>  @Test<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  public void testWithColumnCountGetFilter() throws Exception {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    Get get = new Get(ONE);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    get.readAllVersions();<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    get.addFamily(CF);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    get.setFilter(new ColumnCountGetFilter(2));<a name="line.290"></a>
+<span class="sourceLineNo">291</span><a name="line.291"></a>
+<span class="sourceLineNo">292</span>    try (CellWithVersionsNoOptimizeStoreScanner scannerNoOptimize =<a name="line.292"></a>
+<span class="sourceLineNo">293</span>        new CellWithVersionsNoOptimizeStoreScanner(new Scan(get), this.scanInfo)) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      while (scannerNoOptimize.next(results)) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        continue;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      }<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      assertEquals(2, results.size());<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      assertTrue(CellUtil.matchingColumn(results.get(0), CELL_WITH_VERSIONS[0]));<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      assertTrue(CellUtil.matchingColumn(results.get(1), CELL_WITH_VERSIONS[2]));<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      assertTrue("Optimize should do some optimizations",<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        scannerNoOptimize.optimization.get() == 0);<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>    get.setFilter(new ColumnCountGetFilter(2));<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    try (CellWithVersionsStoreScanner scanner =<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        new CellWithVersionsStoreScanner(new Scan(get), this.scanInfo)) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      while (scanner.next(results)) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>        continue;<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      assertEquals(2, results.size());<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      assertTrue(CellUtil.matchingColumn(results.get(0), CELL_WITH_VERSIONS[0]));<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      assertTrue(CellUtil.matchingColumn(results.get(1), CELL_WITH_VERSIONS[2]));<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      assertTrue("Optimize should do some optimizations", scanner.optimization.get() &gt; 0);<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    }<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>   * Test utility for building a NavigableSet for scanners.<a name="line.320"></a>
+<span class="sourceLineNo">321</span>   * @param strCols<a name="line.321"></a>
+<span class="sourceLineNo">322</span>   * @return<a name="line.322"></a>
+<span class="sourceLineNo">323</span>   */<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  NavigableSet&lt;byte[]&gt; getCols(String ...strCols) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    NavigableSet&lt;byte[]&gt; cols = new TreeSet&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    for (String col : strCols) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      byte[] bytes = Bytes.toBytes(col);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      cols.add(bytes);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    }<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    return cols;<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>  @Test<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  public void testFullRowGetDoesNotOverreadWhenRowInsideOneBlock() throws IOException {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    // Do a Get against row two. Row two is inside a block that starts with row TWO but ends with<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    // row TWO_POINT_TWO. We should read one block only.<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    Get get = new Get(TWO);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    Scan scan = new Scan(get);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.340"></a>
+<span class="sourceLineNo">341</span>      while (scanner.next(results)) {<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        continue;<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      assertEquals(4, results.size());<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      // We should have gone the optimize route 5 times totally... an INCLUDE for the four cells<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      // in the row plus the DONE on the end.<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      assertEquals(5, scanner.count.get());<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      // For a full row Get, there should be no opportunity for scanner optimization.<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      assertEquals(0, scanner.optimization.get());<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  @Test<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  public void testFullRowSpansBlocks() throws IOException {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    // Do a Get against row FOUR. It spans two blocks.<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    Get get = new Get(FOUR);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    Scan scan = new Scan(get);<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      while (scanner.next(results)) {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>        continue;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>      }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      assertEquals(5, results.size());<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      // We should have gone the optimize route 6 times totally... an INCLUDE for the five cells<a name="line.368"></a>
+<span class="sourceLineNo">369</span>      // in the row plus the DONE on the end.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      assertEquals(6, scanner.count.get());<a name="line.370"></a>
+<span class="sourceLineNo">371</span>      // For a full row Get, there should be no opportunity for scanner optimization.<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      assertEquals(0, scanner.optimization.get());<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><a name="line.375"></a>
+<span class="sourceLineNo">376</span>  /**<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   * Test optimize in StoreScanner. Test that we skip to the next 'block' when we it makes sense<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * reading the block 'index'.<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   * @throws IOException<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   */<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  @Test<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  public void testOptimize() throws IOException {<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    Scan scan = new Scan();<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    // A scan that just gets the first qualifier on each row of the CELL_GRID<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    scan.addColumn(CF, ONE);<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      while (scanner.next(results)) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>        continue;<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      }<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      // Should be four results of column 1 (though there are 5 rows in the CELL_GRID -- the<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      // TWO_POINT_TWO row does not have a a column ONE.<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      assertEquals(4, results.size());<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      for (Cell cell: results) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>        assertTrue(Bytes.equals(ONE, 0, ONE.length,<a name="line.395"></a>
+<span class="sourceLineNo">396</span>            cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength()));<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      }<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      assertTrue("Optimize should do some optimizations", scanner.optimization.get() &gt; 0);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    }<a name="line.399"></a>
+<span class="sourceLineNo">400</span>  }<a name="line.400"></a>
+<span class="sourceLineNo">401</span><a name="line.401"></a>
+<span class="sourceLineNo">402</span>  /**<a name="line.402"></a>
+<span class="sourceLineNo">403</span>   * Ensure the optimize Scan method in StoreScanner does not get in the way of a Get doing minimum<a name="line.403"></a>
+<span class="sourceLineNo">404</span>   * work... seeking to start of block and then SKIPPING until we find the wanted Cell.<a name="line.404"></a>
+<span class="sourceLineNo">405</span>   * This 'simple' scenario mimics case of all Cells fitting inside a single HFileBlock.<a name="line.405"></a>
+<span class="sourceLineNo">406</span>   * See HBASE-15392. This test is a little cryptic. Takes a bit of staring to figure what it up to.<a name="line.406"></a>
+<span class="sourceLineNo">407</span>   * @throws IOException<a name="line.407"></a>
+<span class="sourceLineNo">408</span>   */<a name="line.408"></a>
+<span class="sourceLineNo">409</span>  @Test<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  public void testOptimizeAndGet() throws IOException {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>    // First test a Get of two columns in the row R2. Every Get is a Scan. Get columns named<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    // R2 and R3.<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    Get get = new Get(TWO);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>    get.addColumn(CF, TWO);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    get.addColumn(CF, THREE);<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    Scan scan = new Scan(get);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      // For a Get there should be no more next's after the first call.<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      assertEquals(false, scanner.next(results));<a name="line.420"></a>
+<span class="sourceLineNo">421</span>      // Should be one result only.<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      assertEquals(2, results.size());<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      // And we should have gone through optimize twice only.<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      assertEquals("First qcode is SEEK_NEXT_COL and second INCLUDE_AND_SEEK_NEXT_ROW", 3,<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        scanner.count.get());<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><a name="line.428"></a>
+<span class="sourceLineNo">429</span>  /**<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * Ensure that optimize does not cause the Get to do more seeking than required. Optimize<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   * (see HBASE-15392) was causing us to seek all Cells in a block when a Get Scan if the next block<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   * index/start key was a different row to the current one. A bug. We'd call next too often<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   * because we had to exhaust all Cells in the current row making us load the next block just to<a name="line.433"></a>
+<span class="sourceLineNo">434</span>   * discard what we read there. This test is a little cryptic. Takes a bit of staring to figure<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   * what it up to.<a name="line.435"></a>
+<span class="sourceLineNo">436</span>   * @throws IOException<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   */<a name="line.437"></a>
+<span class="sourceLineNo">438</span>  @Test<a name="line.438"></a>
+<span class="sourceLineNo">439</span>  public void testOptimizeAndGetWithFakedNextBlockIndexStart() throws IOException {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    // First test a Get of second column in the row R2. Every Get is a Scan. Second column has a<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    // qualifier of R2.<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    Get get = new Get(THREE);<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    get.addColumn(CF, TWO);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    Scan scan = new Scan(get);<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    try (CellGridStoreScanner scanner = new CellGridStoreScanner(scan, this.scanInfo)) {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      // For a Get there should be no more next's after the first call.<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      assertEquals(false, scanner.next(results));<a name="line.448"></a>
+<span class="sourceLineNo">449</span>      // Should be one result only.<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      assertEquals(1, results.size());<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      // And we should have gone through optimize twice only.<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      assertEquals("First qcode is SEEK_NEXT_COL and second INCLUDE_AND_SEEK_NEXT_ROW", 2,<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        scanner.count.get());<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>  @Test<a name="line.457"></a>
+<span class="sourceLineNo">458</span>  public void testScanTimeRange() throws IOException {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    String r1 = "R1";<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    // returns only 1 of these 2 even though same timestamp<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.461"></a>
+<span class="sourceLineNo">462</span>        create(r1, CF_STR, "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.462"></a>
+<span class="sourceLineNo">463</span>        create(r1, CF_STR, "a", 2, KeyValue.Type.Put, "dont-care"),<a name="line.463"></a>
+<span class="sourceLineNo">464</span>        create(r1, CF_STR, "a", 3, KeyValue.Type.Put, "dont-care"),<a name="line.464"></a>
+<span class="sourceLineNo">465</span>        create(r1, CF_STR, "a", 4, KeyValue.Type.Put, "dont-care"),<a name="line.465"></a>
+<span class="sourceLineNo">466</span>        create(r1, CF_STR, "a", 5, KeyValue.Type.Put, "dont-care"),<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    };<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    List&lt;KeyValueScanner&gt; scanners = Arrays.&lt;KeyValueScanner&gt;asList(<a name="line.468"></a>
+<span class="sourceLineNo">469</span>        new KeyValueScanner[] {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>            new KeyValueScanFixture(CellComparator.getInstance(), kvs)<a name="line.470"></a>
+<span class="sourceLineNo">471</span>    });<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.472"></a>
+<span class="sourceLineNo">473</span>    scanSpec.setTimeRange(0, 6);<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    scanSpec.readAllVersions();<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    List&lt;Cell&gt; results = null;<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>      results = new ArrayList&lt;&gt;();<a name="line.477"></a>
+<span class="sourceLineNo">478</span>      assertEquals(true, scan.next(results));<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      assertEquals(5, results.size());<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      assertEquals(kvs[kvs.length - 1], results.get(0));<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    }<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    // Scan limited TimeRange<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    scanSpec.setTimeRange(1, 3);<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    scanSpec.readAllVersions();<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      results = new ArrayList&lt;&gt;();<a name="line.487"></a>
+<span class="sourceLineNo">488</span>      assertEquals(true, scan.next(results));<a name="line.488"></a>
+<span class="sourceLineNo">489</span>      assertEquals(2, results.size());<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    }<a name="line.490"></a>
+<span class="sourceLineNo">491</span>    // Another range.<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    scanSpec.setTimeRange(5, 10);<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    scanSpec.readAllVersions();<a name="line.494"></a>
+<span class="sourceLineNo">495</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.495"></a>
+<span class="sourceLineNo">496</span>      results = new ArrayList&lt;&gt;();<a name="line.496"></a>
+<span class="sourceLineNo">497</span>      assertEquals(true, scan.next(results));<a name="line.497"></a>
+<span class="sourceLineNo">498</span>      assertEquals(1, results.size());<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    }<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    // See how TimeRange and Versions interact.<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    // Another range.<a name="line.501"></a>
+<span class="sourceLineNo">502</span>    scanSpec = new Scan().withStartRow(Bytes.toBytes(r1));<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    scanSpec.setTimeRange(0, 10);<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    scanSpec.readVersions(3);<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.505"></a>
+<span class="sourceLineNo">506</span>      results = new ArrayList&lt;&gt;();<a name="line.506"></a>
+<span class="sourceLineNo">507</span>      assertEquals(true, scan.next(results));<a name="line.507"></a>
+<span class="sourceLineNo">508</span>      assertEquals(3, results.size());<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><a name="line.511"></a>
+<span class="sourceLineNo">512</span>  @Test<a name="line.512"></a>
+<span class="sourceLineNo">513</span>  public void testScanSameTimestamp() throws IOException {<a name="line.513"></a>
+<span class="sourceLineNo">514</span>    // returns only 1 of these 2 even though same timestamp<a name="line.514"></a>
+<span class="sourceLineNo">515</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.515"></a>
+<span class="sourceLineNo">516</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.516"></a>
+<span class="sourceLineNo">517</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    };<a name="line.518"></a>
+<span class="sourceLineNo">519</span>    List&lt;KeyValueScanner&gt; scanners = Arrays.asList(<a name="line.519"></a>
+<span class="sourceLineNo">520</span>        new KeyValueScanner[] {<a name="line.520"></a>
+<span class="sourceLineNo">521</span>            new KeyValueScanFixture(CellComparator.getInstance(), kvs)<a name="line.521"></a>
+<span class="sourceLineNo">522</span>        });<a name="line.522"></a>
+<span class="sourceLineNo">523</span><a name="line.523"></a>
+<span class="sourceLineNo">524</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    // this only uses maxVersions (default=1) and TimeRange (default=all)<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.526"></a>
+<span class="sourceLineNo">527</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.527"></a>
+<span class="sourceLineNo">528</span>      assertEquals(true, scan.next(results));<a name="line.528"></a>
+<span class="sourceLineNo">529</span>      assertEquals(1, results.size());<a name="line.529"></a>
+<span class="sourceLineNo">530</span>      assertEquals(kvs[0], results.get(0));<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    }<a name="line.531"></a>
+<span class="sourceLineNo">532</span>  }<a name="line.532"></a>
+<span class="sourceLineNo">533</span><a name="line.533"></a>
+<span class="sourceLineNo">534</span>  /*<a name="line.534"></a>
+<span class="sourceLineNo">535</span>   * Test test shows exactly how the matcher's return codes confuses the StoreScanner<a name="line.535"></a>
+<span class="sourceLineNo">536</span>   * and prevent it from doing the right thing.  Seeking once, then nexting twice<a name="line.536"></a>
+<span class="sourceLineNo">537</span>   * should return R1, then R2, but in this case it doesnt.<a name="line.537"></a>
+<span class="sourceLineNo">538</span>   * TODO this comment makes no sense above. Appears to do the right thing.<a name="line.538"></a>
+<span class="sourceLineNo">539</span>   * @throws IOException<a name="line.539"></a>
+<span class="sourceLineNo">540</span>   */<a name="line.540"></a>
+<span class="sourceLineNo">541</span>  @Test<a name="line.541"></a>
+<span class="sourceLineNo">542</span>  public void testWontNextToNext() throws IOException {<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    // build the scan file:<a name="line.543"></a>
+<span class="sourceLineNo">544</span>    KeyValue [] kvs = new KeyValue[] {<a name="line.544"></a>
+<span class="sourceLineNo">545</span>        create("R1", "cf", "a", 2, KeyValue.Type.Put, "dont-care"),<a name="line.545"></a>
+<span class="sourceLineNo">546</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.546"></a>
+<span class="sourceLineNo">547</span>        create("R2", "cf", "a", 1, KeyValue.Type.Put, "dont-care")<a name="line.547"></a>
+<span class="sourceLineNo">548</span>    };<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    List&lt;KeyValueScanner&gt; scanners = scanFixture(kvs);<a name="line.549"></a>
+<span class="sourceLineNo">550</span><a name="line.550"></a>
+<span class="sourceLineNo">551</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    // this only uses maxVersions (default=1) and TimeRange (default=all)<a name="line.552"></a>
+<span class="sourceLineNo">553</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.553"></a>
+<span class="sourceLineNo">554</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.554"></a>
 <span class="sourceLineNo">555</span>      scan.next(results);<a name="line.555"></a>
 <span class="sourceLineNo">556</span>      assertEquals(1, results.size());<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      assertEquals(kvs[2], results.get(0));<a name="line.557"></a>
-<span class="sourceLineNo">558</span><a name="line.558"></a>
-<span class="sourceLineNo">559</span>      results.clear();<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      scan.next(results);<a name="line.560"></a>
-<span class="sourceLineNo">561</span>      assertEquals(0, results.size());<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">557</span>      assertEquals(kvs[0], results.get(0));<a name="line.557"></a>
+<span class="sourceLineNo">558</span>      // should be ok...<a name="line.558"></a>
+<span class="sourceLineNo">559</span>      // now scan _next_ again.<a name="line.559"></a>
+<span class="sourceLineNo">560</span>      results.clear();<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      scan.next(results);<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      assertEquals(1, results.size());<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      assertEquals(kvs[2], results.get(0));<a name="line.563"></a>
 <span class="sourceLineNo">564</span><a name="line.564"></a>
-<span class="sourceLineNo">565</span><a name="line.565"></a>
-<span class="sourceLineNo">566</span>  @Test<a name="line.566"></a>
-<span class="sourceLineNo">567</span>  public void testDeleteVersionSameTimestamp() throws IOException {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    KeyValue [] kvs = new KeyValue [] {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.569"></a>
-<span class="sourceLineNo">570</span>        create("R1", "cf", "a", 1, KeyValue.Type.Delete, "dont-care"),<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    };<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    List&lt;KeyValueScanner&gt; scanners = scanFixture(kvs);<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.574"></a>
-<span class="sourceLineNo">575</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      assertFalse(scan.next(results));<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      assertEquals(0, results.size());<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    }<a name="line.578"></a>
-<span class="sourceLineNo">579</span>  }<a name="line.579"></a>
-<span class="sourceLineNo">580</span><a name="line.580"></a>
-<span class="sourceLineNo">581</span>  /*<a name="line.581"></a>
-<span class="sourceLineNo">582</span>   * Test the case where there is a delete row 'in front of' the next row, the scanner<a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * will move to the next row.<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   */<a name="line.584"></a>
-<span class="sourceLineNo">585</span>  @Test<a name="line.585"></a>
-<span class="sourceLineNo">586</span>  public void testDeletedRowThenGoodRow() throws IOException {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    KeyValue [] kvs = new KeyValue [] {<a name="line.587"></a>
-<span class="sourceLineNo">588</span>        create("R1", "cf", "a", 1, KeyValue.Type.Put, "dont-care"),<a name="line.588"></a>
-<span class="sourceLineNo">589</span>        create("R1", "cf", "a", 1, KeyValue.Type.Delete, "dont-care"),<a name="line.589"></a>
-<span class="sourceLineNo">590</span>        create("R2", "cf", "a", 20, KeyValue.Type.Put, "dont-care")<a name="line.590"></a>
-<span class="sourceLineNo">591</span>    };<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    List&lt;KeyValueScanner&gt; scanners = scanFixture(kvs);<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    Scan scanSpec = new Scan().withStartRow(Bytes.toBytes("R1"));<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    try (StoreScanner scan = new StoreScanner(scanSpec, scanInfo, getCols("a"), scanners)) {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.595"></a>
-<span class="sourceLineNo">596</span>      assertEquals(true, scan.next(results));<a name="line.596"></a>
-<span class="sourceLineNo">597</span>      assertEquals(0, results.size());<a name="line.597"></a>
-<span class="sourceLineNo">598</span><a name="line.598"></a>
-<span class="sourceLineNo">599</span>      assertEquals(true, scan.next(results));<a name="line.599"></a>
-<span class="sourceLineNo">600</span>      assertEquals(1, results.size());<a name="line.600"></a>
-<span class="sourceLineNo">601</span>      assertEquals(kvs[2], results.get(0));<a name="line.601"></a>
-<span class="sourceLineNo">602</span><a name="line.602"></a>
-<span class="sourceLineNo">603</span>      assertEquals(false, scan.next(results));<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    }<a name="line.604"></a>
-<span class="sourceLineNo">605</span>  }<a name="line.605"></a>
-<span class="sourceLineNo">606</span><a name="line.606"></a>
-<span class="sourceLineNo">607</span>  @Test<a name="line.607"></a>
-<span class="sourceLineNo">608</span>  public void testDeleteVersionMaskingMultiplePuts() throws IOException {<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    long now = System.currentTimeMillis();<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    KeyValue [] kvs1 = new KeyValue[] {<a name="line.610"></a>
-<span class="sourceLineNo">611</span>        create("R1", "cf", "a", now, KeyValue.Type.Put, "dont-care"),<a name="line.611"></a>
-<span class="sourceLineNo">612</span>        create("R1", "cf", "a", now, KeyValue.Type.Delete, "dont-care")<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    };<a name="line.613"></a>
-<span class="sourceLineNo">614</span>    KeyValue [] kvs2 = new KeyValue[] {<a name="line.614"></a>
-<span class="sourceLineNo">615</span>        create("R1", "cf", "a", now-500, KeyValue.Type.Put, "dont-care"),<a name="line.615"></a>
-<span class="sourceLineNo">616</span>        create("R1", "cf", "a", now-100, KeyValue.Type.Put, "dont-care"),<a name="line.616"></a>
-<span class="sourceLineNo">617</span>        create("R1", "cf", "a", now, KeyValue.Type.Put, "dont-care")<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    };<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    List&lt;KeyValueScanner&gt; scanners = scanFixture(kvs1, kvs2);<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>    try (StoreScanner scan = new StoreScanner(new Scan().withStartRow(Bytes.toBytes("R1")),<a name="line.621"></a>
-<span class="sourceLineNo">622</span>        scanInfo, getCols("a"), scanners)) {<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      List&lt;Cell&gt; results = new ArrayList&lt;&gt;();<a name="line.623"></a>
-<span class="sourceLineNo">624</span>      // the two put at ts=now will be masked by the 1 delete, and<a name="line.624"></a>
-<span class="sourceLineNo">625</span>      // since the scan default returns 1 version we'll return the newest<a name="line.625"></a>
-<span class="sourceLineNo">626</span>      // key, which is kvs[2], now-100.<a name="line.626"></a>
-<span class="sourceLineNo">627</span>      assertEquals(true, scan.next(results));<a name="line.627"></a>
-<span class="sourceLineNo">628</span>      assertEquals(1, results.size());<a name="line.628"></a>
-<span class="sourceLineNo">629</span>      assertEquals(kvs2[1], results.get(0));<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    }<a name="line.630"></a>
-<span class="sourceLineNo">631</span>  }<a name="line.631"></a>
-<span class="sourceLineNo">632</span><a name="line.632"></a>
-<span class="sourceLineNo">633</span>  @Test<a name="line.633"></a>
-<span class="sourceLineNo">634</span>  public void testDeleteVersionsMixedAndMultipleVersionReturn() throws IOException {<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    long now = System.currentTimeMillis();<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    KeyValue [] kvs1 = new KeyValue[] {<a name="line.636"></a>
-<span class="sourceLineNo">637</span>        create("R1", "cf", "a", now, KeyValue.Type.Put, "dont-care"),<a name="line.637"></a>
-<span class="sourceLineNo">638</span>        create("R1", "cf", "a", now, KeyValue.Type.Delete, "dont-care")<a name="line.638"></a>
-<span class="sourceLineNo">639</span>    };<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    KeyValue [] kvs2 = new KeyValue[] {<a name="line.640"></a>
-<span class="sourceLineNo">641</span>        create("R1", "cf", "a", now-500, KeyValue.Type.Put, "dont-care"),<a name="line.641"></a>
-<span class="sourceLineNo">642</span>        create("R1", "cf", "a", now+500, KeyValue.Type.Put, "dont-care"),<a name="line.642"></a>
+<span class="sourceLineNo">565</span>      results.clear();<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      scan.next(results);<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      assertEqual

<TRUNCATED>

[25/29] hbase-site git commit: Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/KeyValueHeap.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/KeyValueHeap.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/KeyValueHeap.html
index f489131..c2145b3 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/KeyValueHeap.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/KeyValueHeap.html
@@ -149,6 +149,16 @@
 <td class="colFirst"><code>(package private) <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a></code></td>
 <td class="colLast"><span class="typeNameLabel">HRegion.RegionScannerImpl.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#getStoreHeapForTesting--">getStoreHeapForTesting</a></span>()</code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a></code></td>
+<td class="colLast"><span class="typeNameLabel">StoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#newKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">newKVHeap</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
+         <a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ReversedStoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#newKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">newKVHeap</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
+         <a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>
+</tr>
 </tbody>
 </table>
 <table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/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 659e89f..6c34013 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/KeyValueScanner.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/KeyValueScanner.html
@@ -582,6 +582,16 @@
                         long&nbsp;nonce)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a></code></td>
+<td class="colLast"><span class="typeNameLabel">StoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#newKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">newKVHeap</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
+         <a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ReversedStoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#newKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">newKVHeap</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
+         <a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">StoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#parallelSeek-java.util.List-org.apache.hadoop.hbase.Cell-">parallelSeek</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
             <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)</code>
@@ -610,16 +620,11 @@
            <a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">ReversedStoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#resetKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">resetKVHeap</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
-           <a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">StoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#seekAllScanner-org.apache.hadoop.hbase.regionserver.ScanInfo-java.util.List-">seekAllScanner</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a>&nbsp;scanInfo,
               <a href="https://docs.oracle.com/javase/8/docs/api/java/util/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)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<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#seekScanners-java.util.List-org.apache.hadoop.hbase.Cell-boolean-boolean-">seekScanners</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
             <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;seekKey,
@@ -628,26 +633,26 @@
 <div class="block">Seek the specified scanners with the given key</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><span class="typeNameLabel">ReversedStoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#seekScanners-java.util.List-org.apache.hadoop.hbase.Cell-boolean-boolean-">seekScanners</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
             <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;seekKey,
             boolean&nbsp;isLazy,
             boolean&nbsp;isParallelSeek)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/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-org.apache.hadoop.hbase.regionserver.HStore-java.util.List-">selectScannersFrom</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
                   <a href="https://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 TTL.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">StoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#updateReaders-java.util.List-java.util.List-">updateReaders</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;sfs,
              <a href="https://docs.oracle.com/javase/8/docs/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;memStoreScanners)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">ChangedReadersObserver.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/ChangedReadersObserver.html#updateReaders-java.util.List-java.util.List-">updateReaders</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;sfs,
              <a href="https://docs.oracle.com/javase/8/docs/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;memStoreScanners)</code>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.html b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.html
index 3af9384..d80fcde 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.html
@@ -796,7 +796,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/regionserver/query
 <ul class="blockList">
 <li class="blockList">
 <h4>getColumnHint</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ColumnCount.html" title="class in org.apache.hadoop.hbase.regionserver.querymatcher">ColumnCount</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.html#line.361">getColumnHint</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ColumnCount.html" title="class in org.apache.hadoop.hbase.regionserver.querymatcher">ColumnCount</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.html#line.358">getColumnHint</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ColumnTracker.html#getColumnHint--">ColumnTracker</a></code></span></div>
 <div class="block">Used by matcher and scan/get to get a hint of the next column
  to seek to after checkColumn() returns SKIP.  Returns the next interesting
@@ -819,7 +819,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/regionserver/query
 <ul class="blockList">
 <li class="blockList">
 <h4>getNextRowOrNextColumn</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher">ScanQueryMatcher.MatchCode</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.html#line.371">getNextRowOrNextColumn</a>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher">ScanQueryMatcher.MatchCode</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.html#line.368">getNextRowOrNextColumn</a>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ColumnTracker.html#getNextRowOrNextColumn-org.apache.hadoop.hbase.Cell-">ColumnTracker</a></code></span></div>
 <div class="block">Retrieve the MatchCode for the next row or column</div>
 <dl>
@@ -834,7 +834,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/regionserver/query
 <ul class="blockList">
 <li class="blockList">
 <h4>isDone</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.html#line.377">isDone</a>(long&nbsp;timestamp)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.html#line.374">isDone</a>(long&nbsp;timestamp)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ColumnTracker.html#isDone-long-">ColumnTracker</a></code></span></div>
 <div class="block">Give the tracker a chance to declare it's done based on only the timestamp
  to allow an early out.</div>
@@ -852,7 +852,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/regionserver/query
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getCellComparator</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.html#line.383">getCellComparator</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.html#line.380">getCellComparator</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/DeleteTracker.html#getCellComparator--">DeleteTracker</a></code></span></div>
 <div class="block">Return the comparator passed to this delete tracker</div>
 <dl>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
index 19354d1..46651a5 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
@@ -247,8 +247,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/CompressionContext.DictionaryIndex.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">CompressionContext.DictionaryIndex</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/ProtobufLogReader.WALHdrResult.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">ProtobufLogReader.WALHdrResult</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/CompressionContext.DictionaryIndex.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">CompressionContext.DictionaryIndex</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/RingBufferTruck.Type.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">RingBufferTruck.Type</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html b/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
index c20ff47..034077c 100644
--- a/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
@@ -110,8 +110,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.rest.model.<a href="../../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html" title="enum in org.apache.hadoop.hbase.rest.model"><span class="typeNameLink">ScannerModel.FilterModel.FilterType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.rest.model.<a href="../../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum in org.apache.hadoop.hbase.rest.model"><span class="typeNameLink">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.rest.model.<a href="../../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html" title="enum in org.apache.hadoop.hbase.rest.model"><span class="typeNameLink">ScannerModel.FilterModel.FilterType</span></a></li>
 </ul>
 </li>
 </ul>

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

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/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 4b99dc0..3d8fe36 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
@@ -540,14 +540,14 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PoolMap.PoolType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PoolMap.PoolType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.PureJavaComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PrettyPrinter.Unit.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PrettyPrinter.Unit</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.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/HBaseFsck.ErrorReporter.ERROR_CODE.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">HBaseFsck.ErrorReporter.ERROR_CODE</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">ChecksumType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/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/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/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/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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/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 fd5dd3d..f25c114 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
@@ -18,9 +18,9 @@
 <span class="sourceLineNo">010</span>  public static final String version = "3.0.0-SNAPSHOT";<a name="line.10"></a>
 <span class="sourceLineNo">011</span>  public static final String revision = "";<a name="line.11"></a>
 <span class="sourceLineNo">012</span>  public static final String user = "jenkins";<a name="line.12"></a>
-<span class="sourceLineNo">013</span>  public static final String date = "Sat Dec 22 22:11:06 UTC 2018";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String date = "Tue Dec 25 14:42:07 UTC 2018";<a name="line.13"></a>
 <span class="sourceLineNo">014</span>  public static final String url = "git://jenkins-websites1.apache.org/home/jenkins/jenkins-slave/workspace/hbase_generate_website/hbase";<a name="line.14"></a>
-<span class="sourceLineNo">015</span>  public static final String srcChecksum = "ba9c30be5b2d28bbfa84e79c98132456";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String srcChecksum = "d03152c0541006f4439c608cf8ff910c";<a name="line.15"></a>
 <span class="sourceLineNo">016</span>}<a name="line.16"></a>
 
 


[09/29] hbase-site git commit: Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.WaitingForMultiMutationsObserver.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.WaitingForMultiMutationsObserver.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.WaitingForMultiMutationsObserver.html
index 23ccfe4..f17c8f2 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.WaitingForMultiMutationsObserver.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.WaitingForMultiMutationsObserver.html
@@ -1067,7 +1067,7 @@
 <span class="sourceLineNo">1059</span>    }<a name="line.1059"></a>
 <span class="sourceLineNo">1060</span>  }<a name="line.1060"></a>
 <span class="sourceLineNo">1061</span><a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>  private static byte[] generateHugeValue(int size) {<a name="line.1062"></a>
+<span class="sourceLineNo">1062</span>  static byte[] generateHugeValue(int size) {<a name="line.1062"></a>
 <span class="sourceLineNo">1063</span>    Random rand = ThreadLocalRandom.current();<a name="line.1063"></a>
 <span class="sourceLineNo">1064</span>    byte[] value = new byte[size];<a name="line.1064"></a>
 <span class="sourceLineNo">1065</span>    for (int i = 0; i &lt; value.length; i++) {<a name="line.1065"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.WaitingForScanObserver.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.WaitingForScanObserver.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.WaitingForScanObserver.html
index 23ccfe4..f17c8f2 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.WaitingForScanObserver.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.WaitingForScanObserver.html
@@ -1067,7 +1067,7 @@
 <span class="sourceLineNo">1059</span>    }<a name="line.1059"></a>
 <span class="sourceLineNo">1060</span>  }<a name="line.1060"></a>
 <span class="sourceLineNo">1061</span><a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>  private static byte[] generateHugeValue(int size) {<a name="line.1062"></a>
+<span class="sourceLineNo">1062</span>  static byte[] generateHugeValue(int size) {<a name="line.1062"></a>
 <span class="sourceLineNo">1063</span>    Random rand = ThreadLocalRandom.current();<a name="line.1063"></a>
 <span class="sourceLineNo">1064</span>    byte[] value = new byte[size];<a name="line.1064"></a>
 <span class="sourceLineNo">1065</span>    for (int i = 0; i &lt; value.length; i++) {<a name="line.1065"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html
index 23ccfe4..f17c8f2 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html
@@ -1067,7 +1067,7 @@
 <span class="sourceLineNo">1059</span>    }<a name="line.1059"></a>
 <span class="sourceLineNo">1060</span>  }<a name="line.1060"></a>
 <span class="sourceLineNo">1061</span><a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>  private static byte[] generateHugeValue(int size) {<a name="line.1062"></a>
+<span class="sourceLineNo">1062</span>  static byte[] generateHugeValue(int size) {<a name="line.1062"></a>
 <span class="sourceLineNo">1063</span>    Random rand = ThreadLocalRandom.current();<a name="line.1063"></a>
 <span class="sourceLineNo">1064</span>    byte[] value = new byte[size];<a name="line.1064"></a>
 <span class="sourceLineNo">1065</span>    for (int i = 0; i &lt; value.length; i++) {<a name="line.1065"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html
new file mode 100644
index 0000000..21c1cde
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html
@@ -0,0 +1,181 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.client;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import static org.junit.Assert.assertArrayEquals;<a name="line.20"></a>
+<span class="sourceLineNo">021</span><a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.io.IOException;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.TableName;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.Cell;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.testclassification.ClientTests;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.junit.AfterClass;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.junit.BeforeClass;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.junit.ClassRule;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.junit.Test;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.junit.experimental.categories.Category;<a name="line.34"></a>
+<span class="sourceLineNo">035</span><a name="line.35"></a>
+<span class="sourceLineNo">036</span>import java.util.List;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import java.util.ArrayList;<a name="line.37"></a>
+<span class="sourceLineNo">038</span><a name="line.38"></a>
+<span class="sourceLineNo">039</span>/**<a name="line.39"></a>
+<span class="sourceLineNo">040</span> * Testcase for HBASE-21032, where use the wrong readType from a Scan instance which is actually a<a name="line.40"></a>
+<span class="sourceLineNo">041</span> * get scan and cause returning only 1 cell per rpc call.<a name="line.41"></a>
+<span class="sourceLineNo">042</span> */<a name="line.42"></a>
+<span class="sourceLineNo">043</span>@Category({ ClientTests.class, MediumTests.class })<a name="line.43"></a>
+<span class="sourceLineNo">044</span>public class TestGetScanColumnsWithNewVersionBehavior {<a name="line.44"></a>
+<span class="sourceLineNo">045</span><a name="line.45"></a>
+<span class="sourceLineNo">046</span>  @ClassRule<a name="line.46"></a>
+<span class="sourceLineNo">047</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.47"></a>
+<span class="sourceLineNo">048</span>    HBaseClassTestRule.forClass(TestGetScanColumnsWithNewVersionBehavior.class);<a name="line.48"></a>
+<span class="sourceLineNo">049</span><a name="line.49"></a>
+<span class="sourceLineNo">050</span>  private final static HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  private static final TableName TABLE = TableName.valueOf("table");<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  private static final byte[] CF = { 'c', 'f' };<a name="line.52"></a>
+<span class="sourceLineNo">053</span>  private static final byte[] ROW = { 'r', 'o', 'w' };<a name="line.53"></a>
+<span class="sourceLineNo">054</span>  private static final byte[] COLA = { 'a' };<a name="line.54"></a>
+<span class="sourceLineNo">055</span>  private static final byte[] COLB = { 'b' };<a name="line.55"></a>
+<span class="sourceLineNo">056</span>  private static final byte[] COLC = { 'c' };<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  private static final long TS = 42;<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>  @BeforeClass<a name="line.59"></a>
+<span class="sourceLineNo">060</span>  public static void setUp() throws Exception {<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    TEST_UTIL.startMiniCluster(1);<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    ColumnFamilyDescriptor cd = ColumnFamilyDescriptorBuilder<a name="line.62"></a>
+<span class="sourceLineNo">063</span>        .newBuilder(CF)<a name="line.63"></a>
+<span class="sourceLineNo">064</span>        .setNewVersionBehavior(true)<a name="line.64"></a>
+<span class="sourceLineNo">065</span>        .build();<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    TEST_UTIL.createTable(TableDescriptorBuilder<a name="line.66"></a>
+<span class="sourceLineNo">067</span>        .newBuilder(TABLE)<a name="line.67"></a>
+<span class="sourceLineNo">068</span>        .setColumnFamily(cd)<a name="line.68"></a>
+<span class="sourceLineNo">069</span>        .build(), null);<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  }<a name="line.70"></a>
+<span class="sourceLineNo">071</span><a name="line.71"></a>
+<span class="sourceLineNo">072</span>  @AfterClass<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  public static void tearDown() throws Exception {<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  }<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>  @Test<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  public void test() throws IOException {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    try (Table t = TEST_UTIL.getConnection().getTable(TABLE)) {<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      Cell [] expected = new Cell[2];<a name="line.80"></a>
+<span class="sourceLineNo">081</span>      expected[0] = new KeyValue(ROW, CF, COLA, TS, COLA);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>      expected[1] = new KeyValue(ROW, CF, COLC, TS, COLC);<a name="line.82"></a>
+<span class="sourceLineNo">083</span><a name="line.83"></a>
+<span class="sourceLineNo">084</span>      Put p = new Put(ROW);<a name="line.84"></a>
+<span class="sourceLineNo">085</span>      p.addColumn(CF, COLA, TS, COLA);<a name="line.85"></a>
+<span class="sourceLineNo">086</span>      p.addColumn(CF, COLB, TS, COLB);<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      p.addColumn(CF, COLC, TS, COLC);<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      t.put(p);<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>      // check get request<a name="line.90"></a>
+<span class="sourceLineNo">091</span>      Get get = new Get(ROW);<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      get.addColumn(CF, COLA);<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      get.addColumn(CF, COLC);<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      Result getResult = t.get(get);<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      assertArrayEquals(expected, getResult.rawCells());<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>      // check scan request<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      Scan scan = new Scan(ROW);<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      scan.addColumn(CF, COLA);<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      scan.addColumn(CF, COLC);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      ResultScanner scanner = t.getScanner(scan);<a name="line.101"></a>
+<span class="sourceLineNo">102</span>      List scanResult = new ArrayList&lt;Cell&gt;();<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      for (Result result = scanner.next(); (result != null); result = scanner.next()) {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>          scanResult.addAll(result.listCells());<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      }<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      assertArrayEquals(expected, scanResult.toArray(new Cell[scanResult.size()]));<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    }<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  }<a name="line.108"></a>
+<span class="sourceLineNo">109</span>}<a name="line.109"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>


[13/29] hbase-site git commit: Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html
index 5c3d7f4..ef2cd13 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html
@@ -721,3236 +721,3236 @@
 <span class="sourceLineNo">713</span>      new Path(root, "mapreduce-am-staging-root-dir").toString());<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>  /**<a name="line.717"></a>
-<span class="sourceLineNo">718</span>   *  Get the HBase setting for dfs.client.read.shortcircuit from the conf or a system property.<a name="line.718"></a>
-<span class="sourceLineNo">719</span>   *  This allows to specify this parameter on the command line.<a name="line.719"></a>
-<span class="sourceLineNo">720</span>   *   If not set, default is true.<a name="line.720"></a>
-<span class="sourceLineNo">721</span>   */<a name="line.721"></a>
-<span class="sourceLineNo">722</span>  public boolean isReadShortCircuitOn(){<a name="line.722"></a>
-<span class="sourceLineNo">723</span>    final String propName = "hbase.tests.use.shortcircuit.reads";<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    String readOnProp = System.getProperty(propName);<a name="line.724"></a>
-<span class="sourceLineNo">725</span>    if (readOnProp != null){<a name="line.725"></a>
-<span class="sourceLineNo">726</span>      return  Boolean.parseBoolean(readOnProp);<a name="line.726"></a>
-<span class="sourceLineNo">727</span>    } else {<a name="line.727"></a>
-<span class="sourceLineNo">728</span>      return conf.getBoolean(propName, false);<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><a name="line.731"></a>
-<span class="sourceLineNo">732</span>  /** Enable the short circuit read, unless configured differently.<a name="line.732"></a>
-<span class="sourceLineNo">733</span>   * Set both HBase and HDFS settings, including skipping the hdfs checksum checks.<a name="line.733"></a>
-<span class="sourceLineNo">734</span>   */<a name="line.734"></a>
-<span class="sourceLineNo">735</span>  private void enableShortCircuit() {<a name="line.735"></a>
-<span class="sourceLineNo">736</span>    if (isReadShortCircuitOn()) {<a name="line.736"></a>
-<span class="sourceLineNo">737</span>      String curUser = System.getProperty("user.name");<a name="line.737"></a>
-<span class="sourceLineNo">738</span>      LOG.info("read short circuit is ON for user " + curUser);<a name="line.738"></a>
-<span class="sourceLineNo">739</span>      // read short circuit, for hdfs<a name="line.739"></a>
-<span class="sourceLineNo">740</span>      conf.set("dfs.block.local-path-access.user", curUser);<a name="line.740"></a>
-<span class="sourceLineNo">741</span>      // read short circuit, for hbase<a name="line.741"></a>
-<span class="sourceLineNo">742</span>      conf.setBoolean("dfs.client.read.shortcircuit", true);<a name="line.742"></a>
-<span class="sourceLineNo">743</span>      // Skip checking checksum, for the hdfs client and the datanode<a name="line.743"></a>
-<span class="sourceLineNo">744</span>      conf.setBoolean("dfs.client.read.shortcircuit.skip.checksum", true);<a name="line.744"></a>
-<span class="sourceLineNo">745</span>    } else {<a name="line.745"></a>
-<span class="sourceLineNo">746</span>      LOG.info("read short circuit is OFF");<a name="line.746"></a>
-<span class="sourceLineNo">747</span>    }<a name="line.747"></a>
-<span class="sourceLineNo">748</span>  }<a name="line.748"></a>
-<span class="sourceLineNo">749</span><a name="line.749"></a>
-<span class="sourceLineNo">750</span>  private String createDirAndSetProperty(final String relPath, String property) {<a name="line.750"></a>
-<span class="sourceLineNo">751</span>    String path = getDataTestDir(relPath).toString();<a name="line.751"></a>
-<span class="sourceLineNo">752</span>    System.setProperty(property, path);<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    conf.set(property, path);<a name="line.753"></a>
-<span class="sourceLineNo">754</span>    new File(path).mkdirs();<a name="line.754"></a>
-<span class="sourceLineNo">755</span>    LOG.info("Setting " + property + " to " + path + " in system properties and HBase conf");<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    return path;<a name="line.756"></a>
-<span class="sourceLineNo">757</span>  }<a name="line.757"></a>
-<span class="sourceLineNo">758</span><a name="line.758"></a>
-<span class="sourceLineNo">759</span>  /**<a name="line.759"></a>
-<span class="sourceLineNo">760</span>   * Shuts down instance created by call to {@link #startMiniDFSCluster(int)}<a name="line.760"></a>
-<span class="sourceLineNo">761</span>   * or does nothing.<a name="line.761"></a>
-<span class="sourceLineNo">762</span>   * @throws IOException<a name="line.762"></a>
-<span class="sourceLineNo">763</span>   */<a name="line.763"></a>
-<span class="sourceLineNo">764</span>  public void shutdownMiniDFSCluster() throws IOException {<a name="line.764"></a>
-<span class="sourceLineNo">765</span>    if (this.dfsCluster != null) {<a name="line.765"></a>
-<span class="sourceLineNo">766</span>      // The below throws an exception per dn, AsynchronousCloseException.<a name="line.766"></a>
-<span class="sourceLineNo">767</span>      this.dfsCluster.shutdown();<a name="line.767"></a>
-<span class="sourceLineNo">768</span>      dfsCluster = null;<a name="line.768"></a>
-<span class="sourceLineNo">769</span>      dataTestDirOnTestFS = null;<a name="line.769"></a>
-<span class="sourceLineNo">770</span>      FSUtils.setFsDefault(this.conf, new Path("file:///"));<a name="line.770"></a>
-<span class="sourceLineNo">771</span>    }<a name="line.771"></a>
-<span class="sourceLineNo">772</span>  }<a name="line.772"></a>
-<span class="sourceLineNo">773</span><a name="line.773"></a>
-<span class="sourceLineNo">774</span>  /**<a name="line.774"></a>
-<span class="sourceLineNo">775</span>   * Start up a minicluster of hbase, dfs, and zookeeper where WAL's walDir is created separately.<a name="line.775"></a>
-<span class="sourceLineNo">776</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.776"></a>
-<span class="sourceLineNo">777</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.777"></a>
-<span class="sourceLineNo">778</span>   * @return The mini HBase cluster created.<a name="line.778"></a>
-<span class="sourceLineNo">779</span>   * @see #shutdownMiniCluster()<a name="line.779"></a>
-<span class="sourceLineNo">780</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.780"></a>
-<span class="sourceLineNo">781</span>   */<a name="line.781"></a>
-<span class="sourceLineNo">782</span>  @Deprecated<a name="line.782"></a>
-<span class="sourceLineNo">783</span>  public MiniHBaseCluster startMiniCluster(boolean createWALDir) throws Exception {<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.784"></a>
-<span class="sourceLineNo">785</span>        .createWALDir(createWALDir).build();<a name="line.785"></a>
-<span class="sourceLineNo">786</span>    return startMiniCluster(option);<a name="line.786"></a>
-<span class="sourceLineNo">787</span>  }<a name="line.787"></a>
-<span class="sourceLineNo">788</span><a name="line.788"></a>
-<span class="sourceLineNo">789</span>  /**<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.791"></a>
-<span class="sourceLineNo">792</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.792"></a>
-<span class="sourceLineNo">793</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.793"></a>
-<span class="sourceLineNo">794</span>   * @return The mini HBase cluster created.<a name="line.794"></a>
-<span class="sourceLineNo">795</span>   * @see #shutdownMiniCluster()<a name="line.795"></a>
-<span class="sourceLineNo">796</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.796"></a>
-<span class="sourceLineNo">797</span>   */<a name="line.797"></a>
-<span class="sourceLineNo">798</span>  @Deprecated<a name="line.798"></a>
-<span class="sourceLineNo">799</span>  public MiniHBaseCluster startMiniCluster(int numSlaves, boolean createRootDir)<a name="line.799"></a>
-<span class="sourceLineNo">800</span>  throws Exception {<a name="line.800"></a>
-<span class="sourceLineNo">801</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.801"></a>
-<span class="sourceLineNo">802</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).createRootDir(createRootDir).build();<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    return startMiniCluster(option);<a name="line.803"></a>
-<span class="sourceLineNo">804</span>  }<a name="line.804"></a>
-<span class="sourceLineNo">805</span><a name="line.805"></a>
-<span class="sourceLineNo">806</span>  /**<a name="line.806"></a>
-<span class="sourceLineNo">807</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.807"></a>
-<span class="sourceLineNo">808</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.808"></a>
-<span class="sourceLineNo">809</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.809"></a>
-<span class="sourceLineNo">810</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.810"></a>
-<span class="sourceLineNo">811</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.811"></a>
-<span class="sourceLineNo">812</span>   * @return The mini HBase cluster created.<a name="line.812"></a>
-<span class="sourceLineNo">813</span>   * @see #shutdownMiniCluster()<a name="line.813"></a>
-<span class="sourceLineNo">814</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.814"></a>
-<span class="sourceLineNo">815</span>   */<a name="line.815"></a>
-<span class="sourceLineNo">816</span>  @Deprecated<a name="line.816"></a>
-<span class="sourceLineNo">817</span>  public MiniHBaseCluster startMiniCluster(int numSlaves, boolean createRootDir,<a name="line.817"></a>
-<span class="sourceLineNo">818</span>      boolean createWALDir) throws Exception {<a name="line.818"></a>
-<span class="sourceLineNo">819</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.819"></a>
-<span class="sourceLineNo">820</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).createRootDir(createRootDir)<a name="line.820"></a>
-<span class="sourceLineNo">821</span>        .createWALDir(createWALDir).build();<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    return startMiniCluster(option);<a name="line.822"></a>
-<span class="sourceLineNo">823</span>  }<a name="line.823"></a>
-<span class="sourceLineNo">824</span><a name="line.824"></a>
-<span class="sourceLineNo">825</span>  /**<a name="line.825"></a>
-<span class="sourceLineNo">826</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.826"></a>
-<span class="sourceLineNo">827</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.827"></a>
-<span class="sourceLineNo">828</span>   * @param numMasters Master node number.<a name="line.828"></a>
-<span class="sourceLineNo">829</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.829"></a>
-<span class="sourceLineNo">830</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.830"></a>
-<span class="sourceLineNo">831</span>   * @return The mini HBase cluster created.<a name="line.831"></a>
-<span class="sourceLineNo">832</span>   * @see #shutdownMiniCluster()<a name="line.832"></a>
-<span class="sourceLineNo">833</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.833"></a>
-<span class="sourceLineNo">834</span>   */<a name="line.834"></a>
-<span class="sourceLineNo">835</span>  @Deprecated<a name="line.835"></a>
-<span class="sourceLineNo">836</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, boolean createRootDir)<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    throws Exception {<a name="line.837"></a>
-<span class="sourceLineNo">838</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.838"></a>
-<span class="sourceLineNo">839</span>        .numMasters(numMasters).numRegionServers(numSlaves).createRootDir(createRootDir)<a name="line.839"></a>
-<span class="sourceLineNo">840</span>        .numDataNodes(numSlaves).build();<a name="line.840"></a>
-<span class="sourceLineNo">841</span>    return startMiniCluster(option);<a name="line.841"></a>
-<span class="sourceLineNo">842</span>  }<a name="line.842"></a>
-<span class="sourceLineNo">843</span><a name="line.843"></a>
-<span class="sourceLineNo">844</span>  /**<a name="line.844"></a>
-<span class="sourceLineNo">845</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.845"></a>
-<span class="sourceLineNo">846</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.846"></a>
-<span class="sourceLineNo">847</span>   * @param numMasters Master node number.<a name="line.847"></a>
-<span class="sourceLineNo">848</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.848"></a>
-<span class="sourceLineNo">849</span>   * @return The mini HBase cluster created.<a name="line.849"></a>
-<span class="sourceLineNo">850</span>   * @see #shutdownMiniCluster()<a name="line.850"></a>
-<span class="sourceLineNo">851</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.851"></a>
-<span class="sourceLineNo">852</span>   */<a name="line.852"></a>
-<span class="sourceLineNo">853</span>  @Deprecated<a name="line.853"></a>
-<span class="sourceLineNo">854</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves) throws Exception {<a name="line.854"></a>
-<span class="sourceLineNo">855</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.855"></a>
-<span class="sourceLineNo">856</span>        .numMasters(numMasters).numRegionServers(numSlaves).numDataNodes(numSlaves).build();<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    return startMiniCluster(option);<a name="line.857"></a>
-<span class="sourceLineNo">858</span>  }<a name="line.858"></a>
-<span class="sourceLineNo">859</span><a name="line.859"></a>
-<span class="sourceLineNo">860</span>  /**<a name="line.860"></a>
-<span class="sourceLineNo">861</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.861"></a>
-<span class="sourceLineNo">862</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.862"></a>
-<span class="sourceLineNo">863</span>   * @param numMasters Master node number.<a name="line.863"></a>
-<span class="sourceLineNo">864</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.864"></a>
-<span class="sourceLineNo">865</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.865"></a>
-<span class="sourceLineNo">866</span>   *                      HDFS data node number.<a name="line.866"></a>
-<span class="sourceLineNo">867</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.867"></a>
-<span class="sourceLineNo">868</span>   * @return The mini HBase cluster created.<a name="line.868"></a>
-<span class="sourceLineNo">869</span>   * @see #shutdownMiniCluster()<a name="line.869"></a>
-<span class="sourceLineNo">870</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.870"></a>
-<span class="sourceLineNo">871</span>   */<a name="line.871"></a>
-<span class="sourceLineNo">872</span>  @Deprecated<a name="line.872"></a>
-<span class="sourceLineNo">873</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts,<a name="line.873"></a>
-<span class="sourceLineNo">874</span>      boolean createRootDir) throws Exception {<a name="line.874"></a>
-<span class="sourceLineNo">875</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.875"></a>
-<span class="sourceLineNo">876</span>        .numMasters(numMasters).numRegionServers(numSlaves).createRootDir(createRootDir)<a name="line.876"></a>
-<span class="sourceLineNo">877</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts).build();<a name="line.877"></a>
-<span class="sourceLineNo">878</span>    return startMiniCluster(option);<a name="line.878"></a>
-<span class="sourceLineNo">879</span>  }<a name="line.879"></a>
-<span class="sourceLineNo">880</span><a name="line.880"></a>
-<span class="sourceLineNo">881</span>  /**<a name="line.881"></a>
-<span class="sourceLineNo">882</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.882"></a>
-<span class="sourceLineNo">883</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.883"></a>
-<span class="sourceLineNo">884</span>   * @param numMasters Master node number.<a name="line.884"></a>
-<span class="sourceLineNo">885</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.885"></a>
-<span class="sourceLineNo">886</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.886"></a>
-<span class="sourceLineNo">887</span>   *                      HDFS data node number.<a name="line.887"></a>
-<span class="sourceLineNo">888</span>   * @return The mini HBase cluster created.<a name="line.888"></a>
-<span class="sourceLineNo">889</span>   * @see #shutdownMiniCluster()<a name="line.889"></a>
-<span class="sourceLineNo">890</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.890"></a>
-<span class="sourceLineNo">891</span>   */<a name="line.891"></a>
-<span class="sourceLineNo">892</span>  @Deprecated<a name="line.892"></a>
-<span class="sourceLineNo">893</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts)<a name="line.893"></a>
-<span class="sourceLineNo">894</span>      throws Exception {<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.895"></a>
-<span class="sourceLineNo">896</span>        .numMasters(numMasters).numRegionServers(numSlaves)<a name="line.896"></a>
-<span class="sourceLineNo">897</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts).build();<a name="line.897"></a>
-<span class="sourceLineNo">898</span>    return startMiniCluster(option);<a name="line.898"></a>
-<span class="sourceLineNo">899</span>  }<a name="line.899"></a>
-<span class="sourceLineNo">900</span><a name="line.900"></a>
-<span class="sourceLineNo">901</span>  /**<a name="line.901"></a>
-<span class="sourceLineNo">902</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.902"></a>
-<span class="sourceLineNo">903</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.903"></a>
-<span class="sourceLineNo">904</span>   * @param numMasters Master node number.<a name="line.904"></a>
-<span class="sourceLineNo">905</span>   * @param numRegionServers Number of region servers.<a name="line.905"></a>
-<span class="sourceLineNo">906</span>   * @param numDataNodes Number of datanodes.<a name="line.906"></a>
-<span class="sourceLineNo">907</span>   * @return The mini HBase cluster created.<a name="line.907"></a>
-<span class="sourceLineNo">908</span>   * @see #shutdownMiniCluster()<a name="line.908"></a>
-<span class="sourceLineNo">909</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.909"></a>
-<span class="sourceLineNo">910</span>   */<a name="line.910"></a>
-<span class="sourceLineNo">911</span>  @Deprecated<a name="line.911"></a>
-<span class="sourceLineNo">912</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes)<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      throws Exception {<a name="line.913"></a>
-<span class="sourceLineNo">914</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.914"></a>
-<span class="sourceLineNo">915</span>        .numMasters(numMasters).numRegionServers(numRegionServers).numDataNodes(numDataNodes)<a name="line.915"></a>
-<span class="sourceLineNo">916</span>        .build();<a name="line.916"></a>
-<span class="sourceLineNo">917</span>    return startMiniCluster(option);<a name="line.917"></a>
-<span class="sourceLineNo">918</span>  }<a name="line.918"></a>
-<span class="sourceLineNo">919</span><a name="line.919"></a>
-<span class="sourceLineNo">920</span>  /**<a name="line.920"></a>
-<span class="sourceLineNo">921</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.921"></a>
-<span class="sourceLineNo">922</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.922"></a>
-<span class="sourceLineNo">923</span>   * @param numMasters Master node number.<a name="line.923"></a>
-<span class="sourceLineNo">924</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.924"></a>
-<span class="sourceLineNo">925</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.925"></a>
-<span class="sourceLineNo">926</span>   *                      HDFS data node number.<a name="line.926"></a>
-<span class="sourceLineNo">927</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.927"></a>
-<span class="sourceLineNo">928</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.928"></a>
-<span class="sourceLineNo">929</span>   * @return The mini HBase cluster created.<a name="line.929"></a>
-<span class="sourceLineNo">930</span>   * @see #shutdownMiniCluster()<a name="line.930"></a>
-<span class="sourceLineNo">931</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.931"></a>
-<span class="sourceLineNo">932</span>   */<a name="line.932"></a>
-<span class="sourceLineNo">933</span>  @Deprecated<a name="line.933"></a>
-<span class="sourceLineNo">934</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts,<a name="line.934"></a>
-<span class="sourceLineNo">935</span>      Class&lt;? extends HMaster&gt; masterClass,<a name="line.935"></a>
-<span class="sourceLineNo">936</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass)<a name="line.936"></a>
-<span class="sourceLineNo">937</span>      throws Exception {<a name="line.937"></a>
-<span class="sourceLineNo">938</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.938"></a>
-<span class="sourceLineNo">939</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.939"></a>
-<span class="sourceLineNo">940</span>        .numRegionServers(numSlaves).rsClass(rsClass)<a name="line.940"></a>
-<span class="sourceLineNo">941</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts)<a name="line.941"></a>
-<span class="sourceLineNo">942</span>        .build();<a name="line.942"></a>
-<span class="sourceLineNo">943</span>    return startMiniCluster(option);<a name="line.943"></a>
-<span class="sourceLineNo">944</span>  }<a name="line.944"></a>
-<span class="sourceLineNo">945</span><a name="line.945"></a>
-<span class="sourceLineNo">946</span>  /**<a name="line.946"></a>
-<span class="sourceLineNo">947</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.947"></a>
-<span class="sourceLineNo">948</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.948"></a>
-<span class="sourceLineNo">949</span>   * @param numMasters Master node number.<a name="line.949"></a>
-<span class="sourceLineNo">950</span>   * @param numRegionServers Number of region servers.<a name="line.950"></a>
-<span class="sourceLineNo">951</span>   * @param numDataNodes Number of datanodes.<a name="line.951"></a>
-<span class="sourceLineNo">952</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.952"></a>
-<span class="sourceLineNo">953</span>   *                      HDFS data node number.<a name="line.953"></a>
-<span class="sourceLineNo">954</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.954"></a>
-<span class="sourceLineNo">955</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.955"></a>
-<span class="sourceLineNo">956</span>   * @return The mini HBase cluster created.<a name="line.956"></a>
-<span class="sourceLineNo">957</span>   * @see #shutdownMiniCluster()<a name="line.957"></a>
-<span class="sourceLineNo">958</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.958"></a>
-<span class="sourceLineNo">959</span>   */<a name="line.959"></a>
-<span class="sourceLineNo">960</span>  @Deprecated<a name="line.960"></a>
-<span class="sourceLineNo">961</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes,<a name="line.961"></a>
-<span class="sourceLineNo">962</span>      String[] dataNodeHosts, Class&lt;? extends HMaster&gt; masterClass,<a name="line.962"></a>
-<span class="sourceLineNo">963</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass)<a name="line.963"></a>
-<span class="sourceLineNo">964</span>    throws Exception {<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.965"></a>
-<span class="sourceLineNo">966</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.966"></a>
-<span class="sourceLineNo">967</span>        .numRegionServers(numRegionServers).rsClass(rsClass)<a name="line.967"></a>
-<span class="sourceLineNo">968</span>        .numDataNodes(numDataNodes).dataNodeHosts(dataNodeHosts)<a name="line.968"></a>
-<span class="sourceLineNo">969</span>        .build();<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    return startMiniCluster(option);<a name="line.970"></a>
-<span class="sourceLineNo">971</span>  }<a name="line.971"></a>
-<span class="sourceLineNo">972</span><a name="line.972"></a>
-<span class="sourceLineNo">973</span>  /**<a name="line.973"></a>
-<span class="sourceLineNo">974</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.974"></a>
-<span class="sourceLineNo">975</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.975"></a>
-<span class="sourceLineNo">976</span>   * @param numMasters Master node number.<a name="line.976"></a>
-<span class="sourceLineNo">977</span>   * @param numRegionServers Number of region servers.<a name="line.977"></a>
-<span class="sourceLineNo">978</span>   * @param numDataNodes Number of datanodes.<a name="line.978"></a>
-<span class="sourceLineNo">979</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.979"></a>
-<span class="sourceLineNo">980</span>   *                      HDFS data node number.<a name="line.980"></a>
-<span class="sourceLineNo">981</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.981"></a>
-<span class="sourceLineNo">982</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.982"></a>
-<span class="sourceLineNo">983</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.983"></a>
-<span class="sourceLineNo">984</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.984"></a>
-<span class="sourceLineNo">985</span>   * @return The mini HBase cluster created.<a name="line.985"></a>
-<span class="sourceLineNo">986</span>   * @see #shutdownMiniCluster()<a name="line.986"></a>
-<span class="sourceLineNo">987</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.987"></a>
-<span class="sourceLineNo">988</span>   */<a name="line.988"></a>
-<span class="sourceLineNo">989</span>  @Deprecated<a name="line.989"></a>
-<span class="sourceLineNo">990</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes,<a name="line.990"></a>
-<span class="sourceLineNo">991</span>      String[] dataNodeHosts, Class&lt;? extends HMaster&gt; masterClass,<a name="line.991"></a>
-<span class="sourceLineNo">992</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass, boolean createRootDir,<a name="line.992"></a>
-<span class="sourceLineNo">993</span>      boolean createWALDir) throws Exception {<a name="line.993"></a>
-<span class="sourceLineNo">994</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.994"></a>
-<span class="sourceLineNo">995</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.995"></a>
-<span class="sourceLineNo">996</span>        .numRegionServers(numRegionServers).rsClass(rsClass)<a name="line.996"></a>
-<span class="sourceLineNo">997</span>        .numDataNodes(numDataNodes).dataNodeHosts(dataNodeHosts)<a name="line.997"></a>
-<span class="sourceLineNo">998</span>        .createRootDir(createRootDir).createWALDir(createWALDir)<a name="line.998"></a>
-<span class="sourceLineNo">999</span>        .build();<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>    return startMiniCluster(option);<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>  }<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span><a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>  /**<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>   * Start up a minicluster of hbase, dfs and zookeeper clusters with given slave node number.<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>   * @param numSlaves slave node number, for both HBase region server and HDFS data node.<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>   * @see #startMiniCluster(StartMiniClusterOption option)<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>   * @see #shutdownMiniDFSCluster()<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>   */<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>  public MiniHBaseCluster startMiniCluster(int numSlaves) throws Exception {<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).build();<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    return startMiniCluster(option);<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>  }<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span><a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>  /**<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>   * Start up a minicluster of hbase, dfs and zookeeper all using default options.<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>   * Option default value can be found in {@link StartMiniClusterOption.Builder}.<a name="line.1018"></a>
+<span class="sourceLineNo">716</span>  /**<a name="line.716"></a>
+<span class="sourceLineNo">717</span>   *  Check whether the tests should assume NEW_VERSION_BEHAVIOR when creating<a name="line.717"></a>
+<span class="sourceLineNo">718</span>   *  new column families. Default to false.<a name="line.718"></a>
+<span class="sourceLineNo">719</span>   */<a name="line.719"></a>
+<span class="sourceLineNo">720</span>  public boolean isNewVersionBehaviorEnabled(){<a name="line.720"></a>
+<span class="sourceLineNo">721</span>    final String propName = "hbase.tests.new.version.behavior";<a name="line.721"></a>
+<span class="sourceLineNo">722</span>    String v = System.getProperty(propName);<a name="line.722"></a>
+<span class="sourceLineNo">723</span>    if (v != null){<a name="line.723"></a>
+<span class="sourceLineNo">724</span>      return Boolean.parseBoolean(v);<a name="line.724"></a>
+<span class="sourceLineNo">725</span>    }<a name="line.725"></a>
+<span class="sourceLineNo">726</span>    return false;<a name="line.726"></a>
+<span class="sourceLineNo">727</span>  }<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>   *  Get the HBase setting for dfs.client.read.shortcircuit from the conf or a system property.<a name="line.730"></a>
+<span class="sourceLineNo">731</span>   *  This allows to specify this parameter on the command line.<a name="line.731"></a>
+<span class="sourceLineNo">732</span>   *   If not set, default is true.<a name="line.732"></a>
+<span class="sourceLineNo">733</span>   */<a name="line.733"></a>
+<span class="sourceLineNo">734</span>  public boolean isReadShortCircuitOn(){<a name="line.734"></a>
+<span class="sourceLineNo">735</span>    final String propName = "hbase.tests.use.shortcircuit.reads";<a name="line.735"></a>
+<span class="sourceLineNo">736</span>    String readOnProp = System.getProperty(propName);<a name="line.736"></a>
+<span class="sourceLineNo">737</span>    if (readOnProp != null){<a name="line.737"></a>
+<span class="sourceLineNo">738</span>      return  Boolean.parseBoolean(readOnProp);<a name="line.738"></a>
+<span class="sourceLineNo">739</span>    } else {<a name="line.739"></a>
+<span class="sourceLineNo">740</span>      return conf.getBoolean(propName, false);<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><a name="line.743"></a>
+<span class="sourceLineNo">744</span>  /** Enable the short circuit read, unless configured differently.<a name="line.744"></a>
+<span class="sourceLineNo">745</span>   * Set both HBase and HDFS settings, including skipping the hdfs checksum checks.<a name="line.745"></a>
+<span class="sourceLineNo">746</span>   */<a name="line.746"></a>
+<span class="sourceLineNo">747</span>  private void enableShortCircuit() {<a name="line.747"></a>
+<span class="sourceLineNo">748</span>    if (isReadShortCircuitOn()) {<a name="line.748"></a>
+<span class="sourceLineNo">749</span>      String curUser = System.getProperty("user.name");<a name="line.749"></a>
+<span class="sourceLineNo">750</span>      LOG.info("read short circuit is ON for user " + curUser);<a name="line.750"></a>
+<span class="sourceLineNo">751</span>      // read short circuit, for hdfs<a name="line.751"></a>
+<span class="sourceLineNo">752</span>      conf.set("dfs.block.local-path-access.user", curUser);<a name="line.752"></a>
+<span class="sourceLineNo">753</span>      // read short circuit, for hbase<a name="line.753"></a>
+<span class="sourceLineNo">754</span>      conf.setBoolean("dfs.client.read.shortcircuit", true);<a name="line.754"></a>
+<span class="sourceLineNo">755</span>      // Skip checking checksum, for the hdfs client and the datanode<a name="line.755"></a>
+<span class="sourceLineNo">756</span>      conf.setBoolean("dfs.client.read.shortcircuit.skip.checksum", true);<a name="line.756"></a>
+<span class="sourceLineNo">757</span>    } else {<a name="line.757"></a>
+<span class="sourceLineNo">758</span>      LOG.info("read short circuit is OFF");<a name="line.758"></a>
+<span class="sourceLineNo">759</span>    }<a name="line.759"></a>
+<span class="sourceLineNo">760</span>  }<a name="line.760"></a>
+<span class="sourceLineNo">761</span><a name="line.761"></a>
+<span class="sourceLineNo">762</span>  private String createDirAndSetProperty(final String relPath, String property) {<a name="line.762"></a>
+<span class="sourceLineNo">763</span>    String path = getDataTestDir(relPath).toString();<a name="line.763"></a>
+<span class="sourceLineNo">764</span>    System.setProperty(property, path);<a name="line.764"></a>
+<span class="sourceLineNo">765</span>    conf.set(property, path);<a name="line.765"></a>
+<span class="sourceLineNo">766</span>    new File(path).mkdirs();<a name="line.766"></a>
+<span class="sourceLineNo">767</span>    LOG.info("Setting " + property + " to " + path + " in system properties and HBase conf");<a name="line.767"></a>
+<span class="sourceLineNo">768</span>    return path;<a name="line.768"></a>
+<span class="sourceLineNo">769</span>  }<a name="line.769"></a>
+<span class="sourceLineNo">770</span><a name="line.770"></a>
+<span class="sourceLineNo">771</span>  /**<a name="line.771"></a>
+<span class="sourceLineNo">772</span>   * Shuts down instance created by call to {@link #startMiniDFSCluster(int)}<a name="line.772"></a>
+<span class="sourceLineNo">773</span>   * or does nothing.<a name="line.773"></a>
+<span class="sourceLineNo">774</span>   * @throws IOException<a name="line.774"></a>
+<span class="sourceLineNo">775</span>   */<a name="line.775"></a>
+<span class="sourceLineNo">776</span>  public void shutdownMiniDFSCluster() throws IOException {<a name="line.776"></a>
+<span class="sourceLineNo">777</span>    if (this.dfsCluster != null) {<a name="line.777"></a>
+<span class="sourceLineNo">778</span>      // The below throws an exception per dn, AsynchronousCloseException.<a name="line.778"></a>
+<span class="sourceLineNo">779</span>      this.dfsCluster.shutdown();<a name="line.779"></a>
+<span class="sourceLineNo">780</span>      dfsCluster = null;<a name="line.780"></a>
+<span class="sourceLineNo">781</span>      dataTestDirOnTestFS = null;<a name="line.781"></a>
+<span class="sourceLineNo">782</span>      FSUtils.setFsDefault(this.conf, new Path("file:///"));<a name="line.782"></a>
+<span class="sourceLineNo">783</span>    }<a name="line.783"></a>
+<span class="sourceLineNo">784</span>  }<a name="line.784"></a>
+<span class="sourceLineNo">785</span><a name="line.785"></a>
+<span class="sourceLineNo">786</span>  /**<a name="line.786"></a>
+<span class="sourceLineNo">787</span>   * Start up a minicluster of hbase, dfs, and zookeeper where WAL's walDir is created separately.<a name="line.787"></a>
+<span class="sourceLineNo">788</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.788"></a>
+<span class="sourceLineNo">789</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.789"></a>
+<span class="sourceLineNo">790</span>   * @return The mini HBase cluster created.<a name="line.790"></a>
+<span class="sourceLineNo">791</span>   * @see #shutdownMiniCluster()<a name="line.791"></a>
+<span class="sourceLineNo">792</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.792"></a>
+<span class="sourceLineNo">793</span>   */<a name="line.793"></a>
+<span class="sourceLineNo">794</span>  @Deprecated<a name="line.794"></a>
+<span class="sourceLineNo">795</span>  public MiniHBaseCluster startMiniCluster(boolean createWALDir) throws Exception {<a name="line.795"></a>
+<span class="sourceLineNo">796</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.796"></a>
+<span class="sourceLineNo">797</span>        .createWALDir(createWALDir).build();<a name="line.797"></a>
+<span class="sourceLineNo">798</span>    return startMiniCluster(option);<a name="line.798"></a>
+<span class="sourceLineNo">799</span>  }<a name="line.799"></a>
+<span class="sourceLineNo">800</span><a name="line.800"></a>
+<span class="sourceLineNo">801</span>  /**<a name="line.801"></a>
+<span class="sourceLineNo">802</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.802"></a>
+<span class="sourceLineNo">803</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.803"></a>
+<span class="sourceLineNo">804</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.804"></a>
+<span class="sourceLineNo">805</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.805"></a>
+<span class="sourceLineNo">806</span>   * @return The mini HBase cluster created.<a name="line.806"></a>
+<span class="sourceLineNo">807</span>   * @see #shutdownMiniCluster()<a name="line.807"></a>
+<span class="sourceLineNo">808</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.808"></a>
+<span class="sourceLineNo">809</span>   */<a name="line.809"></a>
+<span class="sourceLineNo">810</span>  @Deprecated<a name="line.810"></a>
+<span class="sourceLineNo">811</span>  public MiniHBaseCluster startMiniCluster(int numSlaves, boolean createRootDir)<a name="line.811"></a>
+<span class="sourceLineNo">812</span>  throws Exception {<a name="line.812"></a>
+<span class="sourceLineNo">813</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.813"></a>
+<span class="sourceLineNo">814</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).createRootDir(createRootDir).build();<a name="line.814"></a>
+<span class="sourceLineNo">815</span>    return startMiniCluster(option);<a name="line.815"></a>
+<span class="sourceLineNo">816</span>  }<a name="line.816"></a>
+<span class="sourceLineNo">817</span><a name="line.817"></a>
+<span class="sourceLineNo">818</span>  /**<a name="line.818"></a>
+<span class="sourceLineNo">819</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.819"></a>
+<span class="sourceLineNo">820</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.820"></a>
+<span class="sourceLineNo">821</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.821"></a>
+<span class="sourceLineNo">822</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.822"></a>
+<span class="sourceLineNo">823</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.823"></a>
+<span class="sourceLineNo">824</span>   * @return The mini HBase cluster created.<a name="line.824"></a>
+<span class="sourceLineNo">825</span>   * @see #shutdownMiniCluster()<a name="line.825"></a>
+<span class="sourceLineNo">826</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.826"></a>
+<span class="sourceLineNo">827</span>   */<a name="line.827"></a>
+<span class="sourceLineNo">828</span>  @Deprecated<a name="line.828"></a>
+<span class="sourceLineNo">829</span>  public MiniHBaseCluster startMiniCluster(int numSlaves, boolean createRootDir,<a name="line.829"></a>
+<span class="sourceLineNo">830</span>      boolean createWALDir) throws Exception {<a name="line.830"></a>
+<span class="sourceLineNo">831</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.831"></a>
+<span class="sourceLineNo">832</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).createRootDir(createRootDir)<a name="line.832"></a>
+<span class="sourceLineNo">833</span>        .createWALDir(createWALDir).build();<a name="line.833"></a>
+<span class="sourceLineNo">834</span>    return startMiniCluster(option);<a name="line.834"></a>
+<span class="sourceLineNo">835</span>  }<a name="line.835"></a>
+<span class="sourceLineNo">836</span><a name="line.836"></a>
+<span class="sourceLineNo">837</span>  /**<a name="line.837"></a>
+<span class="sourceLineNo">838</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.838"></a>
+<span class="sourceLineNo">839</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.839"></a>
+<span class="sourceLineNo">840</span>   * @param numMasters Master node number.<a name="line.840"></a>
+<span class="sourceLineNo">841</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.841"></a>
+<span class="sourceLineNo">842</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.842"></a>
+<span class="sourceLineNo">843</span>   * @return The mini HBase cluster created.<a name="line.843"></a>
+<span class="sourceLineNo">844</span>   * @see #shutdownMiniCluster()<a name="line.844"></a>
+<span class="sourceLineNo">845</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.845"></a>
+<span class="sourceLineNo">846</span>   */<a name="line.846"></a>
+<span class="sourceLineNo">847</span>  @Deprecated<a name="line.847"></a>
+<span class="sourceLineNo">848</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, boolean createRootDir)<a name="line.848"></a>
+<span class="sourceLineNo">849</span>    throws Exception {<a name="line.849"></a>
+<span class="sourceLineNo">850</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.850"></a>
+<span class="sourceLineNo">851</span>        .numMasters(numMasters).numRegionServers(numSlaves).createRootDir(createRootDir)<a name="line.851"></a>
+<span class="sourceLineNo">852</span>        .numDataNodes(numSlaves).build();<a name="line.852"></a>
+<span class="sourceLineNo">853</span>    return startMiniCluster(option);<a name="line.853"></a>
+<span class="sourceLineNo">854</span>  }<a name="line.854"></a>
+<span class="sourceLineNo">855</span><a name="line.855"></a>
+<span class="sourceLineNo">856</span>  /**<a name="line.856"></a>
+<span class="sourceLineNo">857</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.857"></a>
+<span class="sourceLineNo">858</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.858"></a>
+<span class="sourceLineNo">859</span>   * @param numMasters Master node number.<a name="line.859"></a>
+<span class="sourceLineNo">860</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.860"></a>
+<span class="sourceLineNo">861</span>   * @return The mini HBase cluster created.<a name="line.861"></a>
+<span class="sourceLineNo">862</span>   * @see #shutdownMiniCluster()<a name="line.862"></a>
+<span class="sourceLineNo">863</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.863"></a>
+<span class="sourceLineNo">864</span>   */<a name="line.864"></a>
+<span class="sourceLineNo">865</span>  @Deprecated<a name="line.865"></a>
+<span class="sourceLineNo">866</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves) throws Exception {<a name="line.866"></a>
+<span class="sourceLineNo">867</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.867"></a>
+<span class="sourceLineNo">868</span>        .numMasters(numMasters).numRegionServers(numSlaves).numDataNodes(numSlaves).build();<a name="line.868"></a>
+<span class="sourceLineNo">869</span>    return startMiniCluster(option);<a name="line.869"></a>
+<span class="sourceLineNo">870</span>  }<a name="line.870"></a>
+<span class="sourceLineNo">871</span><a name="line.871"></a>
+<span class="sourceLineNo">872</span>  /**<a name="line.872"></a>
+<span class="sourceLineNo">873</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.873"></a>
+<span class="sourceLineNo">874</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.874"></a>
+<span class="sourceLineNo">875</span>   * @param numMasters Master node number.<a name="line.875"></a>
+<span class="sourceLineNo">876</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.876"></a>
+<span class="sourceLineNo">877</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.877"></a>
+<span class="sourceLineNo">878</span>   *                      HDFS data node number.<a name="line.878"></a>
+<span class="sourceLineNo">879</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.879"></a>
+<span class="sourceLineNo">880</span>   * @return The mini HBase cluster created.<a name="line.880"></a>
+<span class="sourceLineNo">881</span>   * @see #shutdownMiniCluster()<a name="line.881"></a>
+<span class="sourceLineNo">882</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.882"></a>
+<span class="sourceLineNo">883</span>   */<a name="line.883"></a>
+<span class="sourceLineNo">884</span>  @Deprecated<a name="line.884"></a>
+<span class="sourceLineNo">885</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts,<a name="line.885"></a>
+<span class="sourceLineNo">886</span>      boolean createRootDir) throws Exception {<a name="line.886"></a>
+<span class="sourceLineNo">887</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.887"></a>
+<span class="sourceLineNo">888</span>        .numMasters(numMasters).numRegionServers(numSlaves).createRootDir(createRootDir)<a name="line.888"></a>
+<span class="sourceLineNo">889</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts).build();<a name="line.889"></a>
+<span class="sourceLineNo">890</span>    return startMiniCluster(option);<a name="line.890"></a>
+<span class="sourceLineNo">891</span>  }<a name="line.891"></a>
+<span class="sourceLineNo">892</span><a name="line.892"></a>
+<span class="sourceLineNo">893</span>  /**<a name="line.893"></a>
+<span class="sourceLineNo">894</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.894"></a>
+<span class="sourceLineNo">895</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.895"></a>
+<span class="sourceLineNo">896</span>   * @param numMasters Master node number.<a name="line.896"></a>
+<span class="sourceLineNo">897</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.897"></a>
+<span class="sourceLineNo">898</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.898"></a>
+<span class="sourceLineNo">899</span>   *                      HDFS data node number.<a name="line.899"></a>
+<span class="sourceLineNo">900</span>   * @return The mini HBase cluster created.<a name="line.900"></a>
+<span class="sourceLineNo">901</span>   * @see #shutdownMiniCluster()<a name="line.901"></a>
+<span class="sourceLineNo">902</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.902"></a>
+<span class="sourceLineNo">903</span>   */<a name="line.903"></a>
+<span class="sourceLineNo">904</span>  @Deprecated<a name="line.904"></a>
+<span class="sourceLineNo">905</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts)<a name="line.905"></a>
+<span class="sourceLineNo">906</span>      throws Exception {<a name="line.906"></a>
+<span class="sourceLineNo">907</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.907"></a>
+<span class="sourceLineNo">908</span>        .numMasters(numMasters).numRegionServers(numSlaves)<a name="line.908"></a>
+<span class="sourceLineNo">909</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts).build();<a name="line.909"></a>
+<span class="sourceLineNo">910</span>    return startMiniCluster(option);<a name="line.910"></a>
+<span class="sourceLineNo">911</span>  }<a name="line.911"></a>
+<span class="sourceLineNo">912</span><a name="line.912"></a>
+<span class="sourceLineNo">913</span>  /**<a name="line.913"></a>
+<span class="sourceLineNo">914</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.914"></a>
+<span class="sourceLineNo">915</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.915"></a>
+<span class="sourceLineNo">916</span>   * @param numMasters Master node number.<a name="line.916"></a>
+<span class="sourceLineNo">917</span>   * @param numRegionServers Number of region servers.<a name="line.917"></a>
+<span class="sourceLineNo">918</span>   * @param numDataNodes Number of datanodes.<a name="line.918"></a>
+<span class="sourceLineNo">919</span>   * @return The mini HBase cluster created.<a name="line.919"></a>
+<span class="sourceLineNo">920</span>   * @see #shutdownMiniCluster()<a name="line.920"></a>
+<span class="sourceLineNo">921</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.921"></a>
+<span class="sourceLineNo">922</span>   */<a name="line.922"></a>
+<span class="sourceLineNo">923</span>  @Deprecated<a name="line.923"></a>
+<span class="sourceLineNo">924</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes)<a name="line.924"></a>
+<span class="sourceLineNo">925</span>      throws Exception {<a name="line.925"></a>
+<span class="sourceLineNo">926</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.926"></a>
+<span class="sourceLineNo">927</span>        .numMasters(numMasters).numRegionServers(numRegionServers).numDataNodes(numDataNodes)<a name="line.927"></a>
+<span class="sourceLineNo">928</span>        .build();<a name="line.928"></a>
+<span class="sourceLineNo">929</span>    return startMiniCluster(option);<a name="line.929"></a>
+<span class="sourceLineNo">930</span>  }<a name="line.930"></a>
+<span class="sourceLineNo">931</span><a name="line.931"></a>
+<span class="sourceLineNo">932</span>  /**<a name="line.932"></a>
+<span class="sourceLineNo">933</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.933"></a>
+<span class="sourceLineNo">934</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.934"></a>
+<span class="sourceLineNo">935</span>   * @param numMasters Master node number.<a name="line.935"></a>
+<span class="sourceLineNo">936</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.936"></a>
+<span class="sourceLineNo">937</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.937"></a>
+<span class="sourceLineNo">938</span>   *                      HDFS data node number.<a name="line.938"></a>
+<span class="sourceLineNo">939</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.939"></a>
+<span class="sourceLineNo">940</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.940"></a>
+<span class="sourceLineNo">941</span>   * @return The mini HBase cluster created.<a name="line.941"></a>
+<span class="sourceLineNo">942</span>   * @see #shutdownMiniCluster()<a name="line.942"></a>
+<span class="sourceLineNo">943</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.943"></a>
+<span class="sourceLineNo">944</span>   */<a name="line.944"></a>
+<span class="sourceLineNo">945</span>  @Deprecated<a name="line.945"></a>
+<span class="sourceLineNo">946</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts,<a name="line.946"></a>
+<span class="sourceLineNo">947</span>      Class&lt;? extends HMaster&gt; masterClass,<a name="line.947"></a>
+<span class="sourceLineNo">948</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass)<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      throws Exception {<a name="line.949"></a>
+<span class="sourceLineNo">950</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.951"></a>
+<span class="sourceLineNo">952</span>        .numRegionServers(numSlaves).rsClass(rsClass)<a name="line.952"></a>
+<span class="sourceLineNo">953</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts)<a name="line.953"></a>
+<span class="sourceLineNo">954</span>        .build();<a name="line.954"></a>
+<span class="sourceLineNo">955</span>    return startMiniCluster(option);<a name="line.955"></a>
+<span class="sourceLineNo">956</span>  }<a name="line.956"></a>
+<span class="sourceLineNo">957</span><a name="line.957"></a>
+<span class="sourceLineNo">958</span>  /**<a name="line.958"></a>
+<span class="sourceLineNo">959</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.959"></a>
+<span class="sourceLineNo">960</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.960"></a>
+<span class="sourceLineNo">961</span>   * @param numMasters Master node number.<a name="line.961"></a>
+<span class="sourceLineNo">962</span>   * @param numRegionServers Number of region servers.<a name="line.962"></a>
+<span class="sourceLineNo">963</span>   * @param numDataNodes Number of datanodes.<a name="line.963"></a>
+<span class="sourceLineNo">964</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.964"></a>
+<span class="sourceLineNo">965</span>   *                      HDFS data node number.<a name="line.965"></a>
+<span class="sourceLineNo">966</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.966"></a>
+<span class="sourceLineNo">967</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.967"></a>
+<span class="sourceLineNo">968</span>   * @return The mini HBase cluster created.<a name="line.968"></a>
+<span class="sourceLineNo">969</span>   * @see #shutdownMiniCluster()<a name="line.969"></a>
+<span class="sourceLineNo">970</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.970"></a>
+<span class="sourceLineNo">971</span>   */<a name="line.971"></a>
+<span class="sourceLineNo">972</span>  @Deprecated<a name="line.972"></a>
+<span class="sourceLineNo">973</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes,<a name="line.973"></a>
+<span class="sourceLineNo">974</span>      String[] dataNodeHosts, Class&lt;? extends HMaster&gt; masterClass,<a name="line.974"></a>
+<span class="sourceLineNo">975</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass)<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    throws Exception {<a name="line.976"></a>
+<span class="sourceLineNo">977</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.977"></a>
+<span class="sourceLineNo">978</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.978"></a>
+<span class="sourceLineNo">979</span>        .numRegionServers(numRegionServers).rsClass(rsClass)<a name="line.979"></a>
+<span class="sourceLineNo">980</span>        .numDataNodes(numDataNodes).dataNodeHosts(dataNodeHosts)<a name="line.980"></a>
+<span class="sourceLineNo">981</span>        .build();<a name="line.981"></a>
+<span class="sourceLineNo">982</span>    return startMiniCluster(option);<a name="line.982"></a>
+<span class="sourceLineNo">983</span>  }<a name="line.983"></a>
+<span class="sourceLineNo">984</span><a name="line.984"></a>
+<span class="sourceLineNo">985</span>  /**<a name="line.985"></a>
+<span class="sourceLineNo">986</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.986"></a>
+<span class="sourceLineNo">987</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.987"></a>
+<span class="sourceLineNo">988</span>   * @param numMasters Master node number.<a name="line.988"></a>
+<span class="sourceLineNo">989</span>   * @param numRegionServers Number of region servers.<a name="line.989"></a>
+<span class="sourceLineNo">990</span>   * @param numDataNodes Number of datanodes.<a name="line.990"></a>
+<span class="sourceLineNo">991</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.991"></a>
+<span class="sourceLineNo">992</span>   *                      HDFS data node number.<a name="line.992"></a>
+<span class="sourceLineNo">993</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.993"></a>
+<span class="sourceLineNo">994</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.994"></a>
+<span class="sourceLineNo">995</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.995"></a>
+<span class="sourceLineNo">996</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.996"></a>
+<span class="sourceLineNo">997</span>   * @return The mini HBase cluster created.<a name="line.997"></a>
+<span class="sourceLineNo">998</span>   * @see #shutdownMiniCluster()<a name="line.998"></a>
+<span class="sourceLineNo">999</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.999"></a>
+<span class="sourceLineNo">1000</span>   */<a name="line.1000"></a>
+<span class="sourceLineNo">1001</span>  @Deprecated<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes,<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span>      String[] dataNodeHosts, Class&lt;? extends HMaster&gt; masterClass,<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass, boolean createRootDir,<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>      boolean createWALDir) throws Exception {<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>        .numRegionServers(numRegionServers).rsClass(rsClass)<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>        .numDataNodes(numDataNodes).dataNodeHosts(dataNodeHosts)<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>        .createRootDir(createRootDir).createWALDir(createWALDir)<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>        .build();<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>    return startMiniCluster(option);<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span>  }<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span><a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>  /**<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>   * Start up a minicluster of hbase, dfs and zookeeper clusters with given slave node number.<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>   * @param numSlaves slave node number, for both HBase region server and HDFS data node.<a name="line.1018"></a>
 <span class="sourceLineNo">1019</span>   * @see #startMiniCluster(StartMiniClusterOption option)<a name="line.1019"></a>
 <span class="sourceLineNo">1020</span>   * @see #shutdownMiniDFSCluster()<a name="line.1020"></a>
 <span class="sourceLineNo">1021</span>   */<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>  public MiniHBaseCluster startMiniCluster() throws Exception {<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>    return startMiniCluster(StartMiniClusterOption.builder().build());<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>  }<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>   * Start up a mini cluster of hbase, optionally dfs and zookeeper if needed.<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>   * It modifies Configuration.  It homes the cluster data directory under a random<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>   * subdirectory in a directory under System property test.build.data, to be cleaned up on exit.<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>   * @see #shutdownMiniDFSCluster()<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>   */<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>  public MiniHBaseCluster startMiniCluster(StartMiniClusterOption option) throws Exception {<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>    LOG.info("Starting up minicluster with option: {}", option);<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span><a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>    // If we already put up a cluster, fail.<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>    if (miniClusterRunning) {<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>      throw new IllegalStateException("A mini-cluster is already running");<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>    }<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>    miniClusterRunning = true;<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span><a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>    setupClusterTestDir();<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>    System.setProperty(TEST_DIRECTORY_KEY, this.clusterTestDir.getPath());<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span><a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>    // Bring up mini dfs cluster. This spews a bunch of warnings about missing<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>    // scheme. Complaints are 'Scheme is undefined for build/test/data/dfs/name1'.<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>    if (dfsCluster == null) {<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>      LOG.info("STARTING DFS");<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>      dfsCluster = startMiniDFSCluster(option.getNumDataNodes(), option.getDataNodeHosts());<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>    } else {<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>      LOG.info("NOT STARTING DFS");<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>    }<a name="line.1051"></a>
+<span class="sourceLineNo">1022</span>  public MiniHBaseCluster startMiniCluster(int numSlaves) throws Exception {<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).build();<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>    return startMiniCluster(option);<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>  }<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span><a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>  /**<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>   * Start up a minicluster of hbase, dfs and zookeeper all using default options.<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>   * Option default value can be found in {@link StartMiniClusterOption.Builder}.<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span>   * @see #startMiniCluster(StartMiniClusterOption option)<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>   * @see #shutdownMiniDFSCluster()<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>   */<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>  public MiniHBaseCluster startMiniCluster() throws Exception {<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>    return startMiniCluster(StartMiniClusterOption.builder().build());<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>  }<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span><a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>  /**<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>   * Start up a mini cluster of hbase, optionally dfs and zookeeper if needed.<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>   * It modifies Configuration.  It homes the cluster data directory under a random<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>   * subdirectory in a directory under System property test.build.data, to be cleaned up on exit.<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>   * @see #shutdownMiniDFSCluster()<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>   */<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>  public MiniHBaseCluster startMiniCluster(StartMiniClusterOption option) throws Exception {<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>    LOG.info("Starting up minicluster with option: {}", option);<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span><a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>    // If we already put up a cluster, fail.<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>    if (miniClusterRunning) {<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>      throw new IllegalStateException("A mini-cluster is already running");<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>    }<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>    miniClusterRunning = true;<a name="line.1051"></a>
 <span class="sourceLineNo">1052</span><a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>    // Start up a zk cluster.<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>    if (getZkCluster() == null) {<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>      startMiniZKCluster(option.getNumZkServers());<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>    }<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span><a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>    // Start the MiniHBaseCluster<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>    return startMiniHBaseCluster(option);<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>  }<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span><a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>  /**<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>   * Starts up mini hbase cluster.<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>   * Usually you won't want this.  You'll usually want {@link #startMiniCluster()}.<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>   * This is useful when doing stepped startup of clusters.<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>   * @return Reference to the hbase mini hbase cluster.<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>   * @see #startMiniCluster(StartMiniClusterOption)<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>   * @see #shutdownMiniHBaseCluster()<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>   */<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>  public MiniHBaseCluster startMiniHBaseCluster(StartMiniClusterOption option)<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>      throws IOException, InterruptedException {<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>    // Now do the mini hbase cluster.  Set the hbase.rootdir in config.<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>    createRootDir(option.isCreateRootDir());<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>    if (option.isCreateWALDir()) {<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>      createWALRootDir();<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span>    }<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>    // Set the hbase.fs.tmp.dir config to make sure that we have some default value. This is<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>    // for tests that do not read hbase-defaults.xml<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>    setHBaseFsTmpDir();<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span><a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>    // These settings will make the server waits until this exact number of<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>    // regions servers are connected.<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>    if (conf.getInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, -1) == -1) {<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>      conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, option.getNumRegionServers());<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>    }<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>    if (conf.getInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, -1) == -1) {<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>      conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, option.getNumRegionServers());<a name="line.1087"></a>
+<span class="sourceLineNo">1053</span>    setupClusterTestDir();<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>    System.setProperty(TEST_DIRECTORY_KEY, this.clusterTestDir.getPath());<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span><a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>    // Bring up mini dfs cluster. This spews a bunch of warnings about missing<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>    // scheme. Complaints are 'Scheme is undefined for build/test/data/dfs/name1'.<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>    if (dfsCluster == null) {<a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>      LOG.info("STARTING DFS");<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>      dfsCluster = startMiniDFSCluster(option.getNumDataNodes(), option.getDataNodeHosts());<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>    } else {<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>      LOG.info("NOT STARTING DFS");<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>    }<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span><a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>    // Start up a zk cluster.<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>    if (getZkCluster() == null) {<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>      startMiniZKCluster(option.getNumZkServers());<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>    }<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span><a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>    // Start the MiniHBaseCluster<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>    return startMiniHBaseCluster(option);<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>  }<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span><a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>  /**<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>   * Starts up mini hbase cluster.<a name="line.1075"></a>
+<span class="sourceLineNo">1076</span>   * Usually you won't want this.  You'll usually want {@link #startMiniCluster()}.<a name="line.1076"></a>
+<span class="sourceLineNo">1077</span>   * This is useful when doing stepped startup of clusters.<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>   * @return Reference to the hbase mini hbase cluster.<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>   * @see #startMiniCluster(StartMiniClusterOption)<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span>   * @see #shutdownMiniHBaseCluster()<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>   */<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>  public MiniHBaseCluster startMiniHBaseCluster(StartMiniClusterOption option)<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>      throws IOException, InterruptedException {<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>    // Now do the mini hbase cluster.  Set the hbase.rootdir in config.<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>    createRootDir(option.isCreateRootDir());<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>    if (option.isCreateWALDir()) {<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>      createWALRootDir();<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>    Configuration c = new Configuration(this.conf);<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>    TraceUtil.initTracer(c);<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span>    this.hbaseCluster =<a name="line.1092"></a>
-<span class="sourceLineNo">1093</span>        new MiniHBaseCluster(c, option.getNumMasters(), option.getNumRegionServers(),<a name="line.1093"></a>
-<span class="sourceLineNo">1094</span>            option.getRsPorts(), option.getMasterClass(), option.getRsClass());<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>    // Don't leave here till we've done a successful scan of the hbase:meta<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>    Table t = getConnection().getTable(TableName.META_TABLE_NAME);<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    ResultScanner s = t.getScanner(new Scan());<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>    while (s.next() != null) {<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>      continue;<a name="line.1099"></a>
+<span class="sourceLineNo">1089</span>    // Set the hbase.fs.tmp.dir config to make sure that we have some default value. This is<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>    // for tests that do not read hbase-defaults.xml<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>    setHBaseFsTmpDir();<a name="line.1091"></a>
+<span class="sourceLineNo">1092</span><a name="line.1092"></a>
+<span class="sourceLineNo">1093</span>    // These settings will make the server waits until this exact number of<a name="line.1093"></a>
+<span class="sourceLineNo">1094</span>    // regions servers are connected.<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>    if (conf.getInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, -1) == -1) {<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>      conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, option.getNumRegionServers());<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>    }<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span>    if (conf.getInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, -1) == -1) {<a name="line.1098"></a>
+<span class="sourceLineNo">1099</span>      conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, option.getNumRegionServers());<a name="line.1099"></a>
 <span class="sourceLineNo">1100</span>    }<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>    s.close();<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>    t.close();<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span><a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>    getAdmin(); // create immediately the hbaseAdmin<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>    LOG.info("Minicluster is up; activeMaster={}", getHBaseCluster().getMaster());<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span><a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>    return (MiniHBaseCluster) hbaseCluster;<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>   * Starts up mini hbase cluster using default options.<a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>   * Default options can be found in {@link StartMiniClusterOption.Builder}.<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>   * @see #startMiniHBaseCluster(StartMiniClusterOption)<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>   * @see #shutdownMiniHBaseCluster()<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>   */<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>  public MiniHBaseCluster startMiniHBaseCluster() throws IOException, InterruptedException {<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>    return startMiniHBaseCluster(StartMiniClusterOption.builder().build());<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>  }<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span><a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>  /**<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span>   * Starts up mini hbase cluster.<a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>   * Usually you won't want this.  You'll usually want {@link #startMiniCluster()}.<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>   * @param numMasters Master node number.<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>   * @param numRegionServers Number of region servers.<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>   * @return The mini HBase cluster created.<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>   * @see #shutdownMiniHBaseCluster()<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>   * @deprecated Use {@link #startMiniHBaseCluster(StartMiniClusterOption)} instead.<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span>   */<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>  @Deprecated<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>  public MiniHBaseCluster startMiniHBaseCluster(int numMasters, int numRegionServers)<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>      throws IOException, InterruptedException {<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>        .numMasters(numMasters).numRegionServers(numRegionServers).build();<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>    return startMiniHBaseCluster(option);<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>  }<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span><a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>  /**<a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>   * Starts up mini hbase cluster.<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>   * Usually you won't want this.  You'll usually want {@link #startMiniCluster()}.<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>   * @param numMasters Master node number.<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>   * @param numRegionServers Number of region servers.<a name="line.1143"></a>
-<span class="sourceLineNo">1144</span>   * @param rsPorts Ports that RegionServer should use.<a name="line.1144"></a>
-<span class="sourceLineNo">1145</span>   * @return The mini HBase cluster created.<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>   * @see #shutdownMiniHBaseCluster()<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>   * @deprecated Use {@link #startMiniHBaseCluster(StartMiniClusterOption)} instead.<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>   */<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span>  @Deprecated<a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>  public MiniHBaseCluster startMiniHBaseCluster(int numMasters, int numRegionServers,<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>      List&lt;Integer&gt; rsPorts) throws IOException, InterruptedException {<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span>        .numMasters(numMasters).numRegionServers(numRegionServers).rsPorts(rsPorts).build();<a name="line.1153"></a>
-<span class="sourceLineNo">1154</span>    return startMiniHBaseCluster(option);<a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>  }<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span><a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>  /**<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>   * Starts up mini hbase cluster.<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>   * Usually you won't want this.  You'll usually want {@link #startMiniCluster()}.<a name="li

<TRUNCATED>

[23/29] hbase-site git commit: Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/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 13b467d..3a6b771 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html
@@ -411,769 +411,775 @@
 <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><a name="line.405"></a>
-<span class="sourceLineNo">406</span>  protected void resetKVHeap(List&lt;? extends KeyValueScanner&gt; scanners,<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      CellComparator comparator) throws IOException {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    // Combine all seeked scanners with a heap<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    heap = new KeyValueHeap(scanners, comparator);<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  }<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>  /**<a name="line.412"></a>
-<span class="sourceLineNo">413</span>   * Filters the given list of scanners using Bloom filter, time range, and TTL.<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * &lt;p&gt;<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * Will be overridden by testcase so declared as protected.<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   */<a name="line.416"></a>
-<span class="sourceLineNo">417</span>  @VisibleForTesting<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  protected List&lt;KeyValueScanner&gt; selectScannersFrom(HStore store,<a name="line.418"></a>
-<span class="sourceLineNo">419</span>      List&lt;? extends KeyValueScanner&gt; allScanners) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    boolean memOnly;<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    boolean filesOnly;<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    if (scan instanceof InternalScan) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>      InternalScan iscan = (InternalScan) scan;<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      memOnly = iscan.isCheckOnlyMemStore();<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      filesOnly = iscan.isCheckOnlyStoreFiles();<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    } else {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>      memOnly = false;<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      filesOnly = false;<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    }<a name="line.429"></a>
-<span class="sourceLineNo">430</span><a name="line.430"></a>
-<span class="sourceLineNo">431</span>    List&lt;KeyValueScanner&gt; scanners = new ArrayList&lt;&gt;(allScanners.size());<a name="line.431"></a>
-<span class="sourceLineNo">432</span><a name="line.432"></a>
-<span class="sourceLineNo">433</span>    // We can only exclude store files based on TTL if minVersions is set to 0.<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    // Otherwise, we might have to return KVs that have technically expired.<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    long expiredTimestampCutoff = minVersions == 0 ? oldestUnexpiredTS : Long.MIN_VALUE;<a name="line.435"></a>
+<span class="sourceLineNo">406</span>  @VisibleForTesting<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  protected void resetKVHeap(List&lt;? extends KeyValueScanner&gt; scanners,<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      CellComparator comparator) throws IOException {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    // Combine all seeked scanners with a heap<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    heap = newKVHeap(scanners, comparator);<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>  protected KeyValueHeap newKVHeap(List&lt;? extends KeyValueScanner&gt; scanners,<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      CellComparator comparator) throws IOException {<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    return new KeyValueHeap(scanners, comparator);<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>  /**<a name="line.418"></a>
+<span class="sourceLineNo">419</span>   * Filters the given list of scanners using Bloom filter, time range, and TTL.<a name="line.419"></a>
+<span class="sourceLineNo">420</span>   * &lt;p&gt;<a name="line.420"></a>
+<span class="sourceLineNo">421</span>   * Will be overridden by testcase so declared as protected.<a name="line.421"></a>
+<span class="sourceLineNo">422</span>   */<a name="line.422"></a>
+<span class="sourceLineNo">423</span>  @VisibleForTesting<a name="line.423"></a>
+<span class="sourceLineNo">424</span>  protected List&lt;KeyValueScanner&gt; selectScannersFrom(HStore store,<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      List&lt;? extends KeyValueScanner&gt; allScanners) {<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    boolean memOnly;<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    boolean filesOnly;<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    if (scan instanceof InternalScan) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>      InternalScan iscan = (InternalScan) scan;<a name="line.429"></a>
+<span class="sourceLineNo">430</span>      memOnly = iscan.isCheckOnlyMemStore();<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      filesOnly = iscan.isCheckOnlyStoreFiles();<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    } else {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>      memOnly = false;<a name="line.433"></a>
+<span class="sourceLineNo">434</span>      filesOnly = false;<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>    // include only those scan files which pass all filters<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    for (KeyValueScanner kvs : allScanners) {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      boolean isFile = kvs.isFileScanner();<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      if ((!isFile &amp;&amp; filesOnly) || (isFile &amp;&amp; memOnly)) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>        continue;<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>      if (kvs.shouldUseScanner(scan, store, expiredTimestampCutoff)) {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>        scanners.add(kvs);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      } else {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        kvs.close();<a name="line.447"></a>
+<span class="sourceLineNo">437</span>    List&lt;KeyValueScanner&gt; scanners = new ArrayList&lt;&gt;(allScanners.size());<a name="line.437"></a>
+<span class="sourceLineNo">438</span><a name="line.438"></a>
+<span class="sourceLineNo">439</span>    // We can only exclude store files based on TTL if minVersions is set to 0.<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    // Otherwise, we might have to return KVs that have technically expired.<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    long expiredTimestampCutoff = minVersions == 0 ? oldestUnexpiredTS : Long.MIN_VALUE;<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>    // include only those scan files which pass all filters<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    for (KeyValueScanner kvs : allScanners) {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      boolean isFile = kvs.isFileScanner();<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      if ((!isFile &amp;&amp; filesOnly) || (isFile &amp;&amp; memOnly)) {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>        continue;<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>    return scanners;<a name="line.450"></a>
-<span class="sourceLineNo">451</span>  }<a name="line.451"></a>
-<span class="sourceLineNo">452</span><a name="line.452"></a>
-<span class="sourceLineNo">453</span>  @Override<a name="line.453"></a>
-<span class="sourceLineNo">454</span>  public Cell peek() {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    return heap != null ? heap.peek() : null;<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>  @Override<a name="line.458"></a>
-<span class="sourceLineNo">459</span>  public KeyValue next() {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    // throw runtime exception perhaps?<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    throw new RuntimeException("Never call StoreScanner.next()");<a name="line.461"></a>
+<span class="sourceLineNo">449</span><a name="line.449"></a>
+<span class="sourceLineNo">450</span>      if (kvs.shouldUseScanner(scan, store, expiredTimestampCutoff)) {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>        scanners.add(kvs);<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      } else {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        kvs.close();<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>    return scanners;<a name="line.456"></a>
+<span class="sourceLineNo">457</span>  }<a name="line.457"></a>
+<span class="sourceLineNo">458</span><a name="line.458"></a>
+<span class="sourceLineNo">459</span>  @Override<a name="line.459"></a>
+<span class="sourceLineNo">460</span>  public Cell peek() {<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    return heap != null ? heap.peek() : null;<a name="line.461"></a>
 <span class="sourceLineNo">462</span>  }<a name="line.462"></a>
 <span class="sourceLineNo">463</span><a name="line.463"></a>
 <span class="sourceLineNo">464</span>  @Override<a name="line.464"></a>
-<span class="sourceLineNo">465</span>  public void close() {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    close(true);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>  }<a name="line.467"></a>
-<span class="sourceLineNo">468</span><a name="line.468"></a>
-<span class="sourceLineNo">469</span>  private void close(boolean withDelayedScannersClose) {<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    if (this.closing) {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      return;<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    if (withDelayedScannersClose) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      this.closing = true;<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    }<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    // For mob compaction, we do not have a store.<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    if (this.store != null) {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      this.store.deleteChangedReaderObserver(this);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    }<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    if (withDelayedScannersClose) {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      clearAndClose(scannersForDelayedClose);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      clearAndClose(memStoreScannersAfterFlush);<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      clearAndClose(flushedstoreFileScanners);<a name="line.483"></a>
-<span class="sourceLineNo">484</span>      if (this.heap != null) {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>        this.heap.close();<a name="line.485"></a>
-<span class="sourceLineNo">486</span>        this.currentScanners.clear();<a name="line.486"></a>
-<span class="sourceLineNo">487</span>        this.heap = null; // CLOSED!<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      }<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    } else {<a name="line.489"></a>
+<span class="sourceLineNo">465</span>  public KeyValue next() {<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    // throw runtime exception perhaps?<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    throw new RuntimeException("Never call StoreScanner.next()");<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 void close() {<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    close(true);<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>  private void close(boolean withDelayedScannersClose) {<a name="line.475"></a>
+<span class="sourceLineNo">476</span>    if (this.closing) {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>      return;<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    }<a name="line.478"></a>
+<span class="sourceLineNo">479</span>    if (withDelayedScannersClose) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      this.closing = true;<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    }<a name="line.481"></a>
+<span class="sourceLineNo">482</span>    // For mob compaction, we do not have a store.<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    if (this.store != null) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      this.store.deleteChangedReaderObserver(this);<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    }<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    if (withDelayedScannersClose) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      clearAndClose(scannersForDelayedClose);<a name="line.487"></a>
+<span class="sourceLineNo">488</span>      clearAndClose(memStoreScannersAfterFlush);<a name="line.488"></a>
+<span class="sourceLineNo">489</span>      clearAndClose(flushedstoreFileScanners);<a name="line.489"></a>
 <span class="sourceLineNo">490</span>      if (this.heap != null) {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>        this.scannersForDelayedClose.add(this.heap);<a name="line.491"></a>
+<span class="sourceLineNo">491</span>        this.heap.close();<a name="line.491"></a>
 <span class="sourceLineNo">492</span>        this.currentScanners.clear();<a name="line.492"></a>
-<span class="sourceLineNo">493</span>        this.heap = null;<a name="line.493"></a>
+<span class="sourceLineNo">493</span>        this.heap = null; // CLOSED!<a name="line.493"></a>
 <span class="sourceLineNo">494</span>      }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    }<a name="line.495"></a>
-<span class="sourceLineNo">496</span>  }<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>  @Override<a name="line.498"></a>
-<span class="sourceLineNo">499</span>  public boolean seek(Cell key) throws IOException {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    if (checkFlushed()) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      reopenAfterFlush();<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    }<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    return this.heap.seek(key);<a name="line.503"></a>
-<span class="sourceLineNo">504</span>  }<a name="line.504"></a>
-<span class="sourceLineNo">505</span><a name="line.505"></a>
-<span class="sourceLineNo">506</span>  /**<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * Get the next row of values from this Store.<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   * @param outResult<a name="line.508"></a>
-<span class="sourceLineNo">509</span>   * @param scannerContext<a name="line.509"></a>
-<span class="sourceLineNo">510</span>   * @return true if there are more rows, false if scanner is done<a name="line.510"></a>
-<span class="sourceLineNo">511</span>   */<a name="line.511"></a>
-<span class="sourceLineNo">512</span>  @Override<a name="line.512"></a>
-<span class="sourceLineNo">513</span>  public boolean next(List&lt;Cell&gt; outResult, ScannerContext scannerContext) throws IOException {<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    if (scannerContext == null) {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      throw new IllegalArgumentException("Scanner context cannot be null");<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    }<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    if (checkFlushed() &amp;&amp; reopenAfterFlush()) {<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      return scannerContext.setScannerState(NextState.MORE_VALUES).hasMoreValues();<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>    // if the heap was left null, then the scanners had previously run out anyways, close and<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    // return.<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    if (this.heap == null) {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      // By this time partial close should happened because already heap is null<a name="line.524"></a>
-<span class="sourceLineNo">525</span>      close(false);// Do all cleanup except heap.close()<a name="line.525"></a>
-<span class="sourceLineNo">526</span>      return scannerContext.setScannerState(NextState.NO_MORE_VALUES).hasMoreValues();<a name="line.526"></a>
-<span class="sourceLineNo">527</span>    }<a name="line.527"></a>
-<span class="sourceLineNo">528</span><a name="line.528"></a>
-<span class="sourceLineNo">529</span>    Cell cell = this.heap.peek();<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    if (cell == null) {<a name="line.530"></a>
+<span class="sourceLineNo">495</span>    } else {<a name="line.495"></a>
+<span class="sourceLineNo">496</span>      if (this.heap != null) {<a name="line.496"></a>
+<span class="sourceLineNo">497</span>        this.scannersForDelayedClose.add(this.heap);<a name="line.497"></a>
+<span class="sourceLineNo">498</span>        this.currentScanners.clear();<a name="line.498"></a>
+<span class="sourceLineNo">499</span>        this.heap = null;<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      }<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    }<a name="line.501"></a>
+<span class="sourceLineNo">502</span>  }<a name="line.502"></a>
+<span class="sourceLineNo">503</span><a name="line.503"></a>
+<span class="sourceLineNo">504</span>  @Override<a name="line.504"></a>
+<span class="sourceLineNo">505</span>  public boolean seek(Cell key) throws IOException {<a name="line.505"></a>
+<span class="sourceLineNo">506</span>    if (checkFlushed()) {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>      reopenAfterFlush();<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    }<a name="line.508"></a>
+<span class="sourceLineNo">509</span>    return this.heap.seek(key);<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>   * Get the next row of values from this Store.<a name="line.513"></a>
+<span class="sourceLineNo">514</span>   * @param outResult<a name="line.514"></a>
+<span class="sourceLineNo">515</span>   * @param scannerContext<a name="line.515"></a>
+<span class="sourceLineNo">516</span>   * @return true if there are more rows, false if scanner is done<a name="line.516"></a>
+<span class="sourceLineNo">517</span>   */<a name="line.517"></a>
+<span class="sourceLineNo">518</span>  @Override<a name="line.518"></a>
+<span class="sourceLineNo">519</span>  public boolean next(List&lt;Cell&gt; outResult, ScannerContext scannerContext) throws IOException {<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    if (scannerContext == null) {<a name="line.520"></a>
+<span class="sourceLineNo">521</span>      throw new IllegalArgumentException("Scanner context cannot be null");<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    }<a name="line.522"></a>
+<span class="sourceLineNo">523</span>    if (checkFlushed() &amp;&amp; reopenAfterFlush()) {<a name="line.523"></a>
+<span class="sourceLineNo">524</span>      return scannerContext.setScannerState(NextState.MORE_VALUES).hasMoreValues();<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    }<a name="line.525"></a>
+<span class="sourceLineNo">526</span><a name="line.526"></a>
+<span class="sourceLineNo">527</span>    // if the heap was left null, then the scanners had previously run out anyways, close and<a name="line.527"></a>
+<span class="sourceLineNo">528</span>    // return.<a name="line.528"></a>
+<span class="sourceLineNo">529</span>    if (this.heap == null) {<a name="line.529"></a>
+<span class="sourceLineNo">530</span>      // By this time partial close should happened because already heap is null<a name="line.530"></a>
 <span class="sourceLineNo">531</span>      close(false);// Do all cleanup except heap.close()<a name="line.531"></a>
 <span class="sourceLineNo">532</span>      return scannerContext.setScannerState(NextState.NO_MORE_VALUES).hasMoreValues();<a name="line.532"></a>
 <span class="sourceLineNo">533</span>    }<a name="line.533"></a>
 <span class="sourceLineNo">534</span><a name="line.534"></a>
-<span class="sourceLineNo">535</span>    // only call setRow if the row changes; avoids confusing the query matcher<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    // if scanning intra-row<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>    // If no limits exists in the scope LimitScope.Between_Cells then we are sure we are changing<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    // rows. Else it is possible we are still traversing the same row so we must perform the row<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    // comparison.<a name="line.540"></a>
-<span class="sourceLineNo">541</span>    if (!scannerContext.hasAnyLimit(LimitScope.BETWEEN_CELLS) || matcher.currentRow() == null) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      this.countPerRow = 0;<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      matcher.setToNewRow(cell);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    }<a name="line.544"></a>
-<span class="sourceLineNo">545</span><a name="line.545"></a>
-<span class="sourceLineNo">546</span>    // Clear progress away unless invoker has indicated it should be kept.<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    if (!scannerContext.getKeepProgress()) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      scannerContext.clearProgress();<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    }<a name="line.549"></a>
-<span class="sourceLineNo">550</span><a name="line.550"></a>
-<span class="sourceLineNo">551</span>    int count = 0;<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    long totalBytesRead = 0;<a name="line.552"></a>
-<span class="sourceLineNo">553</span><a name="line.553"></a>
-<span class="sourceLineNo">554</span>    LOOP: do {<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      // Update and check the time limit based on the configured value of cellsPerTimeoutCheck<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      // Or if the preadMaxBytes is reached and we may want to return so we can switch to stream in<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      // the shipped method below.<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      if (kvsScanned % cellsPerHeartbeatCheck == 0 || (scanUsePread &amp;&amp;<a name="line.558"></a>
-<span class="sourceLineNo">559</span>        readType == Scan.ReadType.DEFAULT &amp;&amp; bytesRead &gt; preadMaxBytes)) {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>        if (scannerContext.checkTimeLimit(LimitScope.BETWEEN_CELLS)) {<a name="line.560"></a>
-<span class="sourceLineNo">561</span>          return scannerContext.setScannerState(NextState.TIME_LIMIT_REACHED).hasMoreValues();<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>      // Do object compare - we set prevKV from the same heap.<a name="line.564"></a>
-<span class="sourceLineNo">565</span>      if (prevCell != cell) {<a name="line.565"></a>
-<span class="sourceLineNo">566</span>        ++kvsScanned;<a name="line.566"></a>
-<span class="sourceLineNo">567</span>      }<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      checkScanOrder(prevCell, cell, comparator);<a name="line.568"></a>
-<span class="sourceLineNo">569</span>      int cellSize = PrivateCellUtil.estimatedSerializedSizeOf(cell);<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      bytesRead += cellSize;<a name="line.570"></a>
-<span class="sourceLineNo">571</span>      if (scanUsePread &amp;&amp; readType == Scan.ReadType.DEFAULT &amp;&amp;<a name="line.571"></a>
-<span class="sourceLineNo">572</span>        bytesRead &gt; preadMaxBytes) {<a name="line.572"></a>
-<span class="sourceLineNo">573</span>        // return immediately if we want to switch from pread to stream. We need this because we can<a name="line.573"></a>
-<span class="sourceLineNo">574</span>        // only switch in the shipped method, if user use a filter to filter out everything and rpc<a name="line.574"></a>
-<span class="sourceLineNo">575</span>        // timeout is very large then the shipped method will never be called until the whole scan<a name="line.575"></a>
-<span class="sourceLineNo">576</span>        // is finished, but at that time we have already scan all the data...<a name="line.576"></a>
-<span class="sourceLineNo">577</span>        // See HBASE-20457 for more details.<a name="line.577"></a>
-<span class="sourceLineNo">578</span>        // And there is still a scenario that can not be handled. If we have a very large row, which<a name="line.578"></a>
-<span class="sourceLineNo">579</span>        // have millions of qualifiers, and filter.filterRow is used, then even if we set the flag<a name="line.579"></a>
-<span class="sourceLineNo">580</span>        // here, we still need to scan all the qualifiers before returning...<a name="line.580"></a>
-<span class="sourceLineNo">581</span>        scannerContext.returnImmediately();<a name="line.581"></a>
-<span class="sourceLineNo">582</span>      }<a name="line.582"></a>
-<span class="sourceLineNo">583</span>      prevCell = cell;<a name="line.583"></a>
-<span class="sourceLineNo">584</span>      scannerContext.setLastPeekedCell(cell);<a name="line.584"></a>
-<span class="sourceLineNo">585</span>      topChanged = false;<a name="line.585"></a>
-<span class="sourceLineNo">586</span>      ScanQueryMatcher.MatchCode qcode = matcher.match(cell);<a name="line.586"></a>
-<span class="sourceLineNo">587</span>      switch (qcode) {<a name="line.587"></a>
-<span class="sourceLineNo">588</span>        case INCLUDE:<a name="line.588"></a>
-<span class="sourceLineNo">589</span>        case INCLUDE_AND_SEEK_NEXT_ROW:<a name="line.589"></a>
-<span class="sourceLineNo">590</span>        case INCLUDE_AND_SEEK_NEXT_COL:<a name="line.590"></a>
-<span class="sourceLineNo">591</span><a name="line.591"></a>
-<span class="sourceLineNo">592</span>          Filter f = matcher.getFilter();<a name="line.592"></a>
-<span class="sourceLineNo">593</span>          if (f != null) {<a name="line.593"></a>
-<span class="sourceLineNo">594</span>            cell = f.transformCell(cell);<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>          this.countPerRow++;<a name="line.597"></a>
-<span class="sourceLineNo">598</span>          if (storeLimit &gt; -1 &amp;&amp; this.countPerRow &gt; (storeLimit + storeOffset)) {<a name="line.598"></a>
-<span class="sourceLineNo">599</span>            // do what SEEK_NEXT_ROW does.<a name="line.599"></a>
-<span class="sourceLineNo">600</span>            if (!matcher.moreRowsMayExistAfter(cell)) {<a name="line.600"></a>
-<span class="sourceLineNo">601</span>              close(false);// Do all cleanup except heap.close()<a name="line.601"></a>
-<span class="sourceLineNo">602</span>              return scannerContext.setScannerState(NextState.NO_MORE_VALUES).hasMoreValues();<a name="line.602"></a>
-<span class="sourceLineNo">603</span>            }<a name="line.603"></a>
-<span class="sourceLineNo">604</span>            matcher.clearCurrentRow();<a name="line.604"></a>
-<span class="sourceLineNo">605</span>            seekToNextRow(cell);<a name="line.605"></a>
-<span class="sourceLineNo">606</span>            break LOOP;<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>          // add to results only if we have skipped #storeOffset kvs<a name="line.609"></a>
-<span class="sourceLineNo">610</span>          // also update metric accordingly<a name="line.610"></a>
-<span class="sourceLineNo">611</span>          if (this.countPerRow &gt; storeOffset) {<a name="line.611"></a>
-<span class="sourceLineNo">612</span>            outResult.add(cell);<a name="line.612"></a>
-<span class="sourceLineNo">613</span><a name="line.613"></a>
-<span class="sourceLineNo">614</span>            // Update local tracking information<a name="line.614"></a>
-<span class="sourceLineNo">615</span>            count++;<a name="line.615"></a>
-<span class="sourceLineNo">616</span>            totalBytesRead += cellSize;<a name="line.616"></a>
-<span class="sourceLineNo">617</span><a name="line.617"></a>
-<span class="sourceLineNo">618</span>            // Update the progress of the scanner context<a name="line.618"></a>
-<span class="sourceLineNo">619</span>            scannerContext.incrementSizeProgress(cellSize,<a name="line.619"></a>
-<span class="sourceLineNo">620</span>              PrivateCellUtil.estimatedSizeOfCell(cell));<a name="line.620"></a>
-<span class="sourceLineNo">621</span>            scannerContext.incrementBatchProgress(1);<a name="line.621"></a>
-<span class="sourceLineNo">622</span><a name="line.622"></a>
-<span class="sourceLineNo">623</span>            if (matcher.isUserScan() &amp;&amp; totalBytesRead &gt; maxRowSize) {<a name="line.623"></a>
-<span class="sourceLineNo">624</span>              throw new RowTooBigException(<a name="line.624"></a>
-<span class="sourceLineNo">625</span>                  "Max row size allowed: " + maxRowSize + ", but the row is bigger than that.");<a name="line.625"></a>
-<span class="sourceLineNo">626</span>            }<a name="line.626"></a>
-<span class="sourceLineNo">627</span>          }<a name="line.627"></a>
+<span class="sourceLineNo">535</span>    Cell cell = this.heap.peek();<a name="line.535"></a>
+<span class="sourceLineNo">536</span>    if (cell == null) {<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      close(false);// Do all cleanup except heap.close()<a name="line.537"></a>
+<span class="sourceLineNo">538</span>      return scannerContext.setScannerState(NextState.NO_MORE_VALUES).hasMoreValues();<a name="line.538"></a>
+<span class="sourceLineNo">539</span>    }<a name="line.539"></a>
+<span class="sourceLineNo">540</span><a name="line.540"></a>
+<span class="sourceLineNo">541</span>    // only call setRow if the row changes; avoids confusing the query matcher<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    // if scanning intra-row<a name="line.542"></a>
+<span class="sourceLineNo">543</span><a name="line.543"></a>
+<span class="sourceLineNo">544</span>    // If no limits exists in the scope LimitScope.Between_Cells then we are sure we are changing<a name="line.544"></a>
+<span class="sourceLineNo">545</span>    // rows. Else it is possible we are still traversing the same row so we must perform the row<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    // comparison.<a name="line.546"></a>
+<span class="sourceLineNo">547</span>    if (!scannerContext.hasAnyLimit(LimitScope.BETWEEN_CELLS) || matcher.currentRow() == null) {<a name="line.547"></a>
+<span class="sourceLineNo">548</span>      this.countPerRow = 0;<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      matcher.setToNewRow(cell);<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    }<a name="line.550"></a>
+<span class="sourceLineNo">551</span><a name="line.551"></a>
+<span class="sourceLineNo">552</span>    // Clear progress away unless invoker has indicated it should be kept.<a name="line.552"></a>
+<span class="sourceLineNo">553</span>    if (!scannerContext.getKeepProgress()) {<a name="line.553"></a>
+<span class="sourceLineNo">554</span>      scannerContext.clearProgress();<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>    int count = 0;<a name="line.557"></a>
+<span class="sourceLineNo">558</span>    long totalBytesRead = 0;<a name="line.558"></a>
+<span class="sourceLineNo">559</span><a name="line.559"></a>
+<span class="sourceLineNo">560</span>    LOOP: do {<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      // Update and check the time limit based on the configured value of cellsPerTimeoutCheck<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      // Or if the preadMaxBytes is reached and we may want to return so we can switch to stream in<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      // the shipped method below.<a name="line.563"></a>
+<span class="sourceLineNo">564</span>      if (kvsScanned % cellsPerHeartbeatCheck == 0 || (scanUsePread &amp;&amp;<a name="line.564"></a>
+<span class="sourceLineNo">565</span>        readType == Scan.ReadType.DEFAULT &amp;&amp; bytesRead &gt; preadMaxBytes)) {<a name="line.565"></a>
+<span class="sourceLineNo">566</span>        if (scannerContext.checkTimeLimit(LimitScope.BETWEEN_CELLS)) {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>          return scannerContext.setScannerState(NextState.TIME_LIMIT_REACHED).hasMoreValues();<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>      // Do object compare - we set prevKV from the same heap.<a name="line.570"></a>
+<span class="sourceLineNo">571</span>      if (prevCell != cell) {<a name="line.571"></a>
+<span class="sourceLineNo">572</span>        ++kvsScanned;<a name="line.572"></a>
+<span class="sourceLineNo">573</span>      }<a name="line.573"></a>
+<span class="sourceLineNo">574</span>      checkScanOrder(prevCell, cell, comparator);<a name="line.574"></a>
+<span class="sourceLineNo">575</span>      int cellSize = PrivateCellUtil.estimatedSerializedSizeOf(cell);<a name="line.575"></a>
+<span class="sourceLineNo">576</span>      bytesRead += cellSize;<a name="line.576"></a>
+<span class="sourceLineNo">577</span>      if (scanUsePread &amp;&amp; readType == Scan.ReadType.DEFAULT &amp;&amp;<a name="line.577"></a>
+<span class="sourceLineNo">578</span>        bytesRead &gt; preadMaxBytes) {<a name="line.578"></a>
+<span class="sourceLineNo">579</span>        // return immediately if we want to switch from pread to stream. We need this because we can<a name="line.579"></a>
+<span class="sourceLineNo">580</span>        // only switch in the shipped method, if user use a filter to filter out everything and rpc<a name="line.580"></a>
+<span class="sourceLineNo">581</span>        // timeout is very large then the shipped method will never be called until the whole scan<a name="line.581"></a>
+<span class="sourceLineNo">582</span>        // is finished, but at that time we have already scan all the data...<a name="line.582"></a>
+<span class="sourceLineNo">583</span>        // See HBASE-20457 for more details.<a name="line.583"></a>
+<span class="sourceLineNo">584</span>        // And there is still a scenario that can not be handled. If we have a very large row, which<a name="line.584"></a>
+<span class="sourceLineNo">585</span>        // have millions of qualifiers, and filter.filterRow is used, then even if we set the flag<a name="line.585"></a>
+<span class="sourceLineNo">586</span>        // here, we still need to scan all the qualifiers before returning...<a name="line.586"></a>
+<span class="sourceLineNo">587</span>        scannerContext.returnImmediately();<a name="line.587"></a>
+<span class="sourceLineNo">588</span>      }<a name="line.588"></a>
+<span class="sourceLineNo">589</span>      prevCell = cell;<a name="line.589"></a>
+<span class="sourceLineNo">590</span>      scannerContext.setLastPeekedCell(cell);<a name="line.590"></a>
+<span class="sourceLineNo">591</span>      topChanged = false;<a name="line.591"></a>
+<span class="sourceLineNo">592</span>      ScanQueryMatcher.MatchCode qcode = matcher.match(cell);<a name="line.592"></a>
+<span class="sourceLineNo">593</span>      switch (qcode) {<a name="line.593"></a>
+<span class="sourceLineNo">594</span>        case INCLUDE:<a name="line.594"></a>
+<span class="sourceLineNo">595</span>        case INCLUDE_AND_SEEK_NEXT_ROW:<a name="line.595"></a>
+<span class="sourceLineNo">596</span>        case INCLUDE_AND_SEEK_NEXT_COL:<a name="line.596"></a>
+<span class="sourceLineNo">597</span><a name="line.597"></a>
+<span class="sourceLineNo">598</span>          Filter f = matcher.getFilter();<a name="line.598"></a>
+<span class="sourceLineNo">599</span>          if (f != null) {<a name="line.599"></a>
+<span class="sourceLineNo">600</span>            cell = f.transformCell(cell);<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>          this.countPerRow++;<a name="line.603"></a>
+<span class="sourceLineNo">604</span>          if (storeLimit &gt; -1 &amp;&amp; this.countPerRow &gt; (storeLimit + storeOffset)) {<a name="line.604"></a>
+<span class="sourceLineNo">605</span>            // do what SEEK_NEXT_ROW does.<a name="line.605"></a>
+<span class="sourceLineNo">606</span>            if (!matcher.moreRowsMayExistAfter(cell)) {<a name="line.606"></a>
+<span class="sourceLineNo">607</span>              close(false);// Do all cleanup except heap.close()<a name="line.607"></a>
+<span class="sourceLineNo">608</span>              return scannerContext.setScannerState(NextState.NO_MORE_VALUES).hasMoreValues();<a name="line.608"></a>
+<span class="sourceLineNo">609</span>            }<a name="line.609"></a>
+<span class="sourceLineNo">610</span>            matcher.clearCurrentRow();<a name="line.610"></a>
+<span class="sourceLineNo">611</span>            seekToNextRow(cell);<a name="line.611"></a>
+<span class="sourceLineNo">612</span>            break LOOP;<a name="line.612"></a>
+<span class="sourceLineNo">613</span>          }<a name="line.613"></a>
+<span class="sourceLineNo">614</span><a name="line.614"></a>
+<span class="sourceLineNo">615</span>          // add to results only if we have skipped #storeOffset kvs<a name="line.615"></a>
+<span class="sourceLineNo">616</span>          // also update metric accordingly<a name="line.616"></a>
+<span class="sourceLineNo">617</span>          if (this.countPerRow &gt; storeOffset) {<a name="line.617"></a>
+<span class="sourceLineNo">618</span>            outResult.add(cell);<a name="line.618"></a>
+<span class="sourceLineNo">619</span><a name="line.619"></a>
+<span class="sourceLineNo">620</span>            // Update local tracking information<a name="line.620"></a>
+<span class="sourceLineNo">621</span>            count++;<a name="line.621"></a>
+<span class="sourceLineNo">622</span>            totalBytesRead += cellSize;<a name="line.622"></a>
+<span class="sourceLineNo">623</span><a name="line.623"></a>
+<span class="sourceLineNo">624</span>            // Update the progress of the scanner context<a name="line.624"></a>
+<span class="sourceLineNo">625</span>            scannerContext.incrementSizeProgress(cellSize,<a name="line.625"></a>
+<span class="sourceLineNo">626</span>              PrivateCellUtil.estimatedSizeOfCell(cell));<a name="line.626"></a>
+<span class="sourceLineNo">627</span>            scannerContext.incrementBatchProgress(1);<a name="line.627"></a>
 <span class="sourceLineNo">628</span><a name="line.628"></a>
-<span class="sourceLineNo">629</span>          if (qcode == ScanQueryMatcher.MatchCode.INCLUDE_AND_SEEK_NEXT_ROW) {<a name="line.629"></a>
-<span class="sourceLineNo">630</span>            if (!matcher.moreRowsMayExistAfter(cell)) {<a name="line.630"></a>
-<span class="sourceLineNo">631</span>              close(false);// Do all cleanup except heap.close()<a name="line.631"></a>
-<span class="sourceLineNo">632</span>              return scannerContext.setScannerState(NextState.NO_MORE_VALUES).hasMoreValues();<a name="line.632"></a>
-<span class="sourceLineNo">633</span>            }<a name="line.633"></a>
-<span class="sourceLineNo">634</span>            matcher.clearCurrentRow();<a name="line.634"></a>
-<span class="sourceLineNo">635</span>            seekOrSkipToNextRow(cell);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>          } else if (qcode == ScanQueryMatcher.MatchCode.INCLUDE_AND_SEEK_NEXT_COL) {<a name="line.636"></a>
-<span class="sourceLineNo">637</span>            seekOrSkipToNextColumn(cell);<a name="line.637"></a>
-<span class="sourceLineNo">638</span>          } else {<a name="line.638"></a>
-<span class="sourceLineNo">639</span>            this.heap.next();<a name="line.639"></a>
-<span class="sourceLineNo">640</span>          }<a name="line.640"></a>
-<span class="sourceLineNo">641</span><a name="line.641"></a>
-<span class="sourceLineNo">642</span>          if (scannerContext.checkBatchLimit(LimitScope.BETWEEN_CELLS)) {<a name="line.642"></a>
-<span class="sourceLineNo">643</span>            break LOOP;<a name="line.643"></a>
-<span class="sourceLineNo">644</span>          }<a name="line.644"></a>
-<span class="sourceLineNo">645</span>          if (scannerContext.checkSizeLimit(LimitScope.BETWEEN_CELLS)) {<a name="line.645"></a>
-<span class="sourceLineNo">646</span>            break LOOP;<a name="line.646"></a>
-<span class="sourceLineNo">647</span>          }<a name="line.647"></a>
-<span class="sourceLineNo">648</span>          continue;<a name="line.648"></a>
-<span class="sourceLineNo">649</span><a name="line.649"></a>
-<span class="sourceLineNo">650</span>        case DONE:<a name="line.650"></a>
-<span class="sourceLineNo">651</span>          // Optimization for Gets! If DONE, no more to get on this row, early exit!<a name="line.651"></a>
-<span class="sourceLineNo">652</span>          if (get) {<a name="line.652"></a>
-<span class="sourceLineNo">653</span>            // Then no more to this row... exit.<a name="line.653"></a>
-<span class="sourceLineNo">654</span>            close(false);// Do all cleanup except heap.close()<a name="line.654"></a>
-<span class="sourceLineNo">655</span>            return scannerContext.setScannerState(NextState.NO_MORE_VALUES).hasMoreValues();<a name="line.655"></a>
-<span class="sourceLineNo">656</span>          }<a name="line.656"></a>
-<span class="sourceLineNo">657</span>          matcher.clearCurrentRow();<a name="line.657"></a>
-<span class="sourceLineNo">658</span>          return scannerContext.setScannerState(NextState.MORE_VALUES).hasMoreValues();<a name="line.658"></a>
-<span class="sourceLineNo">659</span><a name="line.659"></a>
-<span class="sourceLineNo">660</span>        case DONE_SCAN:<a name="line.660"></a>
-<span class="sourceLineNo">661</span>          close(false);// Do all cleanup except heap.close()<a name="line.661"></a>
-<span class="sourceLineNo">662</span>          return scannerContext.setScannerState(NextState.NO_MORE_VALUES).hasMoreValues();<a name="line.662"></a>
-<span class="sourceLineNo">663</span><a name="line.663"></a>
-<span class="sourceLineNo">664</span>        case SEEK_NEXT_ROW:<a name="line.664"></a>
-<span class="sourceLineNo">665</span>          // This is just a relatively simple end of scan fix, to short-cut end<a name="line.665"></a>
-<span class="sourceLineNo">666</span>          // us if there is an endKey in the scan.<a name="line.666"></a>
-<span class="sourceLineNo">667</span>          if (!matcher.moreRowsMayExistAfter(cell)) {<a name="line.667"></a>
-<span class="sourceLineNo">668</span>            close(false);// Do all cleanup except heap.close()<a name="line.668"></a>
-<span class="sourceLineNo">669</span>            return scannerContext.setScannerState(NextState.NO_MORE_VALUES).hasMoreValues();<a name="line.669"></a>
-<span class="sourceLineNo">670</span>          }<a name="line.670"></a>
-<span class="sourceLineNo">671</span>          matcher.clearCurrentRow();<a name="line.671"></a>
-<span class="sourceLineNo">672</span>          seekOrSkipToNextRow(cell);<a name="line.672"></a>
-<span class="sourceLineNo">673</span>          NextState stateAfterSeekNextRow = needToReturn(outResult);<a name="line.673"></a>
-<span class="sourceLineNo">674</span>          if (stateAfterSeekNextRow != null) {<a name="line.674"></a>
-<span class="sourceLineNo">675</span>            return scannerContext.setScannerState(stateAfterSeekNextRow).hasMoreValues();<a name="line.675"></a>
+<span class="sourceLineNo">629</span>            if (matcher.isUserScan() &amp;&amp; totalBytesRead &gt; maxRowSize) {<a name="line.629"></a>
+<span class="sourceLineNo">630</span>              throw new RowTooBigException(<a name="line.630"></a>
+<span class="sourceLineNo">631</span>                  "Max row size allowed: " + maxRowSize + ", but the row is bigger than that.");<a name="line.631"></a>
+<span class="sourceLineNo">632</span>            }<a name="line.632"></a>
+<span class="sourceLineNo">633</span>          }<a name="line.633"></a>
+<span class="sourceLineNo">634</span><a name="line.634"></a>
+<span class="sourceLineNo">635</span>          if (qcode == ScanQueryMatcher.MatchCode.INCLUDE_AND_SEEK_NEXT_ROW) {<a name="line.635"></a>
+<span class="sourceLineNo">636</span>            if (!matcher.moreRowsMayExistAfter(cell)) {<a name="line.636"></a>
+<span class="sourceLineNo">637</span>              close(false);// Do all cleanup except heap.close()<a name="line.637"></a>
+<span class="sourceLineNo">638</span>              return scannerContext.setScannerState(NextState.NO_MORE_VALUES).hasMoreValues();<a name="line.638"></a>
+<span class="sourceLineNo">639</span>            }<a name="line.639"></a>
+<span class="sourceLineNo">640</span>            matcher.clearCurrentRow();<a name="line.640"></a>
+<span class="sourceLineNo">641</span>            seekOrSkipToNextRow(cell);<a name="line.641"></a>
+<span class="sourceLineNo">642</span>          } else if (qcode == ScanQueryMatcher.MatchCode.INCLUDE_AND_SEEK_NEXT_COL) {<a name="line.642"></a>
+<span class="sourceLineNo">643</span>            seekOrSkipToNextColumn(cell);<a name="line.643"></a>
+<span class="sourceLineNo">644</span>          } else {<a name="line.644"></a>
+<span class="sourceLineNo">645</span>            this.heap.next();<a name="line.645"></a>
+<span class="sourceLineNo">646</span>          }<a name="line.646"></a>
+<span class="sourceLineNo">647</span><a name="line.647"></a>
+<span class="sourceLineNo">648</span>          if (scannerContext.checkBatchLimit(LimitScope.BETWEEN_CELLS)) {<a name="line.648"></a>
+<span class="sourceLineNo">649</span>            break LOOP;<a name="line.649"></a>
+<span class="sourceLineNo">650</span>          }<a name="line.650"></a>
+<span class="sourceLineNo">651</span>          if (scannerContext.checkSizeLimit(LimitScope.BETWEEN_CELLS)) {<a name="line.651"></a>
+<span class="sourceLineNo">652</span>            break LOOP;<a name="line.652"></a>
+<span class="sourceLineNo">653</span>          }<a name="line.653"></a>
+<span class="sourceLineNo">654</span>          continue;<a name="line.654"></a>
+<span class="sourceLineNo">655</span><a name="line.655"></a>
+<span class="sourceLineNo">656</span>        case DONE:<a name="line.656"></a>
+<span class="sourceLineNo">657</span>          // Optimization for Gets! If DONE, no more to get on this row, early exit!<a name="line.657"></a>
+<span class="sourceLineNo">658</span>          if (get) {<a name="line.658"></a>
+<span class="sourceLineNo">659</span>            // Then no more to this row... exit.<a name="line.659"></a>
+<span class="sourceLineNo">660</span>            close(false);// Do all cleanup except heap.close()<a name="line.660"></a>
+<span class="sourceLineNo">661</span>            return scannerContext.setScannerState(NextState.NO_MORE_VALUES).hasMoreValues();<a name="line.661"></a>
+<span class="sourceLineNo">662</span>          }<a name="line.662"></a>
+<span class="sourceLineNo">663</span>          matcher.clearCurrentRow();<a name="line.663"></a>
+<span class="sourceLineNo">664</span>          return scannerContext.setScannerState(NextState.MORE_VALUES).hasMoreValues();<a name="line.664"></a>
+<span class="sourceLineNo">665</span><a name="line.665"></a>
+<span class="sourceLineNo">666</span>        case DONE_SCAN:<a name="line.666"></a>
+<span class="sourceLineNo">667</span>          close(false);// Do all cleanup except heap.close()<a name="line.667"></a>
+<span class="sourceLineNo">668</span>          return scannerContext.setScannerState(NextState.NO_MORE_VALUES).hasMoreValues();<a name="line.668"></a>
+<span class="sourceLineNo">669</span><a name="line.669"></a>
+<span class="sourceLineNo">670</span>        case SEEK_NEXT_ROW:<a name="line.670"></a>
+<span class="sourceLineNo">671</span>          // This is just a relatively simple end of scan fix, to short-cut end<a name="line.671"></a>
+<span class="sourceLineNo">672</span>          // us if there is an endKey in the scan.<a name="line.672"></a>
+<span class="sourceLineNo">673</span>          if (!matcher.moreRowsMayExistAfter(cell)) {<a name="line.673"></a>
+<span class="sourceLineNo">674</span>            close(false);// Do all cleanup except heap.close()<a name="line.674"></a>
+<span class="sourceLineNo">675</span>            return scannerContext.setScannerState(NextState.NO_MORE_VALUES).hasMoreValues();<a name="line.675"></a>
 <span class="sourceLineNo">676</span>          }<a name="line.676"></a>
-<span class="sourceLineNo">677</span>          break;<a name="line.677"></a>
-<span class="sourceLineNo">678</span><a name="line.678"></a>
-<span class="sourceLineNo">679</span>        case SEEK_NEXT_COL:<a name="line.679"></a>
-<span class="sourceLineNo">680</span>          seekOrSkipToNextColumn(cell);<a name="line.680"></a>
-<span class="sourceLineNo">681</span>          NextState stateAfterSeekNextColumn = needToReturn(outResult);<a name="line.681"></a>
-<span class="sourceLineNo">682</span>          if (stateAfterSeekNextColumn != null) {<a name="line.682"></a>
-<span class="sourceLineNo">683</span>            return scannerContext.setScannerState(stateAfterSeekNextColumn).hasMoreValues();<a name="line.683"></a>
-<span class="sourceLineNo">684</span>          }<a name="line.684"></a>
-<span class="sourceLineNo">685</span>          break;<a name="line.685"></a>
-<span class="sourceLineNo">686</span><a name="line.686"></a>
-<span class="sourceLineNo">687</span>        case SKIP:<a name="line.687"></a>
-<span class="sourceLineNo">688</span>          this.heap.next();<a name="line.688"></a>
-<span class="sourceLineNo">689</span>          break;<a name="line.689"></a>
-<span class="sourceLineNo">690</span><a name="line.690"></a>
-<span class="sourceLineNo">691</span>        case SEEK_NEXT_USING_HINT:<a name="line.691"></a>
-<span class="sourceLineNo">692</span>          Cell nextKV = matcher.getNextKeyHint(cell);<a name="line.692"></a>
-<span class="sourceLineNo">693</span>          if (nextKV != null &amp;&amp; comparator.compare(nextKV, cell) &gt; 0) {<a name="line.693"></a>
-<span class="sourceLineNo">694</span>            seekAsDirection(nextKV);<a name="line.694"></a>
-<span class="sourceLineNo">695</span>            NextState stateAfterSeekByHint = needToReturn(outResult);<a name="line.695"></a>
-<span class="sourceLineNo">696</span>            if (stateAfterSeekByHint != null) {<a name="line.696"></a>
-<span class="sourceLineNo">697</span>              return scannerContext.setScannerState(stateAfterSeekByHint).hasMoreValues();<a name="line.697"></a>
-<span class="sourceLineNo">698</span>            }<a name="line.698"></a>
-<span class="sourceLineNo">699</span>          } else {<a name="line.699"></a>
-<span class="sourceLineNo">700</span>            heap.next();<a name="line.700"></a>
-<span class="sourceLineNo">701</span>          }<a name="line.701"></a>
-<span class="sourceLineNo">702</span>          break;<a name="line.702"></a>
-<span class="sourceLineNo">703</span><a name="line.703"></a>
-<span class="sourceLineNo">704</span>        default:<a name="line.704"></a>
-<span class="sourceLineNo">705</span>          throw new RuntimeException("UNEXPECTED");<a name="line.705"></a>
-<span class="sourceLineNo">706</span>      }<a name="line.706"></a>
-<span class="sourceLineNo">707</span>    } while ((cell = this.heap.peek()) != null);<a name="line.707"></a>
-<span class="sourceLineNo">708</span><a name="line.708"></a>
-<span class="sourceLineNo">709</span>    if (count &gt; 0) {<a name="line.709"></a>
-<span class="sourceLineNo">710</span>      return scannerContext.setScannerState(NextState.MORE_VALUES).hasMoreValues();<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>    // No more keys<a name="line.713"></a>
-<span class="sourceLineNo">714</span>    close(false);// Do all cleanup except heap.close()<a name="line.714"></a>
-<span class="sourceLineNo">715</span>    return scannerContext.setScannerState(NextState.NO_MORE_VALUES).hasMoreValues();<a name="line.715"></a>
-<span class="sourceLineNo">716</span>  }<a name="line.716"></a>
-<span class="sourceLineNo">717</span><a name="line.717"></a>
-<span class="sourceLineNo">718</span>  /**<a name="line.718"></a>
-<span class="sourceLineNo">719</span>   * If the top cell won't be flushed into disk, the new top cell may be<a name="line.719"></a>
-<span class="sourceLineNo">720</span>   * changed after #reopenAfterFlush. Because the older top cell only exist<a name="line.720"></a>
-<span class="sourceLineNo">721</span>   * in the memstore scanner but the memstore scanner is replaced by hfile<a name="line.721"></a>
-<span class="sourceLineNo">722</span>   * scanner after #reopenAfterFlush. If the row of top cell is changed,<a name="line.722"></a>
-<span class="sourceLineNo">723</span>   * we should return the current cells. Otherwise, we may return<a name="line.723"></a>
-<span class="sourceLineNo">724</span>   * the cells across different rows.<a name="line.724"></a>
-<span class="sourceLineNo">725</span>   * @param outResult the cells which are visible for user scan<a name="line.725"></a>
-<span class="sourceLineNo">726</span>   * @return null is the top cell doesn't change. Otherwise, the NextState<a name="line.726"></a>
-<span class="sourceLineNo">727</span>   *         to return<a name="line.727"></a>
-<span class="sourceLineNo">728</span>   */<a name="line.728"></a>
-<span class="sourceLineNo">729</span>  private NextState needToReturn(List&lt;Cell&gt; outResult) {<a name="line.729"></a>
-<span class="sourceLineNo">730</span>    if (!outResult.isEmpty() &amp;&amp; topChanged) {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>      return heap.peek() == null ? NextState.NO_MORE_VALUES : NextState.MORE_VALUES;<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    }<a name="line.732"></a>
-<span class="sourceLineNo">733</span>    return null;<a name="line.733"></a>
-<span class="sourceLineNo">734</span>  }<a name="line.734"></a>
-<span class="sourceLineNo">735</span><a name="line.735"></a>
-<span class="sourceLineNo">736</span>  private void seekOrSkipToNextRow(Cell cell) throws IOException {<a name="line.736"></a>
-<span class="sourceLineNo">737</span>    // If it is a Get Scan, then we know that we are done with this row; there are no more<a name="line.737"></a>
-<span class="sourceLineNo">738</span>    // rows beyond the current one: don't try to optimize.<a name="line.738"></a>
-<span class="sourceLineNo">739</span>    if (!get) {<a name="line.739"></a>
-<span class="sourceLineNo">740</span>      if (trySkipToNextRow(cell)) {<a name="line.740"></a>
-<span class="sourceLineNo">741</span>        return;<a name="line.741"></a>
-<span class="sourceLineNo">742</span>      }<a name="line.742"></a>
-<span class="sourceLineNo">743</span>    }<a name="line.743"></a>
-<span class="sourceLineNo">744</span>    seekToNextRow(cell);<a name="line.744"></a>
-<span class="sourceLineNo">745</span>  }<a name="line.745"></a>
-<span class="sourceLineNo">746</span><a name="line.746"></a>
-<span class="sourceLineNo">747</span>  private void seekOrSkipToNextColumn(Cell cell) throws IOException {<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    if (!trySkipToNextColumn(cell)) {<a name="line.748"></a>
-<span class="sourceLineNo">749</span>      seekAsDirection(matcher.getKeyForNextColumn(cell));<a name="line.749"></a>
-<span class="sourceLineNo">750</span>    }<a name="line.750"></a>
+<span class="sourceLineNo">677</span>          matcher.clearCurrentRow();<a name="line.677"></a>
+<span class="sourceLineNo">678</span>          seekOrSkipToNextRow(cell);<a name="line.678"></a>
+<span class="sourceLineNo">679</span>          NextState stateAfterSeekNextRow = needToReturn(outResult);<a name="line.679"></a>
+<span class="sourceLineNo">680</span>          if (stateAfterSeekNextRow != null) {<a name="line.680"></a>
+<span class="sourceLineNo">681</span>            return scannerContext.setScannerState(stateAfterSeekNextRow).hasMoreValues();<a name="line.681"></a>
+<span class="sourceLineNo">682</span>          }<a name="line.682"></a>
+<span class="sourceLineNo">683</span>          break;<a name="line.683"></a>
+<span class="sourceLineNo">684</span><a name="line.684"></a>
+<span class="sourceLineNo">685</span>        case SEEK_NEXT_COL:<a name="line.685"></a>
+<span class="sourceLineNo">686</span>          seekOrSkipToNextColumn(cell);<a name="line.686"></a>
+<span class="sourceLineNo">687</span>          NextState stateAfterSeekNextColumn = needToReturn(outResult);<a name="line.687"></a>
+<span class="sourceLineNo">688</span>          if (stateAfterSeekNextColumn != null) {<a name="line.688"></a>
+<span class="sourceLineNo">689</span>            return scannerContext.setScannerState(stateAfterSeekNextColumn).hasMoreValues();<a name="line.689"></a>
+<span class="sourceLineNo">690</span>          }<a name="line.690"></a>
+<span class="sourceLineNo">691</span>          break;<a name="line.691"></a>
+<span class="sourceLineNo">692</span><a name="line.692"></a>
+<span class="sourceLineNo">693</span>        case SKIP:<a name="line.693"></a>
+<span class="sourceLineNo">694</span>          this.heap.next();<a name="line.694"></a>
+<span class="sourceLineNo">695</span>          break;<a name="line.695"></a>
+<span class="sourceLineNo">696</span><a name="line.696"></a>
+<span class="sourceLineNo">697</span>        case SEEK_NEXT_USING_HINT:<a name="line.697"></a>
+<span class="sourceLineNo">698</span>          Cell nextKV = matcher.getNextKeyHint(cell);<a name="line.698"></a>
+<span class="sourceLineNo">699</span>          if (nextKV != null &amp;&amp; comparator.compare(nextKV, cell) &gt; 0) {<a name="line.699"></a>
+<span class="sourceLineNo">700</span>            seekAsDirection(nextKV);<a name="line.700"></a>
+<span class="sourceLineNo">701</span>            NextState stateAfterSeekByHint = needToReturn(outResult);<a name="line.701"></a>
+<span class="sourceLineNo">702</span>            if (stateAfterSeekByHint != null) {<a name="line.702"></a>
+<span class="sourceLineNo">703</span>              return scannerContext.setScannerState(stateAfterSeekByHint).hasMoreValues();<a name="line.703"></a>
+<span class="sourceLineNo">704</span>            }<a name="line.704"></a>
+<span class="sourceLineNo">705</span>          } else {<a name="line.705"></a>
+<span class="sourceLineNo">706</span>            heap.next();<a name="line.706"></a>
+<span class="sourceLineNo">707</span>          }<a name="line.707"></a>
+<span class="sourceLineNo">708</span>          break;<a name="line.708"></a>
+<span class="sourceLineNo">709</span><a name="line.709"></a>
+<span class="sourceLineNo">710</span>        default:<a name="line.710"></a>
+<span class="sourceLineNo">711</span>          throw new RuntimeException("UNEXPECTED");<a name="line.711"></a>
+<span class="sourceLineNo">712</span>      }<a name="line.712"></a>
+<span class="sourceLineNo">713</span>    } while ((cell = this.heap.peek()) != null);<a name="line.713"></a>
+<span class="sourceLineNo">714</span><a name="line.714"></a>
+<span class="sourceLineNo">715</span>    if (count &gt; 0) {<a name="line.715"></a>
+<span class="sourceLineNo">716</span>      return scannerContext.setScannerState(NextState.MORE_VALUES).hasMoreValues();<a name="line.716"></a>
+<span class="sourceLineNo">717</span>    }<a name="line.717"></a>
+<span class="sourceLineNo">718</span><a name="line.718"></a>
+<span class="sourceLineNo">719</span>    // No more keys<a name="line.719"></a>
+<span class="sourceLineNo">720</span>    close(false);// Do all cleanup except heap.close()<a name="line.720"></a>
+<span class="sourceLineNo">721</span>    return scannerContext.setScannerState(NextState.NO_MORE_VALUES).hasMoreValues();<a name="line.721"></a>
+<span class="sourceLineNo">722</span>  }<a name="line.722"></a>
+<span class="sourceLineNo">723</span><a name="line.723"></a>
+<span class="sourceLineNo">724</span>  /**<a name="line.724"></a>
+<span class="sourceLineNo">725</span>   * If the top cell won't be flushed into disk, the new top cell may be<a name="line.725"></a>
+<span class="sourceLineNo">726</span>   * changed after #reopenAfterFlush. Because the older top cell only exist<a name="line.726"></a>
+<span class="sourceLineNo">727</span>   * in the memstore scanner but the memstore scanner is replaced by hfile<a name="line.727"></a>
+<span class="sourceLineNo">728</span>   * scanner after #reopenAfterFlush. If the row of top cell is changed,<a name="line.728"></a>
+<span class="sourceLineNo">729</span>   * we should return the current cells. Otherwise, we may return<a name="line.729"></a>
+<span class="sourceLineNo">730</span>   * the cells across different rows.<a name="line.730"></a>
+<span class="sourceLineNo">731</span>   * @param outResult the cells which are visible for user scan<a name="line.731"></a>
+<span class="sourceLineNo">732</span>   * @return null is the top cell doesn't change. Otherwise, the NextState<a name="line.732"></a>
+<span class="sourceLineNo">733</span>   *         to return<a name="line.733"></a>
+<span class="sourceLineNo">734</span>   */<a name="line.734"></a>
+<span class="sourceLineNo">735</span>  private NextState needToReturn(List&lt;Cell&gt; outResult) {<a name="line.735"></a>
+<span class="sourceLineNo">736</span>    if (!outResult.isEmpty() &amp;&amp; topChanged) {<a name="line.736"></a>
+<span class="sourceLineNo">737</span>      return heap.peek() == null ? NextState.NO_MORE_VALUES : NextState.MORE_VALUES;<a name="line.737"></a>
+<span class="sourceLineNo">738</span>    }<a name="line.738"></a>
+<span class="sourceLineNo">739</span>    return null;<a name="line.739"></a>
+<span class="sourceLineNo">740</span>  }<a name="line.740"></a>
+<span class="sourceLineNo">741</span><a name="line.741"></a>
+<span class="sourceLineNo">742</span>  private void seekOrSkipToNextRow(Cell cell) throws IOException {<a name="line.742"></a>
+<span class="sourceLineNo">743</span>    // If it is a Get Scan, then we know that we are done with this row; there are no more<a name="line.743"></a>
+<span class="sourceLineNo">744</span>    // rows beyond the current one: don't try to optimize.<a name="line.744"></a>
+<span class="sourceLineNo">745</span>    if (!get) {<a name="line.745"></a>
+<span class="sourceLineNo">746</span>      if (trySkipToNextRow(cell)) {<a name="line.746"></a>
+<span class="sourceLineNo">747</span>        return;<a name="line.747"></a>
+<span class="sourceLineNo">748</span>      }<a name="line.748"></a>
+<span class="sourceLineNo">749</span>    }<a name="line.749"></a>
+<span class="sourceLineNo">750</span>    seekToNextRow(cell);<a name="line.750"></a>
 <span class="sourceLineNo">751</span>  }<a name="line.751"></a>
 <span class="sourceLineNo">752</span><a name="line.752"></a>
-<span class="sourceLineNo">753</span>  /**<a name="line.753"></a>
-<span class="sourceLineNo">754</span>   * See if we should actually SEEK or rather just SKIP to the next Cell (see HBASE-13109).<a name="line.754"></a>
-<span class="sourceLineNo">755</span>   * ScanQueryMatcher may issue SEEK hints, such as seek to next column, next row,<a name="line.755"></a>
-<span class="sourceLineNo">756</span>   * or seek to an arbitrary seek key. This method decides whether a seek is the most efficient<a name="line.756"></a>
-<span class="sourceLineNo">757</span>   * _actual_ way to get us to the requested cell (SEEKs are more expensive than SKIP, SKIP,<a name="line.757"></a>
-<span class="sourceLineNo">758</span>   * SKIP inside the current, loaded block).<a name="line.758"></a>
-<span class="sourceLineNo">759</span>   * It does this by looking at the next indexed key of the current HFile. This key<a name="line.759"></a>
-<span class="sourceLineNo">760</span>   * is then compared with the _SEEK_ key, where a SEEK key is an artificial 'last possible key<a name="line.760"></a>
-<span class="sourceLineNo">761</span>   * on the row' (only in here, we avoid actually creating a SEEK key; in the compare we work with<a name="line.761"></a>
-<span class="sourceLineNo">762</span>   * the current Cell but compare as though it were a seek key; see down in<a name="line.762"></a>
-<span class="sourceLineNo">763</span>   * matcher.compareKeyForNextRow, etc). If the compare gets us onto the<a name="line.763"></a>
-<span class="sourceLineNo">764</span>   * next block we *_SEEK, otherwise we just SKIP to the next requested cell.<a name="line.764"></a>
-<span class="sourceLineNo">765</span>   *<a name="line.765"></a>
-<span class="sourceLineNo">766</span>   * &lt;p&gt;Other notes:<a name="line.766"></a>
-<span class="sourceLineNo">767</span>   * &lt;ul&gt;<a name="line.767"></a>
-<span class="sourceLineNo">768</span>   * &lt;li&gt;Rows can straddle block boundaries&lt;/li&gt;<a name="line.768"></a>
-<span class="sourceLineNo">769</span>   * &lt;li&gt;Versions of columns can straddle block boundaries (i.e. column C1 at T1 might be in a<a name="line.769"></a>
-<span class="sourceLineNo">770</span>   * different block than column C1 at T2)&lt;/li&gt;<a name="line.770"></a>
-<span class="sourceLineNo">771</span>   * &lt;li&gt;We want to SKIP if the chance is high that we'll find the desired Cell after a<a name="line.771"></a>
-<span class="sourceLineNo">772</span>   * few SKIPs...&lt;/li&gt;<a name="line.772"></a>
-<span class="sourceLineNo">773</span>   * &lt;li&gt;We want to SEEK when the chance is high that we'll be able to seek<a name="line.773"></a>
-<span class="sourceLineNo">774</span>   * past many Cells, especially if we know we need to go to the next block.&lt;/li&gt;<a name="line.774"></a>
-<span class="sourceLineNo">775</span>   * &lt;/ul&gt;<a name="line.775"></a>
-<span class="sourceLineNo">776</span>   * &lt;p&gt;A good proxy (best effort) to determine whether SKIP is better than SEEK is whether<a name="line.776"></a>
-<span class="sourceLineNo">777</span>   * we'll likely end up seeking to the next block (or past the next block) to get our next column.<a name="line.777"></a>
-<span class="sourceLineNo">778</span>   * Example:<a name="line.778"></a>
-<span class="sourceLineNo">779</span>   * &lt;pre&gt;<a name="line.779"></a>
-<span class="sourceLineNo">780</span>   * |    BLOCK 1              |     BLOCK 2                   |<a name="line.780"></a>
-<span class="sourceLineNo">781</span>   * |  r1/c1, r1/c2, r1/c3    |    r1/c4, r1/c5, r2/c1        |<a name="line.781"></a>
-<span class="sourceLineNo">782</span>   *                                   ^         ^<a name="line.782"></a>
-<span class="sourceLineNo">783</span>   *                                   |         |<a name="line.783"></a>
-<span class="sourceLineNo">784</span>   *                           Next Index Key   SEEK_NEXT_ROW (before r2/c1)<a name="line.784"></a>
-<span class="sourceLineNo">785</span>   *<a name="line.785"></a>
-<span class="sourceLineNo">786</span>   *<a name="line.786"></a>
-<span class="sourceLineNo">787</span>   * |    BLOCK 1                       |     BLOCK 2                      |<a name="line.787"></a>
-<span class="sourceLineNo">788</span>   * |  r1/c1/t5, r1/c1/t4, r1/c1/t3    |    r1/c1/t2, r1/c1/T1, r1/c2/T3  |<a name="line.788"></a>
-<span class="sourceLineNo">789</span>   *                                            ^              ^<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   *                                            |              |<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   *                                    Next Index Key        SEEK_NEXT_COL<a name="line.791"></a>
-<span class="sourceLineNo">792</span>   * &lt;/pre&gt;<a name="line.792"></a>
-<span class="sourceLineNo">793</span>   * Now imagine we want columns c1 and c3 (see first diagram above), the 'Next Index Key' of r1/c4<a name="line.793"></a>
-<span class="sourceLineNo">794</span>   * is &gt; r1/c3 so we should seek to get to the c1 on the next row, r2. In second case, say we only<a name="line.794"></a>
-<span class="sourceLineNo">795</span>   * want one version of c1, after we have it, a SEEK_COL will be issued to get to c2. Looking at<a name="line.795"></a>
-<span class="sourceLineNo">796</span>   * the 'Next Index Key', it would land us in the next block, so we should SEEK. In other scenarios<a name="line.796"></a>
-<span class="sourceLineNo">797</span>   * where the SEEK will not land us in the next block, it is very likely better to issues a series<a name="line.797"></a>
-<span class="sourceLineNo">798</span>   * of SKIPs.<a name="line.798"></a>
-<span class="sourceLineNo">799</span>   * @param cell current cell<a name="line.799"></a>
-<span class="sourceLineNo">800</span>   * @return true means skip to next row, false means not<a name="line.800"></a>
-<span class="sourceLineNo">801</span>   */<a name="line.801"></a>
-<span class="sourceLineNo">802</span>  @VisibleForTesting<a name="line.802"></a>
-<span class="sourceLineNo">803</span>  protected boolean trySkipToNextRow(Cell cell) throws IOException {<a name="line.803"></a>
-<span class="sourceLineNo">804</span>    Cell nextCell = null;<a name="line.804"></a>
-<span class="sourceLineNo">805</span>    // used to guard against a changed next indexed key by doing a identity comparison<a name="line.805"></a>
-<span class="sourceLineNo">806</span>    // when the identity changes we need to compare the bytes again<a name="line.806"></a>
-<span class="sourceLineNo">807</span>    Cell previousIndexedKey = null;<a name="line.807"></a>
-<span class="sourceLineNo">808</span>    do {<a name="line.808"></a>
-<span class="sourceLineNo">809</span>      Cell nextIndexedKey = getNextIndexedKey();<a name="line.809"></a>
-<span class="sourceLineNo">810</span>      if (nextIndexedKey != null &amp;&amp; nextIndexedKey != KeyValueScanner.NO_NEXT_INDEXED_KEY &amp;&amp;<a name="line.810"></a>
-<span class="sourceLineNo">811</span>          (nextIndexedKey == previousIndexedKey ||<a name="line.811"></a>
-<span class="sourceLineNo">812</span>          matcher.compareKeyForNextRow(nextIndexedKey, cell) &gt;= 0)) {<a name="line.812"></a>
-<span class="sourceLineNo">813</span>        this.heap.next();<a name="line.813"></a>
-<span class="sourceLineNo">814</span>        ++kvsScanned;<a name="line.814"></a>
-<span class="sourceLineNo">815</span>        previousIndexedKey = nextIndexedKey;<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      } else {<a name="line.816"></a>
-<span class="sourceLineNo">817</span>        return false;<a name="line.817"></a>
-<span class="sourceLineNo">818</span>      }<a name="line.818"></a>
-<span class="sourceLineNo">819</span>    } while ((nextCell = this.heap.peek()) != null &amp;&amp; CellUtil.matchingRows(cell, nextCell));<a name="line.819"></a>
-<span class="sourceLineNo">820</span>    return true;<a name="line.820"></a>
-<span class="sourceLineNo">821</span>  }<a name="line.821"></a>
-<span class="sourceLineNo">822</span><a name="line.822"></a>
-<span class="sourceLineNo">823</span>  /**<a name="line.823"></a>
-<span class="sourceLineNo">824</span>   * See {@link org.apache.hadoop.hbase.regionserver.StoreScanner#trySkipToNextRow(Cell)}<a name="line.824"></a>
-<span class="sourceLineNo">825</span>   * @param cell current cell<a name="line.825"></a>
-<span class="sourceLineNo">826</span>   * @return true means skip to next column, false means not<a name="line.826"></a>
-<span class="sourceLineNo">827</span>   */<a name="line.827"></a>
-<span class="sourceLineNo">828</span>  @VisibleForTesting<a name="line.828"></a>
-<span class="sourceLineNo">829</span>  protected boolean trySkipToNextColumn(Cell cell) throws IOException {<a name="line.829"></a>
-<span class="sourceLineNo">830</span>    Cell nextCell = null;<a name="line.830"></a>
-<span class="sourceLineNo">831</span>    // used to guard against a changed next indexed key by doing a identity comparison<a name="line.831"></a>
-<span class="sourceLineNo">832</span>    // when the identity changes we need to compare the bytes again<a name="line.832"></a>
-<span class="sourceLineNo">833</span>    Cell previousIndexedKey = null;<a name="line.833"></a>
-<span class="sourceLineNo">834</span>    do {<a name="line.834"></a>
-<span class="sourceLineNo">835</span>      Cell nextIndexedKey = getNextIndexedKey();<a name="line.835"></a>
-<span class="sourceLineNo">836</span>      if (nextIndexedKey != null &amp;&amp; nextIndexedKey != KeyValueScanner.NO_NEXT_INDEXED_KEY &amp;&amp;<a name="line.836"></a>
-<span class="sourceLineNo">837</span>          (nextIndexedKey == previousIndexedKey ||<a name="line.837"></a>
-<span class="sourceLineNo">838</span>          matcher.compareKeyForNextColumn(nextIndexedKey, cell) &gt;= 0)) {<a name="line.838"></a>
-<span class="sourceLineNo">839</span>        this.heap.next();<a name="line.839"></a>
-<span class="sourceLineNo">840</span>        ++kvsScanned;<a name="line.840"></a>
-<span class="sourceLineNo">841</span>        previousIndexedKey = nextIndexedKey;<a name="line.841"></a>
-<span class="sourceLineNo">842</span>      } else {<a name="line.842"></a>
-<span class="sourceLineNo">843</span>        return false;<a name="line.843"></a>
-<span class="sourceLineNo">844</span>      }<a name="line.844"></a>
-<span class="sourceLineNo">845</span>    } while ((nextCell = this.heap.peek()) != null &amp;&amp; CellUtil.matchingRowColumn(cell, nextCell));<a name="line.845"></a>
-<span class="sourceLineNo">846</span>    // We need this check because it may happen that the new scanner that we get<a name="line.846"></a>
-<span class="sourceLineNo">847</span>    // during heap.next() is requiring reseek due of fake KV previously generated for<a name="line.847"></a>
-<span class="sourceLineNo">848</span>    // ROWCOL bloom filter optimization. See HBASE-19863 for more details<a name="line.848"></a>
-<span class="sourceLineNo">849</span>    if (nextCell != null &amp;&amp; matcher.compareKeyForNextColumn(nextCell, cell) &lt; 0) {<a name="line.849"></a>
-<span class="sourceLineNo">850</span>      return false;<a name="line.850"></a>
-<span class="sourceLineNo">851</span>    }<a name="line.851"></a>
-<span class="sourceLineNo">852</span>    return true;<a name="line.852"></a>
-<span class="sourceLineNo">853</span>  }<a name="line.853"></a>
-<span class="sourceLineNo">854</span><a name="line.854"></a>
-<span class="sourceLineNo">855</span>  @Override<a name="line.855"></a>
-<span class="sourceLineNo">856</span>  public long getReadPoint() {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    return this.readPt;<a name="line.857"></a>
-<span class="sourceLineNo">858</span>  }<a name="line.858"></a>
-<span class="sourceLineNo">859</span><a name="line.859"></a>
-<span class="sourceLineNo">860</span>  private static void clearAndClose(List&lt;KeyValueScanner&gt; scanners) {<a name="line.860"></a>
-<span class="sourceLineNo">861</span>    for (KeyValueScanner s : scanners) {<a name="line.861"></a>
-<span class="sourceLineNo">862</span>      s.close();<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    }<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    scanners.clear();<a name="line.864"></a>
-<span class="sourceLineNo">865</span>  }<a name="line.865"></a>
-<span class="sourceLineNo">866</span><a name="line.866"></a>
-<span class="sourceLineNo">867</span>  // Implementation of ChangedReadersObserver<a name="line.867"></a>
-<span class="sourceLineNo">868</span>  @Override<a name="line.868"></a>
-<span class="sourceLineNo">869</span>  public void updateReaders(List&lt;HStoreFile&gt; sfs, List&lt;KeyValueScanner&gt; memStoreScanners)<a name="line.869"></a>
-<span class="sourceLineNo">870</span>      throws IOException {<a name="line.870"></a>
-<span class="sourceLineNo">871</span>    if (CollectionUtils.isEmpty(sfs) &amp;&amp; CollectionUtils.isEmpty(memStoreScanners)) {<a name="line.871"></a>
-<span class="sourceLineNo">872</span>      return;<a name="line.872"></a>
-<span class="sourceLineNo">873</span>    }<a name="line.873"></a>
-<span class="sourceLineNo">874</span>    flushLock.lock();<a name="line.874"></a>
-<span class="sourceLineNo">875</span>    try {<a name="line.875"></a>
-<span class="sourceLineNo">876</span>      flushed = true;<a name="line.876"></a>
-<span class="sourceLineNo">877</span>      final boolean isCompaction = false;<a name="line.877"></a>
-<span class="sourceLineNo">878</span>      boolean usePread = get || scanUsePread;<a name="line.878"></a>
-<span class="sourceLineNo">879</span>      // SEE HBASE-19468 where the flushed files are getting compacted even before a scanner<a name="line.879"></a>
-<span class="sourceLineNo">880</span>      // calls next(). So its better we create scanners here rather than next() call. Ensure<a name="line.880"></a>
-<span class="sourceLineNo">881</span>      // these scanners are properly closed() whether or not the scan is completed successfully<a name="line.881"></a>
-<span class="sourceLineNo">882</span>      // Eagerly creating scanners so that we have the ref counting ticking on the newly created<a name="line.882"></a>
-<span class="sourceLineNo">883</span>      // store files. In case of stream scanners this eager creation does not induce performance<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      // penalty because in scans (that uses stream scanners) the next() call is bound to happen.<a name="line.884"></a>
-<span class="sourceLineNo">885</span>      List&lt;KeyValueScanner&gt; scanners = store.getScanners(sfs, cacheBlocks, get, usePread,<a name="line.885"></a>
-<span class="sourceLineNo">886</span>        isCompaction, matcher, scan.getStartRow(), scan.getStopRow(), this.readPt, false);<a name="line.886"></a>
-<span class="sourceLineNo">887</span>      flushedstoreFileScanners.addAll(scanners);<a name="line.887"></a>
-<span class="sourceLineNo">888</span>      if (!CollectionUtils.isEmpty(memStoreScanners)) {<a name="line.888"></a>
-<span class="sourceLineNo">889</span>        clearAndClose(memStoreScannersAfterFlush);<a name="line.889"></a>
-<span class="sourceLineNo">890</span>        memStoreScannersAfterFlush.addAll(memStoreScanners);<a name="line.890"></a>
-<span class="sourceLineNo">891</span>      }<a name="line.891"></a>
-<span class="sourceLineNo">892</span>    } finally {<a name="line.892"></a>
-<span class="sourceLineNo">893</span>      flushLock.unlock();<a name="line.893"></a>
-<span class="sourceLineNo">894</span>    }<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    // Let the next() call handle re-creating and seeking<a name="line.895"></a>
-<span class="sourceLineNo">896</span>  }<a name="line.896"></a>
-<span class="sourceLineNo">897</span><a name="line.897"></a>
-<span class="sourceLineNo">898</span>  /**<a name="line.898"></a>
-<span class="sourceLineNo">899</span>   * @return if top of heap has changed (and KeyValueHeap has to try the next KV)<a name="line.899"></a>
-<span class="sourceLineNo">900</span>   */<a name="line.900"></a>
-<span class="sourceLineNo">901</span>  protected final boolean reopenAfterFlush() throws IOException {<a name="line.901"></a>
-<span class="sourceLineNo">902</span>    // here we can make sure that we have a Store instance so no null check on store.<a name="line.902"></a>
-<span class="sourceLineNo">903</span>    Cell lastTop = heap.peek();<a name="line.903"></a>
-<span class="sourceLineNo">904</span>    // When we have the scan object, should we not pass it to getScanners() to get a limited set of<a name="line.904"></a>
-<span class="sourceLineNo">905</span>    // scanners? We did so in the constructor and we could have done it now by storing the scan<a name="line.905"></a>
-<span class="sourceLineNo">906</span>    // object from the constructor<a name="line.906"></a>
-<span class="sourceLineNo">907</span>    List&lt;KeyValueScanner&gt; scanners;<a name="line.907"></a>
-<span class="sourceLineNo">908</span>    flushLock.lock();<a name="line.908"></a>
-<span class="sourceLineNo">909</span>    try {<a name="line.909"></a>
-<span class="sourceLineNo">910</span>      List&lt;KeyValueScanner&gt; allScanners =<a name="line.910"></a>
-<span class="sourceLineNo">911</span>          new ArrayList&lt;&gt;(flushedstoreFileScanners.size() + memStoreScannersAfterFlush.size());<a name="line.911"></a>
-<span class="sourceLineNo">912</span>      allScanners.addAll(flushedstoreFileScanners);<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      allScanners.addAll(memStoreScannersAfterFlush);<a name="line.913"></a>
-<span class="sourceLineNo">914</span>      scanners = selectScannersFrom(store, allScanners);<a name="line.914"></a>
-<span class="sourceLineNo">915</span>      // Clear the current set of flushed store files scanners so that they don't get added again<a name="line.915"></a>
-<span class="sourceLineNo">916</span>      flushedstoreFileScanners.clear();<a name="line.916"></a>
-<span class="sourceLineNo">917</span>      memStoreScannersAfterFlush.clear();<a name="line.917"></a>
-<span class="sourceLineNo">918</span>    } finally {<a name="line.918"></a>
-<span class="sourceLineNo">919</span>      flushLock.unlock();<a name="line.919"></a>
-<span class="sourceLineNo">920</span>    }<a name="line.920"></a>
-<span class="sourceLineNo">921</span><a name="line.921"></a>
-<span class="sourceLineNo">922</span>    // Seek the new scanners to the last key<a name="line.922"></a>
-<span class="sourceLineNo">923</span>    seekScanners(scanners, lastTop, false, parallelSeekEnabled);<a name="line.923"></a>
-<span class="sourceLineNo">924</span>    // remove the older memstore scanner<a name="line.924"></a>
-<span class="sourceLineNo">925</span>    for (int i = currentScanners.size() - 1; i &gt;=0; i--) {<a name="line.925"></a>
-<span class="sourceLineNo">926</span>      if (!currentScanners.get(i).isFileScanner()) {<a name="line.926"></a>
-<span class="sourceLineNo">927</span>        scannersForDelayedClose.add(currentScanners.remove(i));<a name="line.927"></a>
-<span class="sourceLineNo">928</span>      } else {<a name="line.928"></a>
-<span class="sourceLineNo">929</span>        // we add the memstore scanner to the end of currentScanners<a name="line.929"></a>
-<span class="sourceLineNo">930</span>        break;<a name="line.930"></a>
-<span class="sourceLineNo">931</span>      }<a name="line.931"></a>
-<span class="sourceLineNo">932</span>    }<a name="line.932"></a>
-<span class="sourceLineNo">933</span>    // add the newly created scanners on the flushed files and the current active memstore scanner<a name="line.933"></a>
-<span class="sourceLineNo">934</span>    addCurrentScanners(scanners);<a name="line.934"></a>
-<span class="sourceLineNo">935</span>    // Combine all seeked scanners with a heap<a name="line.935"></a>
-<span class="sourceLineNo">936</span>    resetKVHeap(this.currentScanners, store.getComparator());<a name="line.936"></a>
-<span class="sourceLineNo">937</span>    resetQueryMatcher(lastTop);<a name="line.937"></a>
-<span class="sourceLineNo">938</span>    if (heap.peek() == null || store.getComparator().compareRows(lastTop, this.heap.peek()) != 0) {<a name="line.938"></a>
-<span class="sourceLineNo">939</span>      LOG.info("Storescanner.peek() is changed where before = " + lastTop.toString() +<a name="line.939"></a>
-<span class="sourceLineNo">940</span>          ",and after = " + heap.peek());<a name="line.940"></a>
-<span class="sourceLineNo">941</span>      topChanged = true;<a name="line.941"></a>
-<span class="sourceLineNo">942</span>    } else {<a name="line.942"></a>
-<span class="sourceLineNo">943</span>      topChanged = false;<a name="line.943"></a>
-<span class="sourceLineNo">944</span>    }<a name="line.944"></a>
-<span class="sourceLineNo">945</span>    return topChanged;<a name="line.945"></a>
-<span class="sourceLineNo">946</span>  }<a name="line.946"></a>
-<span class="sourceLineNo">947</span><a name="line.947"></a>
-<span class="sourceLineNo">948</span>  private void resetQueryMatcher(Cell lastTopKey) {<a name="line.948"></a>
-<span class="sourceLineNo">949</span>    // Reset the state of the Query Matcher and set to top row.<a name="line.949"></a>
-<span class="sourceLineNo">950</span>    // Only reset and call setRow if the row changes; avoids confusing the<a name="line.950"></a>
-<span class="sourceLineNo">951</span>    // query matcher if scanning intra-row.<a name="line.951"></a>
-<span class="sourceLineNo">952</span>    Cell cell = heap.peek();<a name="line.952"></a>
-<span class="sourceLineNo">953</span>    if (cel

<TRUNCATED>

[07/29] hbase-site git commit: Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html
index 3dac70d..caa8b16 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html
@@ -7,120 +7,124 @@
 <body>
 <div class="sourceContainer">
 <pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
-<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one or more contributor license<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * agreements. See the NOTICE file distributed with this work for additional information regarding<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * "License"); you may not use this file except in compliance with the License. You may obtain a<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * law or agreed to in writing, software distributed under the License is distributed on an "AS IS"<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * for the specific language governing permissions and limitations under the License.<a name="line.9"></a>
-<span class="sourceLineNo">010</span> */<a name="line.10"></a>
-<span class="sourceLineNo">011</span><a name="line.11"></a>
-<span class="sourceLineNo">012</span>package org.apache.hadoop.hbase.master.balancer;<a name="line.12"></a>
-<span class="sourceLineNo">013</span><a name="line.13"></a>
-<span class="sourceLineNo">014</span>import static org.junit.Assert.assertEquals;<a name="line.14"></a>
-<span class="sourceLineNo">015</span><a name="line.15"></a>
-<span class="sourceLineNo">016</span>import java.util.Random;<a name="line.16"></a>
-<span class="sourceLineNo">017</span><a name="line.17"></a>
-<span class="sourceLineNo">018</span>import org.apache.commons.logging.Log;<a name="line.18"></a>
-<span class="sourceLineNo">019</span>import org.apache.commons.logging.LogFactory;<a name="line.19"></a>
-<span class="sourceLineNo">020</span>import org.apache.hadoop.conf.Configuration;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.MiniHBaseCluster;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.metrics2.MetricsSource;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.metrics2.MetricsTag;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.metrics2.lib.DefaultMetricsSystem;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.junit.AfterClass;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.junit.BeforeClass;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.junit.ClassRule;<a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.junit.Test;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.junit.experimental.categories.Category;<a name="line.33"></a>
-<span class="sourceLineNo">034</span><a name="line.34"></a>
-<span class="sourceLineNo">035</span>@Category({ MediumTests.class })<a name="line.35"></a>
-<span class="sourceLineNo">036</span>public class TestBalancerStatusTagInJMXMetrics extends BalancerTestBase {<a name="line.36"></a>
-<span class="sourceLineNo">037</span><a name="line.37"></a>
-<span class="sourceLineNo">038</span>  @ClassRule<a name="line.38"></a>
-<span class="sourceLineNo">039</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.39"></a>
-<span class="sourceLineNo">040</span>      HBaseClassTestRule.forClass(TestBalancerStatusTagInJMXMetrics.class);<a name="line.40"></a>
-<span class="sourceLineNo">041</span><a name="line.41"></a>
-<span class="sourceLineNo">042</span>  private static final Log LOG = LogFactory.getLog(TestBalancerStatusTagInJMXMetrics.class);<a name="line.42"></a>
-<span class="sourceLineNo">043</span>  private static HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.43"></a>
-<span class="sourceLineNo">044</span>  private static int connectorPort = 61120;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>  private static HMaster master;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>  private static MiniHBaseCluster cluster;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>  private static Configuration conf = null;<a name="line.47"></a>
-<span class="sourceLineNo">048</span><a name="line.48"></a>
-<span class="sourceLineNo">049</span>  /**<a name="line.49"></a>
-<span class="sourceLineNo">050</span>   * Setup the environment for the test.<a name="line.50"></a>
-<span class="sourceLineNo">051</span>   */<a name="line.51"></a>
-<span class="sourceLineNo">052</span>  @BeforeClass<a name="line.52"></a>
-<span class="sourceLineNo">053</span>  public static void setupBeforeClass() throws Exception {<a name="line.53"></a>
-<span class="sourceLineNo">054</span><a name="line.54"></a>
-<span class="sourceLineNo">055</span>    conf = UTIL.getConfiguration();<a name="line.55"></a>
-<span class="sourceLineNo">056</span>    Random rand = new Random();<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.57"></a>
-<span class="sourceLineNo">058</span>      do {<a name="line.58"></a>
-<span class="sourceLineNo">059</span>        int sign = i % 2 == 0 ? 1 : -1;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>        connectorPort += sign * rand.nextInt(100);<a name="line.60"></a>
-<span class="sourceLineNo">061</span>      } while (!HBaseTestingUtility.available(connectorPort));<a name="line.61"></a>
-<span class="sourceLineNo">062</span>      try {<a name="line.62"></a>
-<span class="sourceLineNo">063</span>        conf.setInt("regionserver.rmi.registry.port", connectorPort);<a name="line.63"></a>
-<span class="sourceLineNo">064</span>        cluster = UTIL.startMiniCluster();<a name="line.64"></a>
-<span class="sourceLineNo">065</span>        LOG.info("Waiting for active/ready master");<a name="line.65"></a>
-<span class="sourceLineNo">066</span>        cluster.waitForActiveAndReadyMaster();<a name="line.66"></a>
-<span class="sourceLineNo">067</span>        master = cluster.getMaster();<a name="line.67"></a>
-<span class="sourceLineNo">068</span>        break;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>      } catch (Exception e) {<a name="line.69"></a>
-<span class="sourceLineNo">070</span>        LOG.debug("Encountered exception when starting mini cluster. Trying port " + connectorPort,<a name="line.70"></a>
-<span class="sourceLineNo">071</span>          e);<a name="line.71"></a>
-<span class="sourceLineNo">072</span>        try {<a name="line.72"></a>
-<span class="sourceLineNo">073</span>          // this is to avoid "IllegalStateException: A mini-cluster is already running"<a name="line.73"></a>
-<span class="sourceLineNo">074</span>          UTIL.shutdownMiniCluster();<a name="line.74"></a>
-<span class="sourceLineNo">075</span>        } catch (Exception ex) {<a name="line.75"></a>
-<span class="sourceLineNo">076</span>          LOG.debug("Encountered exception shutting down cluster", ex);<a name="line.76"></a>
-<span class="sourceLineNo">077</span>        }<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      }<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    }<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  }<a name="line.80"></a>
-<span class="sourceLineNo">081</span><a name="line.81"></a>
-<span class="sourceLineNo">082</span>  @AfterClass<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  public static void tearDownAfterClass() throws Exception {<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    UTIL.shutdownMiniCluster();<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  }<a name="line.85"></a>
-<span class="sourceLineNo">086</span><a name="line.86"></a>
-<span class="sourceLineNo">087</span>  /**<a name="line.87"></a>
-<span class="sourceLineNo">088</span>   * Tests the status change using the Default Metrics System<a name="line.88"></a>
-<span class="sourceLineNo">089</span>   */<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  @Test<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  public void testJmxMetrics() throws Exception {<a name="line.91"></a>
-<span class="sourceLineNo">092</span><a name="line.92"></a>
-<span class="sourceLineNo">093</span>    assertEquals(getStatus(), "true");<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    master.getLoadBalancer().updateBalancerStatus(false);<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    assertEquals(getStatus(), "false");<a name="line.95"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.master.balancer;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import static org.junit.Assert.assertEquals;<a name="line.20"></a>
+<span class="sourceLineNo">021</span><a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.Random;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.conf.Configuration;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.MiniHBaseCluster;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.metrics2.MetricsSource;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.metrics2.MetricsTag;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.metrics2.lib.DefaultMetricsSystem;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.junit.AfterClass;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.junit.BeforeClass;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.junit.ClassRule;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.junit.Test;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.junit.experimental.categories.Category;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.slf4j.Logger;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.slf4j.LoggerFactory;<a name="line.38"></a>
+<span class="sourceLineNo">039</span><a name="line.39"></a>
+<span class="sourceLineNo">040</span>@Category({ MediumTests.class })<a name="line.40"></a>
+<span class="sourceLineNo">041</span>public class TestBalancerStatusTagInJMXMetrics extends BalancerTestBase {<a name="line.41"></a>
+<span class="sourceLineNo">042</span><a name="line.42"></a>
+<span class="sourceLineNo">043</span>  @ClassRule<a name="line.43"></a>
+<span class="sourceLineNo">044</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.44"></a>
+<span class="sourceLineNo">045</span>      HBaseClassTestRule.forClass(TestBalancerStatusTagInJMXMetrics.class);<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>  private static final Logger LOG = LoggerFactory.getLogger(TestBalancerStatusTagInJMXMetrics.class);<a name="line.47"></a>
+<span class="sourceLineNo">048</span>  private static HBaseTestingUtility UTIL = new HBaseTestingUtility();<a name="line.48"></a>
+<span class="sourceLineNo">049</span>  private static int connectorPort = 61120;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>  private static HMaster master;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  private static MiniHBaseCluster cluster;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  private static Configuration conf = null;<a name="line.52"></a>
+<span class="sourceLineNo">053</span><a name="line.53"></a>
+<span class="sourceLineNo">054</span>  /**<a name="line.54"></a>
+<span class="sourceLineNo">055</span>   * Setup the environment for the test.<a name="line.55"></a>
+<span class="sourceLineNo">056</span>   */<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  @BeforeClass<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  public static void setupBeforeClass() throws Exception {<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    conf = UTIL.getConfiguration();<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    Random rand = new Random();<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.61"></a>
+<span class="sourceLineNo">062</span>      do {<a name="line.62"></a>
+<span class="sourceLineNo">063</span>        int sign = i % 2 == 0 ? 1 : -1;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>        connectorPort += sign * rand.nextInt(100);<a name="line.64"></a>
+<span class="sourceLineNo">065</span>      } while (!HBaseTestingUtility.available(connectorPort));<a name="line.65"></a>
+<span class="sourceLineNo">066</span>      try {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>        conf.setInt("regionserver.rmi.registry.port", connectorPort);<a name="line.67"></a>
+<span class="sourceLineNo">068</span>        cluster = UTIL.startMiniCluster();<a name="line.68"></a>
+<span class="sourceLineNo">069</span>        LOG.info("Waiting for active/ready master");<a name="line.69"></a>
+<span class="sourceLineNo">070</span>        cluster.waitForActiveAndReadyMaster();<a name="line.70"></a>
+<span class="sourceLineNo">071</span>        master = cluster.getMaster();<a name="line.71"></a>
+<span class="sourceLineNo">072</span>        break;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      } catch (Exception e) {<a name="line.73"></a>
+<span class="sourceLineNo">074</span>        LOG.debug("Encountered exception when starting mini cluster. Trying port " + connectorPort,<a name="line.74"></a>
+<span class="sourceLineNo">075</span>          e);<a name="line.75"></a>
+<span class="sourceLineNo">076</span>        try {<a name="line.76"></a>
+<span class="sourceLineNo">077</span>          // this is to avoid "IllegalStateException: A mini-cluster is already running"<a name="line.77"></a>
+<span class="sourceLineNo">078</span>          UTIL.shutdownMiniCluster();<a name="line.78"></a>
+<span class="sourceLineNo">079</span>        } catch (Exception ex) {<a name="line.79"></a>
+<span class="sourceLineNo">080</span>          LOG.debug("Encountered exception shutting down cluster", ex);<a name="line.80"></a>
+<span class="sourceLineNo">081</span>        }<a name="line.81"></a>
+<span class="sourceLineNo">082</span>      }<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    }<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  }<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>  @AfterClass<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  public static void tearDownAfterClass() throws Exception {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    UTIL.shutdownMiniCluster();<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  }<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>  /**<a name="line.91"></a>
+<span class="sourceLineNo">092</span>   * Tests the status change using the Default Metrics System<a name="line.92"></a>
+<span class="sourceLineNo">093</span>   */<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  @Test<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  public void testJmxMetrics() throws Exception {<a name="line.95"></a>
 <span class="sourceLineNo">096</span><a name="line.96"></a>
-<span class="sourceLineNo">097</span>  }<a name="line.97"></a>
-<span class="sourceLineNo">098</span><a name="line.98"></a>
-<span class="sourceLineNo">099</span>  /**<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   * Gets the balancer status tag from the Metrics registry<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   */<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  public String getStatus() throws Exception {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    MetricsSource source =<a name="line.103"></a>
-<span class="sourceLineNo">104</span>        DefaultMetricsSystem.instance().getSource(MetricsBalancerSource.METRICS_JMX_CONTEXT);<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    if (source instanceof MetricsBalancerSourceImpl) {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      MetricsTag status = ((MetricsBalancerSourceImpl) source).getMetricsRegistry()<a name="line.106"></a>
-<span class="sourceLineNo">107</span>          .getTag(MetricsBalancerSource.BALANCER_STATUS);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      return status.value();<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    } else {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>      LOG.warn("Balancer JMX Metrics not registered");<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      throw new Exception("MetricsBalancer JMX Context not found");<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>  }<a name="line.113"></a>
-<span class="sourceLineNo">114</span><a name="line.114"></a>
-<span class="sourceLineNo">115</span>}<a name="line.115"></a>
+<span class="sourceLineNo">097</span>    assertEquals(getStatus(), "true");<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    master.getLoadBalancer().updateBalancerStatus(false);<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    assertEquals(getStatus(), "false");<a name="line.99"></a>
+<span class="sourceLineNo">100</span><a name="line.100"></a>
+<span class="sourceLineNo">101</span>  }<a name="line.101"></a>
+<span class="sourceLineNo">102</span><a name="line.102"></a>
+<span class="sourceLineNo">103</span>  /**<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   * Gets the balancer status tag from the Metrics registry<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
+<span class="sourceLineNo">106</span>  public String getStatus() throws Exception {<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    MetricsSource source =<a name="line.107"></a>
+<span class="sourceLineNo">108</span>        DefaultMetricsSystem.instance().getSource(MetricsBalancerSource.METRICS_JMX_CONTEXT);<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    if (source instanceof MetricsBalancerSourceImpl) {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      MetricsTag status = ((MetricsBalancerSourceImpl) source).getMetricsRegistry()<a name="line.110"></a>
+<span class="sourceLineNo">111</span>          .getTag(MetricsBalancerSource.BALANCER_STATUS);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      return status.value();<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    } else {<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      LOG.warn("Balancer JMX Metrics not registered");<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      throw new Exception("MetricsBalancer JMX Context not found");<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    }<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  }<a name="line.117"></a>
+<span class="sourceLineNo">118</span><a name="line.118"></a>
+<span class="sourceLineNo">119</span>}<a name="line.119"></a>
 
 
 


[15/29] hbase-site git commit: Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/org/apache/hadoop/hbase/client/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/client/package-tree.html
index 441e308..1b158d5 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -492,6 +492,7 @@
 </li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestGet.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestGet</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestGetProcedureResult.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestGetProcedureResult</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestGetScanColumnsWithNewVersionBehavior</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestGetScanPartialResult.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestGetScanPartialResult</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestHBaseAdminNoCluster.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestHBaseAdminNoCluster</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestHbck.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestHbck</span></a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html b/testdevapidocs/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html
index 40056b8..c93bd32 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.36">TestBalancerStatusTagInJMXMetrics</a>
+<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.41">TestBalancerStatusTagInJMXMetrics</a>
 extends <a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BalancerTestBase.html" title="class in org.apache.hadoop.hbase.master.balancer">BalancerTestBase</a></pre>
 </li>
 </ul>
@@ -166,7 +166,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/balancer/Balan
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#connectorPort">connectorPort</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>private static org.apache.commons.logging.Log</code></td>
+<td class="colFirst"><code>private static org.slf4j.Logger</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#LOG">LOG</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
@@ -273,7 +273,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/balancer/Balan
 <ul class="blockList">
 <li class="blockList">
 <h4>CLASS_RULE</h4>
-<pre>public static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.39">CLASS_RULE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.44">CLASS_RULE</a></pre>
 </li>
 </ul>
 <a name="LOG">
@@ -282,7 +282,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/balancer/Balan
 <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/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.42">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.47">LOG</a></pre>
 </li>
 </ul>
 <a name="UTIL">
@@ -291,7 +291,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/balancer/Balan
 <ul class="blockList">
 <li class="blockList">
 <h4>UTIL</h4>
-<pre>private static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.43">UTIL</a></pre>
+<pre>private static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.48">UTIL</a></pre>
 </li>
 </ul>
 <a name="connectorPort">
@@ -300,7 +300,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/balancer/Balan
 <ul class="blockList">
 <li class="blockList">
 <h4>connectorPort</h4>
-<pre>private static&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.44">connectorPort</a></pre>
+<pre>private static&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.49">connectorPort</a></pre>
 </li>
 </ul>
 <a name="master">
@@ -309,7 +309,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/balancer/Balan
 <ul class="blockList">
 <li class="blockList">
 <h4>master</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.master.HMaster <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.45">master</a></pre>
+<pre>private static&nbsp;org.apache.hadoop.hbase.master.HMaster <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.50">master</a></pre>
 </li>
 </ul>
 <a name="cluster">
@@ -318,7 +318,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/balancer/Balan
 <ul class="blockList">
 <li class="blockList">
 <h4>cluster</h4>
-<pre>private static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.46">cluster</a></pre>
+<pre>private static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.51">cluster</a></pre>
 </li>
 </ul>
 <a name="conf">
@@ -327,7 +327,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/balancer/Balan
 <ul class="blockListLast">
 <li class="blockList">
 <h4>conf</h4>
-<pre>private static&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.47">conf</a></pre>
+<pre>private static&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.52">conf</a></pre>
 </li>
 </ul>
 </li>
@@ -344,7 +344,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/balancer/Balan
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestBalancerStatusTagInJMXMetrics</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.36">TestBalancerStatusTagInJMXMetrics</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.41">TestBalancerStatusTagInJMXMetrics</a>()</pre>
 </li>
 </ul>
 </li>
@@ -361,7 +361,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/balancer/Balan
 <ul class="blockList">
 <li class="blockList">
 <h4>setupBeforeClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.53">setupBeforeClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.58">setupBeforeClass</a>()
                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Setup the environment for the test.</div>
 <dl>
@@ -376,7 +376,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/balancer/Balan
 <ul class="blockList">
 <li class="blockList">
 <h4>tearDownAfterClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.83">tearDownAfterClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.87">tearDownAfterClass</a>()
                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -390,7 +390,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/balancer/Balan
 <ul class="blockList">
 <li class="blockList">
 <h4>testJmxMetrics</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.91">testJmxMetrics</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.95">testJmxMetrics</a>()
                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Tests the status change using the Default Metrics System</div>
 <dl>
@@ -405,7 +405,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/balancer/Balan
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getStatus</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.102">getStatus</a>()
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.106">getStatus</a>()
                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <div class="block">Gets the balancer status tag from the Metrics registry</div>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/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 4e39e87..8080cd8 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -579,15 +579,15 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.Counter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">PerformanceEvaluation.Counter</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ResourceChecker.Phase.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ResourceChecker.Phase</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ScanPerformanceEvaluation.ScanCounter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ScanPerformanceEvaluation.ScanCounter</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestRegionReplicaPerf.Stat</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ACTION.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestDDLMasterFailover.ACTION</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/HBaseClusterManager.CommandProvider.Operation.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HBaseClusterManager.CommandProvider.Operation</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ResourceChecker.Phase.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ResourceChecker.Phase</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestRegionReplicaPerf.Stat</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ScanPerformanceEvaluation.ScanCounter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ScanPerformanceEvaluation.ScanCounter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterManager.ServiceType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterManager.ServiceType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.RoleCommand.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.RoleCommand</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.Counter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">PerformanceEvaluation.Counter</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ACTION.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestDDLMasterFailover.ACTION</span></a></li>
 </ul>
 </li>
 </ul>

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/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 533c1b2..b98fbe7 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -214,15 +214,20 @@ extends org.apache.hadoop.hbase.regionserver.StoreScanner</pre>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html#getNextIndexedKey--">getNextIndexedKey</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i1" class="rowColor">
+<td class="colFirst"><code>protected org.apache.hadoop.hbase.regionserver.KeyValueHeap</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html#newKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">newKVHeap</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends org.apache.hadoop.hbase.regionserver.KeyValueScanner&gt;&nbsp;scanners,
+         org.apache.hadoop.hbase.CellComparator&nbsp;comparator)</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html#resetKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">resetKVHeap</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends org.apache.hadoop.hbase.regionserver.KeyValueScanner&gt;&nbsp;scanners,
            org.apache.hadoop.hbase.CellComparator&nbsp;comparator)</code>&nbsp;</td>
 </tr>
-<tr id="i2" class="altColor">
+<tr id="i3" class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html#trySkipToNextColumn-org.apache.hadoop.hbase.Cell-">trySkipToNextColumn</a></span>(org.apache.hadoop.hbase.Cell&nbsp;cell)</code>&nbsp;</td>
 </tr>
-<tr id="i3" class="rowColor">
+<tr id="i4" class="altColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html#trySkipToNextRow-org.apache.hadoop.hbase.Cell-">trySkipToNextRow</a></span>(org.apache.hadoop.hbase.Cell&nbsp;cell)</code>&nbsp;</td>
 </tr>
@@ -349,13 +354,30 @@ extends org.apache.hadoop.hbase.regionserver.StoreScanner</pre>
 </dl>
 </li>
 </ul>
+<a name="newKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>newKVHeap</h4>
+<pre>protected&nbsp;org.apache.hadoop.hbase.regionserver.KeyValueHeap&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html#line.177">newKVHeap</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends org.apache.hadoop.hbase.regionserver.KeyValueScanner&gt;&nbsp;scanners,
+                                                                      org.apache.hadoop.hbase.CellComparator&nbsp;comparator)
+                                                               throws <a href="https://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>
+<dd><code>newKVHeap</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.regionserver.StoreScanner</code></dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
 <a name="trySkipToNextRow-org.apache.hadoop.hbase.Cell-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>trySkipToNextRow</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html#line.177">trySkipToNextRow</a>(org.apache.hadoop.hbase.Cell&nbsp;cell)
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html#line.183">trySkipToNextRow</a>(org.apache.hadoop.hbase.Cell&nbsp;cell)
                             throws <a href="https://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>
@@ -371,7 +393,7 @@ extends org.apache.hadoop.hbase.regionserver.StoreScanner</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>trySkipToNextColumn</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html#line.188">trySkipToNextColumn</a>(org.apache.hadoop.hbase.Cell&nbsp;cell)
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html#line.194">trySkipToNextColumn</a>(org.apache.hadoop.hbase.Cell&nbsp;cell)
                                throws <a href="https://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>
@@ -387,7 +409,7 @@ extends org.apache.hadoop.hbase.regionserver.StoreScanner</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getNextIndexedKey</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.Cell&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html#line.199">getNextIndexedKey</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.Cell&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html#line.205">getNextIndexedKey</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getNextIndexedKey</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.regionserver.KeyValueScanner</code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/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 36e891d..c22727e 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner.html
@@ -132,7 +132,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.252">TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.258">TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner</a>
 extends org.apache.hadoop.hbase.regionserver.StoreScanner</pre>
 </li>
 </ul>
@@ -217,7 +217,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, isScanUsePread, next, next, peek, reopenAfterFlush, reseek, resetKVHeap, seek, seekAsDirection, seekScanners, seekToNextRow, selectScannersFrom, shipped, trySkipToNextRow, trySwitchToStreamRead, updateReaders</code></li>
+<code>checkFlushed, checkScanOrder, close, enableLazySeekGlobally, getAllScannersForTesting, getEstimatedNumberOfKvsScanned, getReadPoint, isScanUsePread, newKVHeap, 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">
@@ -274,7 +274,7 @@ extends org.apache.hadoop.hbase.regionserver.StoreScanner</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>optimization</h4>
-<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner.html#line.254">optimization</a></pre>
+<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner.html#line.260">optimization</a></pre>
 </li>
 </ul>
 </li>
@@ -291,7 +291,7 @@ extends org.apache.hadoop.hbase.regionserver.StoreScanner</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CellWithVersionsNoOptimizeStoreScanner</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner.html#line.256">CellWithVersionsNoOptimizeStoreScanner</a>(org.apache.hadoop.hbase.client.Scan&nbsp;scan,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner.html#line.262">CellWithVersionsNoOptimizeStoreScanner</a>(org.apache.hadoop.hbase.client.Scan&nbsp;scan,
                                        org.apache.hadoop.hbase.regionserver.ScanInfo&nbsp;scanInfo)
                                 throws <a href="https://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>
@@ -314,7 +314,7 @@ extends org.apache.hadoop.hbase.regionserver.StoreScanner</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>trySkipToNextColumn</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner.html#line.263">trySkipToNextColumn</a>(org.apache.hadoop.hbase.Cell&nbsp;cell)
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner.html#line.269">trySkipToNextColumn</a>(org.apache.hadoop.hbase.Cell&nbsp;cell)
                                throws <a href="https://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>
@@ -330,7 +330,7 @@ extends org.apache.hadoop.hbase.regionserver.StoreScanner</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getNextIndexedKey</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.Cell&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner.html#line.274">getNextIndexedKey</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.Cell&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner.html#line.280">getNextIndexedKey</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getNextIndexedKey</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.regionserver.KeyValueScanner</code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/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 2f76db7..79aeebd 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsStoreScanner.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsStoreScanner.html
@@ -132,7 +132,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.223">TestStoreScanner.CellWithVersionsStoreScanner</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.229">TestStoreScanner.CellWithVersionsStoreScanner</a>
 extends org.apache.hadoop.hbase.regionserver.StoreScanner</pre>
 </li>
 </ul>
@@ -217,7 +217,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, isScanUsePread, next, next, peek, reopenAfterFlush, reseek, resetKVHeap, seek, seekAsDirection, seekScanners, seekToNextRow, selectScannersFrom, shipped, trySkipToNextRow, trySwitchToStreamRead, updateReaders</code></li>
+<code>checkFlushed, checkScanOrder, close, enableLazySeekGlobally, getAllScannersForTesting, getEstimatedNumberOfKvsScanned, getReadPoint, isScanUsePread, newKVHeap, 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">
@@ -274,7 +274,7 @@ extends org.apache.hadoop.hbase.regionserver.StoreScanner</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>optimization</h4>
-<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsStoreScanner.html#line.225">optimization</a></pre>
+<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsStoreScanner.html#line.231">optimization</a></pre>
 </li>
 </ul>
 </li>
@@ -291,7 +291,7 @@ extends org.apache.hadoop.hbase.regionserver.StoreScanner</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CellWithVersionsStoreScanner</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsStoreScanner.html#line.227">CellWithVersionsStoreScanner</a>(org.apache.hadoop.hbase.client.Scan&nbsp;scan,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsStoreScanner.html#line.233">CellWithVersionsStoreScanner</a>(org.apache.hadoop.hbase.client.Scan&nbsp;scan,
                              org.apache.hadoop.hbase.regionserver.ScanInfo&nbsp;scanInfo)
                       throws <a href="https://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>
@@ -314,7 +314,7 @@ extends org.apache.hadoop.hbase.regionserver.StoreScanner</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>trySkipToNextColumn</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsStoreScanner.html#line.234">trySkipToNextColumn</a>(org.apache.hadoop.hbase.Cell&nbsp;cell)
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsStoreScanner.html#line.240">trySkipToNextColumn</a>(org.apache.hadoop.hbase.Cell&nbsp;cell)
                                throws <a href="https://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>
@@ -330,7 +330,7 @@ extends org.apache.hadoop.hbase.regionserver.StoreScanner</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getNextIndexedKey</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.Cell&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsStoreScanner.html#line.245">getNextIndexedKey</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.hbase.Cell&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsStoreScanner.html#line.251">getNextIndexedKey</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>getNextIndexedKey</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.regionserver.KeyValueScanner</code></dd>


[22/29] hbase-site git commit: Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.DeleteVersionsNode.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.DeleteVersionsNode.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.DeleteVersionsNode.html
index 98f33b2..a2b1c10 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.DeleteVersionsNode.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.DeleteVersionsNode.html
@@ -285,26 +285,26 @@
 <span class="sourceLineNo">277</span><a name="line.277"></a>
 <span class="sourceLineNo">278</span>  @Override<a name="line.278"></a>
 <span class="sourceLineNo">279</span>  public MatchCode checkColumn(Cell cell, byte type) throws IOException {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    if (done()) {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      // No more columns left, we are done with this query<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      return ScanQueryMatcher.MatchCode.SEEK_NEXT_ROW; // done_row<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    }<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    if (columns != null) {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      while (columnIndex &lt; columns.length) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        int c = Bytes.compareTo(columns[columnIndex], 0, columns[columnIndex].length,<a name="line.286"></a>
-<span class="sourceLineNo">287</span>            cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength());<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        if (c &lt; 0) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>          columnIndex++;<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        } else if (c == 0) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          // We drop old version in #isDeleted, so here we must return INCLUDE.<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          return MatchCode.INCLUDE;<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        } else {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>          return MatchCode.SEEK_NEXT_COL;<a name="line.294"></a>
-<span class="sourceLineNo">295</span>        }<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      }<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      return MatchCode.SEEK_NEXT_ROW;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    }<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    return MatchCode.INCLUDE;<a name="line.299"></a>
+<span class="sourceLineNo">280</span>    if (columns == null) {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>        return MatchCode.INCLUDE;<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>    while (!done()) {<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      int c = CellUtil.compareQualifiers(cell,<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        columns[columnIndex], 0, columns[columnIndex].length);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      if (c &lt; 0) {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>        return MatchCode.SEEK_NEXT_COL;<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>      if (c == 0) {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        // We drop old version in #isDeleted, so here we must return INCLUDE.<a name="line.292"></a>
+<span class="sourceLineNo">293</span>        return MatchCode.INCLUDE;<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>      columnIndex++;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    }<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    // No more columns left, we are done with this query<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    return MatchCode.SEEK_NEXT_ROW;<a name="line.299"></a>
 <span class="sourceLineNo">300</span>  }<a name="line.300"></a>
 <span class="sourceLineNo">301</span><a name="line.301"></a>
 <span class="sourceLineNo">302</span>  @Override<a name="line.302"></a>
@@ -359,40 +359,37 @@
 <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 boolean done() {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    // lastCq* have been updated to this cell.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    return !(columns == null || lastCqArray == null) &amp;&amp; Bytes<a name="line.355"></a>
-<span class="sourceLineNo">356</span>        .compareTo(lastCqArray, lastCqOffset, lastCqLength, columns[columnIndex], 0,<a name="line.356"></a>
-<span class="sourceLineNo">357</span>            columns[columnIndex].length) &gt; 0;<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>  @Override<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  public ColumnCount getColumnHint() {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    if (columns != null) {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      if (columnIndex &lt; columns.length) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        return new ColumnCount(columns[columnIndex]);<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 null;<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
-<span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>  @Override<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  public MatchCode getNextRowOrNextColumn(Cell cell) {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    // TODO maybe we can optimize.<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    return MatchCode.SEEK_NEXT_COL;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  }<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>  @Override<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  public boolean isDone(long timestamp) {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    // We can not skip Cells with small ts.<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    return false;<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>  @Override<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  public CellComparator getCellComparator() {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    return this.comparator;<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  }<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>}<a name="line.387"></a>
+<span class="sourceLineNo">354</span>    return columns != null &amp;&amp; columnIndex &gt;= columns.length;<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 ColumnCount getColumnHint() {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    if (columns != null) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      if (columnIndex &lt; columns.length) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        return new ColumnCount(columns[columnIndex]);<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>    return null;<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>  @Override<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  public MatchCode getNextRowOrNextColumn(Cell cell) {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    // TODO maybe we can optimize.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    return MatchCode.SEEK_NEXT_COL;<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  }<a name="line.371"></a>
+<span class="sourceLineNo">372</span><a name="line.372"></a>
+<span class="sourceLineNo">373</span>  @Override<a name="line.373"></a>
+<span class="sourceLineNo">374</span>  public boolean isDone(long timestamp) {<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    // We can not skip Cells with small ts.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    return false;<a name="line.376"></a>
+<span class="sourceLineNo">377</span>  }<a name="line.377"></a>
+<span class="sourceLineNo">378</span><a name="line.378"></a>
+<span class="sourceLineNo">379</span>  @Override<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  public CellComparator getCellComparator() {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    return this.comparator;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  }<a name="line.382"></a>
+<span class="sourceLineNo">383</span><a name="line.383"></a>
+<span class="sourceLineNo">384</span>}<a name="line.384"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.html
index 98f33b2..a2b1c10 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.html
@@ -285,26 +285,26 @@
 <span class="sourceLineNo">277</span><a name="line.277"></a>
 <span class="sourceLineNo">278</span>  @Override<a name="line.278"></a>
 <span class="sourceLineNo">279</span>  public MatchCode checkColumn(Cell cell, byte type) throws IOException {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    if (done()) {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      // No more columns left, we are done with this query<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      return ScanQueryMatcher.MatchCode.SEEK_NEXT_ROW; // done_row<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    }<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    if (columns != null) {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      while (columnIndex &lt; columns.length) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        int c = Bytes.compareTo(columns[columnIndex], 0, columns[columnIndex].length,<a name="line.286"></a>
-<span class="sourceLineNo">287</span>            cell.getQualifierArray(), cell.getQualifierOffset(), cell.getQualifierLength());<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        if (c &lt; 0) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>          columnIndex++;<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        } else if (c == 0) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>          // We drop old version in #isDeleted, so here we must return INCLUDE.<a name="line.291"></a>
-<span class="sourceLineNo">292</span>          return MatchCode.INCLUDE;<a name="line.292"></a>
-<span class="sourceLineNo">293</span>        } else {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>          return MatchCode.SEEK_NEXT_COL;<a name="line.294"></a>
-<span class="sourceLineNo">295</span>        }<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      }<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      return MatchCode.SEEK_NEXT_ROW;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    }<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    return MatchCode.INCLUDE;<a name="line.299"></a>
+<span class="sourceLineNo">280</span>    if (columns == null) {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>        return MatchCode.INCLUDE;<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>    while (!done()) {<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      int c = CellUtil.compareQualifiers(cell,<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        columns[columnIndex], 0, columns[columnIndex].length);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      if (c &lt; 0) {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>        return MatchCode.SEEK_NEXT_COL;<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>      if (c == 0) {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        // We drop old version in #isDeleted, so here we must return INCLUDE.<a name="line.292"></a>
+<span class="sourceLineNo">293</span>        return MatchCode.INCLUDE;<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>      columnIndex++;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    }<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    // No more columns left, we are done with this query<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    return MatchCode.SEEK_NEXT_ROW;<a name="line.299"></a>
 <span class="sourceLineNo">300</span>  }<a name="line.300"></a>
 <span class="sourceLineNo">301</span><a name="line.301"></a>
 <span class="sourceLineNo">302</span>  @Override<a name="line.302"></a>
@@ -359,40 +359,37 @@
 <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 boolean done() {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    // lastCq* have been updated to this cell.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    return !(columns == null || lastCqArray == null) &amp;&amp; Bytes<a name="line.355"></a>
-<span class="sourceLineNo">356</span>        .compareTo(lastCqArray, lastCqOffset, lastCqLength, columns[columnIndex], 0,<a name="line.356"></a>
-<span class="sourceLineNo">357</span>            columns[columnIndex].length) &gt; 0;<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>  @Override<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  public ColumnCount getColumnHint() {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    if (columns != null) {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      if (columnIndex &lt; columns.length) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        return new ColumnCount(columns[columnIndex]);<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 null;<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  }<a name="line.368"></a>
-<span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>  @Override<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  public MatchCode getNextRowOrNextColumn(Cell cell) {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    // TODO maybe we can optimize.<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    return MatchCode.SEEK_NEXT_COL;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  }<a name="line.374"></a>
-<span class="sourceLineNo">375</span><a name="line.375"></a>
-<span class="sourceLineNo">376</span>  @Override<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  public boolean isDone(long timestamp) {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    // We can not skip Cells with small ts.<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    return false;<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>  @Override<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  public CellComparator getCellComparator() {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    return this.comparator;<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  }<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>}<a name="line.387"></a>
+<span class="sourceLineNo">354</span>    return columns != null &amp;&amp; columnIndex &gt;= columns.length;<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 ColumnCount getColumnHint() {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    if (columns != null) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      if (columnIndex &lt; columns.length) {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        return new ColumnCount(columns[columnIndex]);<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>    return null;<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>  @Override<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  public MatchCode getNextRowOrNextColumn(Cell cell) {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    // TODO maybe we can optimize.<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    return MatchCode.SEEK_NEXT_COL;<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  }<a name="line.371"></a>
+<span class="sourceLineNo">372</span><a name="line.372"></a>
+<span class="sourceLineNo">373</span>  @Override<a name="line.373"></a>
+<span class="sourceLineNo">374</span>  public boolean isDone(long timestamp) {<a name="line.374"></a>
+<span class="sourceLineNo">375</span>    // We can not skip Cells with small ts.<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    return false;<a name="line.376"></a>
+<span class="sourceLineNo">377</span>  }<a name="line.377"></a>
+<span class="sourceLineNo">378</span><a name="line.378"></a>
+<span class="sourceLineNo">379</span>  @Override<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  public CellComparator getCellComparator() {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    return this.comparator;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  }<a name="line.382"></a>
+<span class="sourceLineNo">383</span><a name="line.383"></a>
+<span class="sourceLineNo">384</span>}<a name="line.384"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/downloads.html
----------------------------------------------------------------------
diff --git a/downloads.html b/downloads.html
index e1f44e2..0272f8c 100644
--- a/downloads.html
+++ b/downloads.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20181222" />
+    <meta name="Date-Revision-yyyymmdd" content="20181225" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBase Downloads</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -463,7 +463,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-12-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-25</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/export_control.html
----------------------------------------------------------------------
diff --git a/export_control.html b/export_control.html
index 77d4889..0d35c76 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="20181222" />
+    <meta name="Date-Revision-yyyymmdd" content="20181225" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Export Control
@@ -341,7 +341,7 @@ for more details.</p>
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-12-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-25</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index 9c725b2..b17bbc2 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="20181222" />
+    <meta name="Date-Revision-yyyymmdd" content="20181225" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBaseâ„¢ Home</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -421,7 +421,7 @@ Apache HBase is an open-source, distributed, versioned, non-relational database
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-12-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-25</li>
             </p>
                 </div>
 

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/issue-tracking.html
----------------------------------------------------------------------
diff --git a/issue-tracking.html b/issue-tracking.html
index 45569d6..e668ef9 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="20181222" />
+    <meta name="Date-Revision-yyyymmdd" content="20181225" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -298,7 +298,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-12-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-25</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/license.html
----------------------------------------------------------------------
diff --git a/license.html b/license.html
index 1ed7cb2..8e2e75b 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="20181222" />
+    <meta name="Date-Revision-yyyymmdd" content="20181225" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -501,7 +501,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-12-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-25</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/mail-lists.html
----------------------------------------------------------------------
diff --git a/mail-lists.html b/mail-lists.html
index e30c66a..d4147f2 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="20181222" />
+    <meta name="Date-Revision-yyyymmdd" content="20181225" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -351,7 +351,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-12-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-25</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/metrics.html
----------------------------------------------------------------------
diff --git a/metrics.html b/metrics.html
index b593591..4134502 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="20181222" />
+    <meta name="Date-Revision-yyyymmdd" content="20181225" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) Metrics
@@ -469,7 +469,7 @@ export HBASE_REGIONSERVER_OPTS=&quot;$HBASE_JMX_OPTS -Dcom.sun.management.jmxrem
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-12-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-25</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/old_news.html
----------------------------------------------------------------------
diff --git a/old_news.html b/old_news.html
index 8faa43a..46c67b5 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="20181222" />
+    <meta name="Date-Revision-yyyymmdd" content="20181225" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Old Apache HBase (TM) News
@@ -450,7 +450,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-12-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-25</li>
             </p>
                 </div>
 

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/plugins.html
----------------------------------------------------------------------
diff --git a/plugins.html b/plugins.html
index be1d3d6..fa1e06b 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="20181222" />
+    <meta name="Date-Revision-yyyymmdd" content="20181225" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -308,8 +308,8 @@
 <td>2.8.2</td></tr>
 <tr class="a">
 <td>org.apache.maven.plugins</td>
-<td><a class="externalLink" href="http://maven.apache.org/enforcer/maven-enforcer-plugin/">maven-enforcer-plugin</a></td>
-<td>3.0.0-M1</td></tr>
+<td><a class="externalLink" href="https://maven.apache.org/enforcer/maven-enforcer-plugin/">maven-enforcer-plugin</a></td>
+<td>3.0.0-M2</td></tr>
 <tr class="b">
 <td>org.apache.maven.plugins</td>
 <td><a class="externalLink" href="http://maven.apache.org/plugins/maven-install-plugin/">maven-install-plugin</a></td>
@@ -381,7 +381,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-12-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-25</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/poweredbyhbase.html
----------------------------------------------------------------------
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index 5cd9e8c..96c5af0 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="20181222" />
+    <meta name="Date-Revision-yyyymmdd" content="20181225" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Powered By Apache HBase™</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -779,7 +779,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-12-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-25</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/project-info.html
----------------------------------------------------------------------
diff --git a/project-info.html b/project-info.html
index 1c0a423..e08c5fe 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="20181222" />
+    <meta name="Date-Revision-yyyymmdd" content="20181225" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -345,7 +345,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-12-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-25</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/project-reports.html
----------------------------------------------------------------------
diff --git a/project-reports.html b/project-reports.html
index 61934d6..969968d 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="20181222" />
+    <meta name="Date-Revision-yyyymmdd" content="20181225" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -315,7 +315,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-12-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-25</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/project-summary.html
----------------------------------------------------------------------
diff --git a/project-summary.html b/project-summary.html
index 5094f54..63cb5a5 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="20181222" />
+    <meta name="Date-Revision-yyyymmdd" content="20181225" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -341,7 +341,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-12-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-25</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/pseudo-distributed.html
----------------------------------------------------------------------
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index 0b84a04..67f341b 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="20181222" />
+    <meta name="Date-Revision-yyyymmdd" content="20181225" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
 Running Apache HBase (TM) in pseudo-distributed mode
@@ -318,7 +318,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-12-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-25</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/replication.html
----------------------------------------------------------------------
diff --git a/replication.html b/replication.html
index dbca3b0..28f4e38 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="20181222" />
+    <meta name="Date-Revision-yyyymmdd" content="20181225" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Apache HBase (TM) Replication
@@ -313,7 +313,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-12-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-25</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/resources.html
----------------------------------------------------------------------
diff --git a/resources.html b/resources.html
index e454e03..f8237ad 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="20181222" />
+    <meta name="Date-Revision-yyyymmdd" content="20181225" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Other Apache HBase (TM) Resources</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -341,7 +341,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-12-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-25</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/source-repository.html
----------------------------------------------------------------------
diff --git a/source-repository.html b/source-repository.html
index d63a1b6..8825950 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="20181222" />
+    <meta name="Date-Revision-yyyymmdd" content="20181225" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -309,7 +309,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-12-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-25</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/sponsors.html
----------------------------------------------------------------------
diff --git a/sponsors.html b/sponsors.html
index 3eb4f72..a5f132c 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="20181222" />
+    <meta name="Date-Revision-yyyymmdd" content="20181225" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBase™ Sponsors</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -343,7 +343,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-12-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-25</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/supportingprojects.html
----------------------------------------------------------------------
diff --git a/supportingprojects.html b/supportingprojects.html
index 289c025..3fbd4cd 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="20181222" />
+    <meta name="Date-Revision-yyyymmdd" content="20181225" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Supporting Projects</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -530,7 +530,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-12-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-25</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/team-list.html
----------------------------------------------------------------------
diff --git a/team-list.html b/team-list.html
index 39c1f29..182aea6 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="20181222" />
+    <meta name="Date-Revision-yyyymmdd" content="20181225" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -776,7 +776,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-12-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-25</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/testapidocs/index-all.html b/testapidocs/index-all.html
index 864b4fb..6994bfb 100644
--- a/testapidocs/index-all.html
+++ b/testapidocs/index-all.html
@@ -827,6 +827,11 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/MiniHBaseCluster.html#isKilledRS-org.apache.hadoop.hbase.ServerName-">isKilledRS(ServerName)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HBaseTestingUtility.html#isNewVersionBehaviorEnabled--">isNewVersionBehaviorEnabled()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></dt>
+<dd>
+<div class="block">Check whether the tests should assume NEW_VERSION_BEHAVIOR when creating
+  new column families.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HBaseTestingUtility.html#isReadShortCircuitOn--">isReadShortCircuitOn()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></dt>
 <dd>
 <div class="block">Get the HBase setting for dfs.client.read.shortcircuit from the conf or a system property.</div>


[27/29] hbase-site git commit: Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/checkstyle.rss
----------------------------------------------------------------------
diff --git a/checkstyle.rss b/checkstyle.rss
index eb7249b..ecd03fd 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -25,8 +25,8 @@ under the License.
     <language>en-us</language>
     <copyright>&#169;2007 - 2018 The Apache Software Foundation</copyright>
     <item>
-      <title>File: 3823,
-             Errors: 14661,
+      <title>File: 3824,
+             Errors: 14671,
              Warnings: 0,
              Infos: 0
       </title>
@@ -2281,7 +2281,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  3
+                  0
                 </td>
               </tr>
                           <tr>
@@ -30883,7 +30883,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  20
+                  21
                 </td>
               </tr>
                           <tr>
@@ -32269,7 +32269,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  224
+                  231
                 </td>
               </tr>
                           <tr>
@@ -42377,7 +42377,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  0
+                  1
                 </td>
               </tr>
                           <tr>
@@ -45378,6 +45378,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestGetScanColumnsWithNewVersionBehavior.java">org/apache/hadoop/hbase/client/TestGetScanColumnsWithNewVersionBehavior.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  5
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.ipc.TestBlockingIPC.java">org/apache/hadoop/hbase/ipc/TestBlockingIPC.java</a>
                 </td>
                 <td>
@@ -51071,7 +51085,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  2
+                  1
                 </td>
               </tr>
                           <tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/coc.html
----------------------------------------------------------------------
diff --git a/coc.html b/coc.html
index bb1d8c4..9ea987e 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="20181222" />
+    <meta name="Date-Revision-yyyymmdd" content="20181225" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Code of Conduct Policy
@@ -385,7 +385,7 @@ email to <a class="externalLink" href="mailto:private@hbase.apache.org">the priv
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-12-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-25</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index 2c13b37..97a4c42 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="20181222" />
+    <meta name="Date-Revision-yyyymmdd" content="20181225" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -450,7 +450,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-12-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-25</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 0495d99..f471a82 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="20181222" />
+    <meta name="Date-Revision-yyyymmdd" content="20181225" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -680,7 +680,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-12-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-25</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index 1892109..aae0f93 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="20181222" />
+    <meta name="Date-Revision-yyyymmdd" content="20181225" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -323,7 +323,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-12-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-25</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index 5d2aece..b265fb1 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="20181222" />
+    <meta name="Date-Revision-yyyymmdd" content="20181225" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -1009,7 +1009,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-12-22</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-25</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/devapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index 20ff569..96d777c 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -3831,7 +3831,7 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#date">date</a></code></td>
-<td class="colLast"><code>"Sat Dec 22 22:11:06 UTC 2018"</code></td>
+<td class="colLast"><code>"Tue Dec 25 14:42:07 UTC 2018"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.revision">
@@ -3845,7 +3845,7 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#srcChecksum">srcChecksum</a></code></td>
-<td class="colLast"><code>"ba9c30be5b2d28bbfa84e79c98132456"</code></td>
+<td class="colLast"><code>"d03152c0541006f4439c608cf8ff910c"</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/70f4ddbc/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index 70d4776..8235339 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -78119,6 +78119,10 @@
 <dd>
 <div class="block">Returns a brand new instance of the FileSystem.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#newKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">newKVHeap(List&lt;? extends KeyValueScanner&gt;, CellComparator)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">ReversedStoreScanner</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreScanner.html#newKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">newKVHeap(List&lt;? extends KeyValueScanner&gt;, CellComparator)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreScanner</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html#newMasterCaller--">newMasterCaller()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.html" title="class in org.apache.hadoop.hbase.client">RawAsyncHBaseAdmin</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html#newMetric-java.lang.Class-java.lang.String-java.lang.String-">newMetric(Class&lt;?&gt;, String, String)</a></span> - Method in interface org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/MetricsConnection.NewMetric.html" title="interface in org.apache.hadoop.hbase.client">MetricsConnection.NewMetric</a></dt>
@@ -95412,8 +95416,6 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/visibility/VisibilityNewVersionBehaivorTracker.html#resetInternal--">resetInternal()</a></span> - Method in class org.apache.hadoop.hbase.security.visibility.<a href="org/apache/hadoop/hbase/security/visibility/VisibilityNewVersionBehaivorTracker.html" title="class in org.apache.hadoop.hbase.security.visibility">VisibilityNewVersionBehaivorTracker</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#resetKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">resetKVHeap(List&lt;? extends KeyValueScanner&gt;, CellComparator)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">ReversedStoreScanner</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreScanner.html#resetKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">resetKVHeap(List&lt;? extends KeyValueScanner&gt;, CellComparator)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreScanner</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ConnectionImplementation.html#resetMasterServiceState-org.apache.hadoop.hbase.client.ConnectionImplementation.MasterServiceState-">resetMasterServiceState(ConnectionImplementation.MasterServiceState)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ConnectionImplementation.html" title="class in org.apache.hadoop.hbase.client">ConnectionImplementation</a></dt>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/devapidocs/org/apache/hadoop/hbase/class-use/CellComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/CellComparator.html b/devapidocs/org/apache/hadoop/hbase/class-use/CellComparator.html
index 710c743..8569daa 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/CellComparator.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/CellComparator.html
@@ -800,21 +800,26 @@
 </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="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
-           <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>
+<td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a></code></td>
+<td class="colLast"><span class="typeNameLabel">StoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#newKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">newKVHeap</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
+         <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ReversedStoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#newKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">newKVHeap</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
+         <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><span class="typeNameLabel">ReversedStoreScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#resetKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">resetKVHeap</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
+<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="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
            <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">HRegion.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#sort-java.util.List-org.apache.hadoop.hbase.CellComparator-">sort</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;cells,
     <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter.Builder</a></code></td>
 <td class="colLast"><span class="typeNameLabel">StoreFileWriter.Builder.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.Builder.html#withComparator-org.apache.hadoop.hbase.CellComparator-">withComparator</a></span>(<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/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 e43ce59..3281526 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -555,24 +555,24 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/CompactionState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactionState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncProcessTask.SubmittedRows.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncProcessTask.SubmittedRows</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/Durability.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Durability</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AbstractResponse.ResponseType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AbstractResponse.ResponseType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Scan.ReadType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/ScannerCallable.MoreResults.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">ScannerCallable.MoreResults</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Consistency</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RequestController.ReturnCode.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RequestController.ReturnCode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TableState.State.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">TableState.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MasterSwitchType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MasterSwitchType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/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/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/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/SnapshotType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">SnapshotType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Scan.ReadType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/RegionLocateType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RegionLocateType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">IsolationLevel</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Consistency</span></a></li>
 </ul>
 </li>
 </ul>

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

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

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/devapidocs/org/apache/hadoop/hbase/master/DeadServer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/DeadServer.html b/devapidocs/org/apache/hadoop/hbase/master/DeadServer.html
index 4fb8e03..47b63f6 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/DeadServer.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/DeadServer.html
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.47">DeadServer</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.46">DeadServer</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Class to hold dead servers list and utility querying dead server list.
  On znode expiration, servers are added here.</div>
@@ -289,7 +289,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.48">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.47">LOG</a></pre>
 </li>
 </ul>
 <a name="deadServers">
@@ -298,7 +298,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>deadServers</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.57">deadServers</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.56">deadServers</a></pre>
 <div class="block">Set of known dead servers.  On znode expiration, servers are added here.
  This is needed in case of a network partitioning where the server's lease
  expires, but the server is still running. After the network is healed,
@@ -312,7 +312,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>processingServers</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.62">processingServers</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.61">processingServers</a></pre>
 <div class="block">Set of dead servers currently being processed</div>
 </li>
 </ul>
@@ -322,7 +322,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ServerNameDeathDateComparator</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.238">ServerNameDeathDateComparator</a></pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.237">ServerNameDeathDateComparator</a></pre>
 </li>
 </ul>
 </li>
@@ -339,7 +339,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>DeadServer</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.47">DeadServer</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.46">DeadServer</a>()</pre>
 </li>
 </ul>
 </li>
@@ -356,7 +356,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>cleanPreviousInstance</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.72">cleanPreviousInstance</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;newServerName)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.71">cleanPreviousInstance</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;newServerName)</pre>
 <div class="block">A dead server that comes back alive has a different start code. The new start code should be
   greater than the old one, but we don't take this into account in this method.</div>
 <dl>
@@ -374,7 +374,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>isDeadServer</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.95">isDeadServer</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.94">isDeadServer</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>serverName</code> - server name.</dd>
@@ -389,7 +389,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>isProcessingServer</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.103">isProcessingServer</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.102">isProcessingServer</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>serverName</code> - server name.</dd>
@@ -404,7 +404,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>areDeadServersInProgress</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.114">areDeadServersInProgress</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.113">areDeadServersInProgress</a>()</pre>
 <div class="block">Checks if there are currently any dead servers being processed by the
  master.  Returns true if at least one region server is currently being
  processed as dead.</div>
@@ -420,7 +420,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>copyServerNames</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.118">copyServerNames</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.117">copyServerNames</a>()</pre>
 </li>
 </ul>
 <a name="add-org.apache.hadoop.hbase.ServerName-">
@@ -429,7 +429,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>add</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.128">add</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.127">add</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</pre>
 <div class="block">Adds the server to the dead server list if it's not there already.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -443,7 +443,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>notifyServer</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.142">notifyServer</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.141">notifyServer</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</pre>
 <div class="block">Notify that we started processing this dead server.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -457,7 +457,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>finish</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.156">finish</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.155">finish</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</pre>
 <div class="block">Complete processing for this dead server.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -471,7 +471,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>size</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.166">size</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.165">size</a>()</pre>
 </li>
 </ul>
 <a name="isEmpty--">
@@ -480,7 +480,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>isEmpty</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.170">isEmpty</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.169">isEmpty</a>()</pre>
 </li>
 </ul>
 <a name="cleanAllPreviousInstances-org.apache.hadoop.hbase.ServerName-">
@@ -489,7 +489,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>cleanAllPreviousInstances</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.174">cleanAllPreviousInstances</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;newServerName)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.173">cleanAllPreviousInstances</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;newServerName)</pre>
 </li>
 </ul>
 <a name="toString--">
@@ -498,7 +498,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.191">toString</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.190">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -511,7 +511,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>copyDeadServersSince</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.215">copyDeadServersSince</a>(long&nbsp;ts)</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.214">copyDeadServersSince</a>(long&nbsp;ts)</pre>
 <div class="block">Extract all the servers dead since a given time, and sort them.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -527,7 +527,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getTimeOfDeath</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Date.html?is-external=true" title="class or interface in java.util">Date</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.233">getTimeOfDeath</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;deadServerName)</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Date.html?is-external=true" title="class or interface in java.util">Date</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.232">getTimeOfDeath</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;deadServerName)</pre>
 <div class="block">Get the time when a server died</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -543,7 +543,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>removeDeadServer</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.253">removeDeadServer</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;deadServerName)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.252">removeDeadServer</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;deadServerName)</pre>
 <div class="block">remove the specified dead server</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/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 7233679..4ac6286 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
@@ -347,10 +347,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MasterRpcServices.BalanceSwitchMode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.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/MetricsMasterSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MetricsMasterSourceFactoryImpl.FactoryStorage</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.ResubmitDirective.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.ResubmitDirective</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.TerminationStatus.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.TerminationStatus</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MasterRpcServices.BalanceSwitchMode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">RegionState.State</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/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 c26b4e4..7f2f735 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
@@ -215,9 +215,9 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerProcedureInterface.PeerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">PeerProcedureInterface.PeerOperationType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">TableProcedureInterface.TableOperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.ServerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">ServerProcedureInterface.ServerOperationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">TableProcedureInterface.TableOperationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/PeerProcedureInterface.PeerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">PeerProcedureInterface.PeerOperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MetaProcedureInterface.MetaOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">MetaProcedureInterface.MetaOperationType</span></a></li>
 </ul>
 </li>

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/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 98a4582..e9afa93 100644
--- a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
@@ -230,12 +230,12 @@
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaScope.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaScope</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/RpcThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">RpcThrottlingException.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">OperationQuota.OperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/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/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/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/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/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">OperationQuota.OperationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceViolationPolicy.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">SpaceViolationPolicy</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/RpcThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">RpcThrottlingException.Type</span></a></li>
 </ul>
 </li>
 </ul>


[20/29] hbase-site git commit: Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html
----------------------------------------------------------------------
diff --git a/testapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html b/testapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html
index 5c3d7f4..ef2cd13 100644
--- a/testapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html
+++ b/testapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html
@@ -721,3236 +721,3236 @@
 <span class="sourceLineNo">713</span>      new Path(root, "mapreduce-am-staging-root-dir").toString());<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>  /**<a name="line.717"></a>
-<span class="sourceLineNo">718</span>   *  Get the HBase setting for dfs.client.read.shortcircuit from the conf or a system property.<a name="line.718"></a>
-<span class="sourceLineNo">719</span>   *  This allows to specify this parameter on the command line.<a name="line.719"></a>
-<span class="sourceLineNo">720</span>   *   If not set, default is true.<a name="line.720"></a>
-<span class="sourceLineNo">721</span>   */<a name="line.721"></a>
-<span class="sourceLineNo">722</span>  public boolean isReadShortCircuitOn(){<a name="line.722"></a>
-<span class="sourceLineNo">723</span>    final String propName = "hbase.tests.use.shortcircuit.reads";<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    String readOnProp = System.getProperty(propName);<a name="line.724"></a>
-<span class="sourceLineNo">725</span>    if (readOnProp != null){<a name="line.725"></a>
-<span class="sourceLineNo">726</span>      return  Boolean.parseBoolean(readOnProp);<a name="line.726"></a>
-<span class="sourceLineNo">727</span>    } else {<a name="line.727"></a>
-<span class="sourceLineNo">728</span>      return conf.getBoolean(propName, false);<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><a name="line.731"></a>
-<span class="sourceLineNo">732</span>  /** Enable the short circuit read, unless configured differently.<a name="line.732"></a>
-<span class="sourceLineNo">733</span>   * Set both HBase and HDFS settings, including skipping the hdfs checksum checks.<a name="line.733"></a>
-<span class="sourceLineNo">734</span>   */<a name="line.734"></a>
-<span class="sourceLineNo">735</span>  private void enableShortCircuit() {<a name="line.735"></a>
-<span class="sourceLineNo">736</span>    if (isReadShortCircuitOn()) {<a name="line.736"></a>
-<span class="sourceLineNo">737</span>      String curUser = System.getProperty("user.name");<a name="line.737"></a>
-<span class="sourceLineNo">738</span>      LOG.info("read short circuit is ON for user " + curUser);<a name="line.738"></a>
-<span class="sourceLineNo">739</span>      // read short circuit, for hdfs<a name="line.739"></a>
-<span class="sourceLineNo">740</span>      conf.set("dfs.block.local-path-access.user", curUser);<a name="line.740"></a>
-<span class="sourceLineNo">741</span>      // read short circuit, for hbase<a name="line.741"></a>
-<span class="sourceLineNo">742</span>      conf.setBoolean("dfs.client.read.shortcircuit", true);<a name="line.742"></a>
-<span class="sourceLineNo">743</span>      // Skip checking checksum, for the hdfs client and the datanode<a name="line.743"></a>
-<span class="sourceLineNo">744</span>      conf.setBoolean("dfs.client.read.shortcircuit.skip.checksum", true);<a name="line.744"></a>
-<span class="sourceLineNo">745</span>    } else {<a name="line.745"></a>
-<span class="sourceLineNo">746</span>      LOG.info("read short circuit is OFF");<a name="line.746"></a>
-<span class="sourceLineNo">747</span>    }<a name="line.747"></a>
-<span class="sourceLineNo">748</span>  }<a name="line.748"></a>
-<span class="sourceLineNo">749</span><a name="line.749"></a>
-<span class="sourceLineNo">750</span>  private String createDirAndSetProperty(final String relPath, String property) {<a name="line.750"></a>
-<span class="sourceLineNo">751</span>    String path = getDataTestDir(relPath).toString();<a name="line.751"></a>
-<span class="sourceLineNo">752</span>    System.setProperty(property, path);<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    conf.set(property, path);<a name="line.753"></a>
-<span class="sourceLineNo">754</span>    new File(path).mkdirs();<a name="line.754"></a>
-<span class="sourceLineNo">755</span>    LOG.info("Setting " + property + " to " + path + " in system properties and HBase conf");<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    return path;<a name="line.756"></a>
-<span class="sourceLineNo">757</span>  }<a name="line.757"></a>
-<span class="sourceLineNo">758</span><a name="line.758"></a>
-<span class="sourceLineNo">759</span>  /**<a name="line.759"></a>
-<span class="sourceLineNo">760</span>   * Shuts down instance created by call to {@link #startMiniDFSCluster(int)}<a name="line.760"></a>
-<span class="sourceLineNo">761</span>   * or does nothing.<a name="line.761"></a>
-<span class="sourceLineNo">762</span>   * @throws IOException<a name="line.762"></a>
-<span class="sourceLineNo">763</span>   */<a name="line.763"></a>
-<span class="sourceLineNo">764</span>  public void shutdownMiniDFSCluster() throws IOException {<a name="line.764"></a>
-<span class="sourceLineNo">765</span>    if (this.dfsCluster != null) {<a name="line.765"></a>
-<span class="sourceLineNo">766</span>      // The below throws an exception per dn, AsynchronousCloseException.<a name="line.766"></a>
-<span class="sourceLineNo">767</span>      this.dfsCluster.shutdown();<a name="line.767"></a>
-<span class="sourceLineNo">768</span>      dfsCluster = null;<a name="line.768"></a>
-<span class="sourceLineNo">769</span>      dataTestDirOnTestFS = null;<a name="line.769"></a>
-<span class="sourceLineNo">770</span>      FSUtils.setFsDefault(this.conf, new Path("file:///"));<a name="line.770"></a>
-<span class="sourceLineNo">771</span>    }<a name="line.771"></a>
-<span class="sourceLineNo">772</span>  }<a name="line.772"></a>
-<span class="sourceLineNo">773</span><a name="line.773"></a>
-<span class="sourceLineNo">774</span>  /**<a name="line.774"></a>
-<span class="sourceLineNo">775</span>   * Start up a minicluster of hbase, dfs, and zookeeper where WAL's walDir is created separately.<a name="line.775"></a>
-<span class="sourceLineNo">776</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.776"></a>
-<span class="sourceLineNo">777</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.777"></a>
-<span class="sourceLineNo">778</span>   * @return The mini HBase cluster created.<a name="line.778"></a>
-<span class="sourceLineNo">779</span>   * @see #shutdownMiniCluster()<a name="line.779"></a>
-<span class="sourceLineNo">780</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.780"></a>
-<span class="sourceLineNo">781</span>   */<a name="line.781"></a>
-<span class="sourceLineNo">782</span>  @Deprecated<a name="line.782"></a>
-<span class="sourceLineNo">783</span>  public MiniHBaseCluster startMiniCluster(boolean createWALDir) throws Exception {<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.784"></a>
-<span class="sourceLineNo">785</span>        .createWALDir(createWALDir).build();<a name="line.785"></a>
-<span class="sourceLineNo">786</span>    return startMiniCluster(option);<a name="line.786"></a>
-<span class="sourceLineNo">787</span>  }<a name="line.787"></a>
-<span class="sourceLineNo">788</span><a name="line.788"></a>
-<span class="sourceLineNo">789</span>  /**<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.791"></a>
-<span class="sourceLineNo">792</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.792"></a>
-<span class="sourceLineNo">793</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.793"></a>
-<span class="sourceLineNo">794</span>   * @return The mini HBase cluster created.<a name="line.794"></a>
-<span class="sourceLineNo">795</span>   * @see #shutdownMiniCluster()<a name="line.795"></a>
-<span class="sourceLineNo">796</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.796"></a>
-<span class="sourceLineNo">797</span>   */<a name="line.797"></a>
-<span class="sourceLineNo">798</span>  @Deprecated<a name="line.798"></a>
-<span class="sourceLineNo">799</span>  public MiniHBaseCluster startMiniCluster(int numSlaves, boolean createRootDir)<a name="line.799"></a>
-<span class="sourceLineNo">800</span>  throws Exception {<a name="line.800"></a>
-<span class="sourceLineNo">801</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.801"></a>
-<span class="sourceLineNo">802</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).createRootDir(createRootDir).build();<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    return startMiniCluster(option);<a name="line.803"></a>
-<span class="sourceLineNo">804</span>  }<a name="line.804"></a>
-<span class="sourceLineNo">805</span><a name="line.805"></a>
-<span class="sourceLineNo">806</span>  /**<a name="line.806"></a>
-<span class="sourceLineNo">807</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.807"></a>
-<span class="sourceLineNo">808</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.808"></a>
-<span class="sourceLineNo">809</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.809"></a>
-<span class="sourceLineNo">810</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.810"></a>
-<span class="sourceLineNo">811</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.811"></a>
-<span class="sourceLineNo">812</span>   * @return The mini HBase cluster created.<a name="line.812"></a>
-<span class="sourceLineNo">813</span>   * @see #shutdownMiniCluster()<a name="line.813"></a>
-<span class="sourceLineNo">814</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.814"></a>
-<span class="sourceLineNo">815</span>   */<a name="line.815"></a>
-<span class="sourceLineNo">816</span>  @Deprecated<a name="line.816"></a>
-<span class="sourceLineNo">817</span>  public MiniHBaseCluster startMiniCluster(int numSlaves, boolean createRootDir,<a name="line.817"></a>
-<span class="sourceLineNo">818</span>      boolean createWALDir) throws Exception {<a name="line.818"></a>
-<span class="sourceLineNo">819</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.819"></a>
-<span class="sourceLineNo">820</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).createRootDir(createRootDir)<a name="line.820"></a>
-<span class="sourceLineNo">821</span>        .createWALDir(createWALDir).build();<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    return startMiniCluster(option);<a name="line.822"></a>
-<span class="sourceLineNo">823</span>  }<a name="line.823"></a>
-<span class="sourceLineNo">824</span><a name="line.824"></a>
-<span class="sourceLineNo">825</span>  /**<a name="line.825"></a>
-<span class="sourceLineNo">826</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.826"></a>
-<span class="sourceLineNo">827</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.827"></a>
-<span class="sourceLineNo">828</span>   * @param numMasters Master node number.<a name="line.828"></a>
-<span class="sourceLineNo">829</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.829"></a>
-<span class="sourceLineNo">830</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.830"></a>
-<span class="sourceLineNo">831</span>   * @return The mini HBase cluster created.<a name="line.831"></a>
-<span class="sourceLineNo">832</span>   * @see #shutdownMiniCluster()<a name="line.832"></a>
-<span class="sourceLineNo">833</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.833"></a>
-<span class="sourceLineNo">834</span>   */<a name="line.834"></a>
-<span class="sourceLineNo">835</span>  @Deprecated<a name="line.835"></a>
-<span class="sourceLineNo">836</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, boolean createRootDir)<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    throws Exception {<a name="line.837"></a>
-<span class="sourceLineNo">838</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.838"></a>
-<span class="sourceLineNo">839</span>        .numMasters(numMasters).numRegionServers(numSlaves).createRootDir(createRootDir)<a name="line.839"></a>
-<span class="sourceLineNo">840</span>        .numDataNodes(numSlaves).build();<a name="line.840"></a>
-<span class="sourceLineNo">841</span>    return startMiniCluster(option);<a name="line.841"></a>
-<span class="sourceLineNo">842</span>  }<a name="line.842"></a>
-<span class="sourceLineNo">843</span><a name="line.843"></a>
-<span class="sourceLineNo">844</span>  /**<a name="line.844"></a>
-<span class="sourceLineNo">845</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.845"></a>
-<span class="sourceLineNo">846</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.846"></a>
-<span class="sourceLineNo">847</span>   * @param numMasters Master node number.<a name="line.847"></a>
-<span class="sourceLineNo">848</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.848"></a>
-<span class="sourceLineNo">849</span>   * @return The mini HBase cluster created.<a name="line.849"></a>
-<span class="sourceLineNo">850</span>   * @see #shutdownMiniCluster()<a name="line.850"></a>
-<span class="sourceLineNo">851</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.851"></a>
-<span class="sourceLineNo">852</span>   */<a name="line.852"></a>
-<span class="sourceLineNo">853</span>  @Deprecated<a name="line.853"></a>
-<span class="sourceLineNo">854</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves) throws Exception {<a name="line.854"></a>
-<span class="sourceLineNo">855</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.855"></a>
-<span class="sourceLineNo">856</span>        .numMasters(numMasters).numRegionServers(numSlaves).numDataNodes(numSlaves).build();<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    return startMiniCluster(option);<a name="line.857"></a>
-<span class="sourceLineNo">858</span>  }<a name="line.858"></a>
-<span class="sourceLineNo">859</span><a name="line.859"></a>
-<span class="sourceLineNo">860</span>  /**<a name="line.860"></a>
-<span class="sourceLineNo">861</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.861"></a>
-<span class="sourceLineNo">862</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.862"></a>
-<span class="sourceLineNo">863</span>   * @param numMasters Master node number.<a name="line.863"></a>
-<span class="sourceLineNo">864</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.864"></a>
-<span class="sourceLineNo">865</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.865"></a>
-<span class="sourceLineNo">866</span>   *                      HDFS data node number.<a name="line.866"></a>
-<span class="sourceLineNo">867</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.867"></a>
-<span class="sourceLineNo">868</span>   * @return The mini HBase cluster created.<a name="line.868"></a>
-<span class="sourceLineNo">869</span>   * @see #shutdownMiniCluster()<a name="line.869"></a>
-<span class="sourceLineNo">870</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.870"></a>
-<span class="sourceLineNo">871</span>   */<a name="line.871"></a>
-<span class="sourceLineNo">872</span>  @Deprecated<a name="line.872"></a>
-<span class="sourceLineNo">873</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts,<a name="line.873"></a>
-<span class="sourceLineNo">874</span>      boolean createRootDir) throws Exception {<a name="line.874"></a>
-<span class="sourceLineNo">875</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.875"></a>
-<span class="sourceLineNo">876</span>        .numMasters(numMasters).numRegionServers(numSlaves).createRootDir(createRootDir)<a name="line.876"></a>
-<span class="sourceLineNo">877</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts).build();<a name="line.877"></a>
-<span class="sourceLineNo">878</span>    return startMiniCluster(option);<a name="line.878"></a>
-<span class="sourceLineNo">879</span>  }<a name="line.879"></a>
-<span class="sourceLineNo">880</span><a name="line.880"></a>
-<span class="sourceLineNo">881</span>  /**<a name="line.881"></a>
-<span class="sourceLineNo">882</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.882"></a>
-<span class="sourceLineNo">883</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.883"></a>
-<span class="sourceLineNo">884</span>   * @param numMasters Master node number.<a name="line.884"></a>
-<span class="sourceLineNo">885</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.885"></a>
-<span class="sourceLineNo">886</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.886"></a>
-<span class="sourceLineNo">887</span>   *                      HDFS data node number.<a name="line.887"></a>
-<span class="sourceLineNo">888</span>   * @return The mini HBase cluster created.<a name="line.888"></a>
-<span class="sourceLineNo">889</span>   * @see #shutdownMiniCluster()<a name="line.889"></a>
-<span class="sourceLineNo">890</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.890"></a>
-<span class="sourceLineNo">891</span>   */<a name="line.891"></a>
-<span class="sourceLineNo">892</span>  @Deprecated<a name="line.892"></a>
-<span class="sourceLineNo">893</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts)<a name="line.893"></a>
-<span class="sourceLineNo">894</span>      throws Exception {<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.895"></a>
-<span class="sourceLineNo">896</span>        .numMasters(numMasters).numRegionServers(numSlaves)<a name="line.896"></a>
-<span class="sourceLineNo">897</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts).build();<a name="line.897"></a>
-<span class="sourceLineNo">898</span>    return startMiniCluster(option);<a name="line.898"></a>
-<span class="sourceLineNo">899</span>  }<a name="line.899"></a>
-<span class="sourceLineNo">900</span><a name="line.900"></a>
-<span class="sourceLineNo">901</span>  /**<a name="line.901"></a>
-<span class="sourceLineNo">902</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.902"></a>
-<span class="sourceLineNo">903</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.903"></a>
-<span class="sourceLineNo">904</span>   * @param numMasters Master node number.<a name="line.904"></a>
-<span class="sourceLineNo">905</span>   * @param numRegionServers Number of region servers.<a name="line.905"></a>
-<span class="sourceLineNo">906</span>   * @param numDataNodes Number of datanodes.<a name="line.906"></a>
-<span class="sourceLineNo">907</span>   * @return The mini HBase cluster created.<a name="line.907"></a>
-<span class="sourceLineNo">908</span>   * @see #shutdownMiniCluster()<a name="line.908"></a>
-<span class="sourceLineNo">909</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.909"></a>
-<span class="sourceLineNo">910</span>   */<a name="line.910"></a>
-<span class="sourceLineNo">911</span>  @Deprecated<a name="line.911"></a>
-<span class="sourceLineNo">912</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes)<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      throws Exception {<a name="line.913"></a>
-<span class="sourceLineNo">914</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.914"></a>
-<span class="sourceLineNo">915</span>        .numMasters(numMasters).numRegionServers(numRegionServers).numDataNodes(numDataNodes)<a name="line.915"></a>
-<span class="sourceLineNo">916</span>        .build();<a name="line.916"></a>
-<span class="sourceLineNo">917</span>    return startMiniCluster(option);<a name="line.917"></a>
-<span class="sourceLineNo">918</span>  }<a name="line.918"></a>
-<span class="sourceLineNo">919</span><a name="line.919"></a>
-<span class="sourceLineNo">920</span>  /**<a name="line.920"></a>
-<span class="sourceLineNo">921</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.921"></a>
-<span class="sourceLineNo">922</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.922"></a>
-<span class="sourceLineNo">923</span>   * @param numMasters Master node number.<a name="line.923"></a>
-<span class="sourceLineNo">924</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.924"></a>
-<span class="sourceLineNo">925</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.925"></a>
-<span class="sourceLineNo">926</span>   *                      HDFS data node number.<a name="line.926"></a>
-<span class="sourceLineNo">927</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.927"></a>
-<span class="sourceLineNo">928</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.928"></a>
-<span class="sourceLineNo">929</span>   * @return The mini HBase cluster created.<a name="line.929"></a>
-<span class="sourceLineNo">930</span>   * @see #shutdownMiniCluster()<a name="line.930"></a>
-<span class="sourceLineNo">931</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.931"></a>
-<span class="sourceLineNo">932</span>   */<a name="line.932"></a>
-<span class="sourceLineNo">933</span>  @Deprecated<a name="line.933"></a>
-<span class="sourceLineNo">934</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts,<a name="line.934"></a>
-<span class="sourceLineNo">935</span>      Class&lt;? extends HMaster&gt; masterClass,<a name="line.935"></a>
-<span class="sourceLineNo">936</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass)<a name="line.936"></a>
-<span class="sourceLineNo">937</span>      throws Exception {<a name="line.937"></a>
-<span class="sourceLineNo">938</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.938"></a>
-<span class="sourceLineNo">939</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.939"></a>
-<span class="sourceLineNo">940</span>        .numRegionServers(numSlaves).rsClass(rsClass)<a name="line.940"></a>
-<span class="sourceLineNo">941</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts)<a name="line.941"></a>
-<span class="sourceLineNo">942</span>        .build();<a name="line.942"></a>
-<span class="sourceLineNo">943</span>    return startMiniCluster(option);<a name="line.943"></a>
-<span class="sourceLineNo">944</span>  }<a name="line.944"></a>
-<span class="sourceLineNo">945</span><a name="line.945"></a>
-<span class="sourceLineNo">946</span>  /**<a name="line.946"></a>
-<span class="sourceLineNo">947</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.947"></a>
-<span class="sourceLineNo">948</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.948"></a>
-<span class="sourceLineNo">949</span>   * @param numMasters Master node number.<a name="line.949"></a>
-<span class="sourceLineNo">950</span>   * @param numRegionServers Number of region servers.<a name="line.950"></a>
-<span class="sourceLineNo">951</span>   * @param numDataNodes Number of datanodes.<a name="line.951"></a>
-<span class="sourceLineNo">952</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.952"></a>
-<span class="sourceLineNo">953</span>   *                      HDFS data node number.<a name="line.953"></a>
-<span class="sourceLineNo">954</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.954"></a>
-<span class="sourceLineNo">955</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.955"></a>
-<span class="sourceLineNo">956</span>   * @return The mini HBase cluster created.<a name="line.956"></a>
-<span class="sourceLineNo">957</span>   * @see #shutdownMiniCluster()<a name="line.957"></a>
-<span class="sourceLineNo">958</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.958"></a>
-<span class="sourceLineNo">959</span>   */<a name="line.959"></a>
-<span class="sourceLineNo">960</span>  @Deprecated<a name="line.960"></a>
-<span class="sourceLineNo">961</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes,<a name="line.961"></a>
-<span class="sourceLineNo">962</span>      String[] dataNodeHosts, Class&lt;? extends HMaster&gt; masterClass,<a name="line.962"></a>
-<span class="sourceLineNo">963</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass)<a name="line.963"></a>
-<span class="sourceLineNo">964</span>    throws Exception {<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.965"></a>
-<span class="sourceLineNo">966</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.966"></a>
-<span class="sourceLineNo">967</span>        .numRegionServers(numRegionServers).rsClass(rsClass)<a name="line.967"></a>
-<span class="sourceLineNo">968</span>        .numDataNodes(numDataNodes).dataNodeHosts(dataNodeHosts)<a name="line.968"></a>
-<span class="sourceLineNo">969</span>        .build();<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    return startMiniCluster(option);<a name="line.970"></a>
-<span class="sourceLineNo">971</span>  }<a name="line.971"></a>
-<span class="sourceLineNo">972</span><a name="line.972"></a>
-<span class="sourceLineNo">973</span>  /**<a name="line.973"></a>
-<span class="sourceLineNo">974</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.974"></a>
-<span class="sourceLineNo">975</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.975"></a>
-<span class="sourceLineNo">976</span>   * @param numMasters Master node number.<a name="line.976"></a>
-<span class="sourceLineNo">977</span>   * @param numRegionServers Number of region servers.<a name="line.977"></a>
-<span class="sourceLineNo">978</span>   * @param numDataNodes Number of datanodes.<a name="line.978"></a>
-<span class="sourceLineNo">979</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.979"></a>
-<span class="sourceLineNo">980</span>   *                      HDFS data node number.<a name="line.980"></a>
-<span class="sourceLineNo">981</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.981"></a>
-<span class="sourceLineNo">982</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.982"></a>
-<span class="sourceLineNo">983</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.983"></a>
-<span class="sourceLineNo">984</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.984"></a>
-<span class="sourceLineNo">985</span>   * @return The mini HBase cluster created.<a name="line.985"></a>
-<span class="sourceLineNo">986</span>   * @see #shutdownMiniCluster()<a name="line.986"></a>
-<span class="sourceLineNo">987</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.987"></a>
-<span class="sourceLineNo">988</span>   */<a name="line.988"></a>
-<span class="sourceLineNo">989</span>  @Deprecated<a name="line.989"></a>
-<span class="sourceLineNo">990</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes,<a name="line.990"></a>
-<span class="sourceLineNo">991</span>      String[] dataNodeHosts, Class&lt;? extends HMaster&gt; masterClass,<a name="line.991"></a>
-<span class="sourceLineNo">992</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass, boolean createRootDir,<a name="line.992"></a>
-<span class="sourceLineNo">993</span>      boolean createWALDir) throws Exception {<a name="line.993"></a>
-<span class="sourceLineNo">994</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.994"></a>
-<span class="sourceLineNo">995</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.995"></a>
-<span class="sourceLineNo">996</span>        .numRegionServers(numRegionServers).rsClass(rsClass)<a name="line.996"></a>
-<span class="sourceLineNo">997</span>        .numDataNodes(numDataNodes).dataNodeHosts(dataNodeHosts)<a name="line.997"></a>
-<span class="sourceLineNo">998</span>        .createRootDir(createRootDir).createWALDir(createWALDir)<a name="line.998"></a>
-<span class="sourceLineNo">999</span>        .build();<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>    return startMiniCluster(option);<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>  }<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span><a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>  /**<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>   * Start up a minicluster of hbase, dfs and zookeeper clusters with given slave node number.<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>   * @param numSlaves slave node number, for both HBase region server and HDFS data node.<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>   * @see #startMiniCluster(StartMiniClusterOption option)<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>   * @see #shutdownMiniDFSCluster()<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>   */<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>  public MiniHBaseCluster startMiniCluster(int numSlaves) throws Exception {<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).build();<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    return startMiniCluster(option);<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>  }<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span><a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>  /**<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>   * Start up a minicluster of hbase, dfs and zookeeper all using default options.<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>   * Option default value can be found in {@link StartMiniClusterOption.Builder}.<a name="line.1018"></a>
+<span class="sourceLineNo">716</span>  /**<a name="line.716"></a>
+<span class="sourceLineNo">717</span>   *  Check whether the tests should assume NEW_VERSION_BEHAVIOR when creating<a name="line.717"></a>
+<span class="sourceLineNo">718</span>   *  new column families. Default to false.<a name="line.718"></a>
+<span class="sourceLineNo">719</span>   */<a name="line.719"></a>
+<span class="sourceLineNo">720</span>  public boolean isNewVersionBehaviorEnabled(){<a name="line.720"></a>
+<span class="sourceLineNo">721</span>    final String propName = "hbase.tests.new.version.behavior";<a name="line.721"></a>
+<span class="sourceLineNo">722</span>    String v = System.getProperty(propName);<a name="line.722"></a>
+<span class="sourceLineNo">723</span>    if (v != null){<a name="line.723"></a>
+<span class="sourceLineNo">724</span>      return Boolean.parseBoolean(v);<a name="line.724"></a>
+<span class="sourceLineNo">725</span>    }<a name="line.725"></a>
+<span class="sourceLineNo">726</span>    return false;<a name="line.726"></a>
+<span class="sourceLineNo">727</span>  }<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>   *  Get the HBase setting for dfs.client.read.shortcircuit from the conf or a system property.<a name="line.730"></a>
+<span class="sourceLineNo">731</span>   *  This allows to specify this parameter on the command line.<a name="line.731"></a>
+<span class="sourceLineNo">732</span>   *   If not set, default is true.<a name="line.732"></a>
+<span class="sourceLineNo">733</span>   */<a name="line.733"></a>
+<span class="sourceLineNo">734</span>  public boolean isReadShortCircuitOn(){<a name="line.734"></a>
+<span class="sourceLineNo">735</span>    final String propName = "hbase.tests.use.shortcircuit.reads";<a name="line.735"></a>
+<span class="sourceLineNo">736</span>    String readOnProp = System.getProperty(propName);<a name="line.736"></a>
+<span class="sourceLineNo">737</span>    if (readOnProp != null){<a name="line.737"></a>
+<span class="sourceLineNo">738</span>      return  Boolean.parseBoolean(readOnProp);<a name="line.738"></a>
+<span class="sourceLineNo">739</span>    } else {<a name="line.739"></a>
+<span class="sourceLineNo">740</span>      return conf.getBoolean(propName, false);<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><a name="line.743"></a>
+<span class="sourceLineNo">744</span>  /** Enable the short circuit read, unless configured differently.<a name="line.744"></a>
+<span class="sourceLineNo">745</span>   * Set both HBase and HDFS settings, including skipping the hdfs checksum checks.<a name="line.745"></a>
+<span class="sourceLineNo">746</span>   */<a name="line.746"></a>
+<span class="sourceLineNo">747</span>  private void enableShortCircuit() {<a name="line.747"></a>
+<span class="sourceLineNo">748</span>    if (isReadShortCircuitOn()) {<a name="line.748"></a>
+<span class="sourceLineNo">749</span>      String curUser = System.getProperty("user.name");<a name="line.749"></a>
+<span class="sourceLineNo">750</span>      LOG.info("read short circuit is ON for user " + curUser);<a name="line.750"></a>
+<span class="sourceLineNo">751</span>      // read short circuit, for hdfs<a name="line.751"></a>
+<span class="sourceLineNo">752</span>      conf.set("dfs.block.local-path-access.user", curUser);<a name="line.752"></a>
+<span class="sourceLineNo">753</span>      // read short circuit, for hbase<a name="line.753"></a>
+<span class="sourceLineNo">754</span>      conf.setBoolean("dfs.client.read.shortcircuit", true);<a name="line.754"></a>
+<span class="sourceLineNo">755</span>      // Skip checking checksum, for the hdfs client and the datanode<a name="line.755"></a>
+<span class="sourceLineNo">756</span>      conf.setBoolean("dfs.client.read.shortcircuit.skip.checksum", true);<a name="line.756"></a>
+<span class="sourceLineNo">757</span>    } else {<a name="line.757"></a>
+<span class="sourceLineNo">758</span>      LOG.info("read short circuit is OFF");<a name="line.758"></a>
+<span class="sourceLineNo">759</span>    }<a name="line.759"></a>
+<span class="sourceLineNo">760</span>  }<a name="line.760"></a>
+<span class="sourceLineNo">761</span><a name="line.761"></a>
+<span class="sourceLineNo">762</span>  private String createDirAndSetProperty(final String relPath, String property) {<a name="line.762"></a>
+<span class="sourceLineNo">763</span>    String path = getDataTestDir(relPath).toString();<a name="line.763"></a>
+<span class="sourceLineNo">764</span>    System.setProperty(property, path);<a name="line.764"></a>
+<span class="sourceLineNo">765</span>    conf.set(property, path);<a name="line.765"></a>
+<span class="sourceLineNo">766</span>    new File(path).mkdirs();<a name="line.766"></a>
+<span class="sourceLineNo">767</span>    LOG.info("Setting " + property + " to " + path + " in system properties and HBase conf");<a name="line.767"></a>
+<span class="sourceLineNo">768</span>    return path;<a name="line.768"></a>
+<span class="sourceLineNo">769</span>  }<a name="line.769"></a>
+<span class="sourceLineNo">770</span><a name="line.770"></a>
+<span class="sourceLineNo">771</span>  /**<a name="line.771"></a>
+<span class="sourceLineNo">772</span>   * Shuts down instance created by call to {@link #startMiniDFSCluster(int)}<a name="line.772"></a>
+<span class="sourceLineNo">773</span>   * or does nothing.<a name="line.773"></a>
+<span class="sourceLineNo">774</span>   * @throws IOException<a name="line.774"></a>
+<span class="sourceLineNo">775</span>   */<a name="line.775"></a>
+<span class="sourceLineNo">776</span>  public void shutdownMiniDFSCluster() throws IOException {<a name="line.776"></a>
+<span class="sourceLineNo">777</span>    if (this.dfsCluster != null) {<a name="line.777"></a>
+<span class="sourceLineNo">778</span>      // The below throws an exception per dn, AsynchronousCloseException.<a name="line.778"></a>
+<span class="sourceLineNo">779</span>      this.dfsCluster.shutdown();<a name="line.779"></a>
+<span class="sourceLineNo">780</span>      dfsCluster = null;<a name="line.780"></a>
+<span class="sourceLineNo">781</span>      dataTestDirOnTestFS = null;<a name="line.781"></a>
+<span class="sourceLineNo">782</span>      FSUtils.setFsDefault(this.conf, new Path("file:///"));<a name="line.782"></a>
+<span class="sourceLineNo">783</span>    }<a name="line.783"></a>
+<span class="sourceLineNo">784</span>  }<a name="line.784"></a>
+<span class="sourceLineNo">785</span><a name="line.785"></a>
+<span class="sourceLineNo">786</span>  /**<a name="line.786"></a>
+<span class="sourceLineNo">787</span>   * Start up a minicluster of hbase, dfs, and zookeeper where WAL's walDir is created separately.<a name="line.787"></a>
+<span class="sourceLineNo">788</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.788"></a>
+<span class="sourceLineNo">789</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.789"></a>
+<span class="sourceLineNo">790</span>   * @return The mini HBase cluster created.<a name="line.790"></a>
+<span class="sourceLineNo">791</span>   * @see #shutdownMiniCluster()<a name="line.791"></a>
+<span class="sourceLineNo">792</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.792"></a>
+<span class="sourceLineNo">793</span>   */<a name="line.793"></a>
+<span class="sourceLineNo">794</span>  @Deprecated<a name="line.794"></a>
+<span class="sourceLineNo">795</span>  public MiniHBaseCluster startMiniCluster(boolean createWALDir) throws Exception {<a name="line.795"></a>
+<span class="sourceLineNo">796</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.796"></a>
+<span class="sourceLineNo">797</span>        .createWALDir(createWALDir).build();<a name="line.797"></a>
+<span class="sourceLineNo">798</span>    return startMiniCluster(option);<a name="line.798"></a>
+<span class="sourceLineNo">799</span>  }<a name="line.799"></a>
+<span class="sourceLineNo">800</span><a name="line.800"></a>
+<span class="sourceLineNo">801</span>  /**<a name="line.801"></a>
+<span class="sourceLineNo">802</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.802"></a>
+<span class="sourceLineNo">803</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.803"></a>
+<span class="sourceLineNo">804</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.804"></a>
+<span class="sourceLineNo">805</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.805"></a>
+<span class="sourceLineNo">806</span>   * @return The mini HBase cluster created.<a name="line.806"></a>
+<span class="sourceLineNo">807</span>   * @see #shutdownMiniCluster()<a name="line.807"></a>
+<span class="sourceLineNo">808</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.808"></a>
+<span class="sourceLineNo">809</span>   */<a name="line.809"></a>
+<span class="sourceLineNo">810</span>  @Deprecated<a name="line.810"></a>
+<span class="sourceLineNo">811</span>  public MiniHBaseCluster startMiniCluster(int numSlaves, boolean createRootDir)<a name="line.811"></a>
+<span class="sourceLineNo">812</span>  throws Exception {<a name="line.812"></a>
+<span class="sourceLineNo">813</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.813"></a>
+<span class="sourceLineNo">814</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).createRootDir(createRootDir).build();<a name="line.814"></a>
+<span class="sourceLineNo">815</span>    return startMiniCluster(option);<a name="line.815"></a>
+<span class="sourceLineNo">816</span>  }<a name="line.816"></a>
+<span class="sourceLineNo">817</span><a name="line.817"></a>
+<span class="sourceLineNo">818</span>  /**<a name="line.818"></a>
+<span class="sourceLineNo">819</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.819"></a>
+<span class="sourceLineNo">820</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.820"></a>
+<span class="sourceLineNo">821</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.821"></a>
+<span class="sourceLineNo">822</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.822"></a>
+<span class="sourceLineNo">823</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.823"></a>
+<span class="sourceLineNo">824</span>   * @return The mini HBase cluster created.<a name="line.824"></a>
+<span class="sourceLineNo">825</span>   * @see #shutdownMiniCluster()<a name="line.825"></a>
+<span class="sourceLineNo">826</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.826"></a>
+<span class="sourceLineNo">827</span>   */<a name="line.827"></a>
+<span class="sourceLineNo">828</span>  @Deprecated<a name="line.828"></a>
+<span class="sourceLineNo">829</span>  public MiniHBaseCluster startMiniCluster(int numSlaves, boolean createRootDir,<a name="line.829"></a>
+<span class="sourceLineNo">830</span>      boolean createWALDir) throws Exception {<a name="line.830"></a>
+<span class="sourceLineNo">831</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.831"></a>
+<span class="sourceLineNo">832</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).createRootDir(createRootDir)<a name="line.832"></a>
+<span class="sourceLineNo">833</span>        .createWALDir(createWALDir).build();<a name="line.833"></a>
+<span class="sourceLineNo">834</span>    return startMiniCluster(option);<a name="line.834"></a>
+<span class="sourceLineNo">835</span>  }<a name="line.835"></a>
+<span class="sourceLineNo">836</span><a name="line.836"></a>
+<span class="sourceLineNo">837</span>  /**<a name="line.837"></a>
+<span class="sourceLineNo">838</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.838"></a>
+<span class="sourceLineNo">839</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.839"></a>
+<span class="sourceLineNo">840</span>   * @param numMasters Master node number.<a name="line.840"></a>
+<span class="sourceLineNo">841</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.841"></a>
+<span class="sourceLineNo">842</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.842"></a>
+<span class="sourceLineNo">843</span>   * @return The mini HBase cluster created.<a name="line.843"></a>
+<span class="sourceLineNo">844</span>   * @see #shutdownMiniCluster()<a name="line.844"></a>
+<span class="sourceLineNo">845</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.845"></a>
+<span class="sourceLineNo">846</span>   */<a name="line.846"></a>
+<span class="sourceLineNo">847</span>  @Deprecated<a name="line.847"></a>
+<span class="sourceLineNo">848</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, boolean createRootDir)<a name="line.848"></a>
+<span class="sourceLineNo">849</span>    throws Exception {<a name="line.849"></a>
+<span class="sourceLineNo">850</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.850"></a>
+<span class="sourceLineNo">851</span>        .numMasters(numMasters).numRegionServers(numSlaves).createRootDir(createRootDir)<a name="line.851"></a>
+<span class="sourceLineNo">852</span>        .numDataNodes(numSlaves).build();<a name="line.852"></a>
+<span class="sourceLineNo">853</span>    return startMiniCluster(option);<a name="line.853"></a>
+<span class="sourceLineNo">854</span>  }<a name="line.854"></a>
+<span class="sourceLineNo">855</span><a name="line.855"></a>
+<span class="sourceLineNo">856</span>  /**<a name="line.856"></a>
+<span class="sourceLineNo">857</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.857"></a>
+<span class="sourceLineNo">858</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.858"></a>
+<span class="sourceLineNo">859</span>   * @param numMasters Master node number.<a name="line.859"></a>
+<span class="sourceLineNo">860</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.860"></a>
+<span class="sourceLineNo">861</span>   * @return The mini HBase cluster created.<a name="line.861"></a>
+<span class="sourceLineNo">862</span>   * @see #shutdownMiniCluster()<a name="line.862"></a>
+<span class="sourceLineNo">863</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.863"></a>
+<span class="sourceLineNo">864</span>   */<a name="line.864"></a>
+<span class="sourceLineNo">865</span>  @Deprecated<a name="line.865"></a>
+<span class="sourceLineNo">866</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves) throws Exception {<a name="line.866"></a>
+<span class="sourceLineNo">867</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.867"></a>
+<span class="sourceLineNo">868</span>        .numMasters(numMasters).numRegionServers(numSlaves).numDataNodes(numSlaves).build();<a name="line.868"></a>
+<span class="sourceLineNo">869</span>    return startMiniCluster(option);<a name="line.869"></a>
+<span class="sourceLineNo">870</span>  }<a name="line.870"></a>
+<span class="sourceLineNo">871</span><a name="line.871"></a>
+<span class="sourceLineNo">872</span>  /**<a name="line.872"></a>
+<span class="sourceLineNo">873</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.873"></a>
+<span class="sourceLineNo">874</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.874"></a>
+<span class="sourceLineNo">875</span>   * @param numMasters Master node number.<a name="line.875"></a>
+<span class="sourceLineNo">876</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.876"></a>
+<span class="sourceLineNo">877</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.877"></a>
+<span class="sourceLineNo">878</span>   *                      HDFS data node number.<a name="line.878"></a>
+<span class="sourceLineNo">879</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.879"></a>
+<span class="sourceLineNo">880</span>   * @return The mini HBase cluster created.<a name="line.880"></a>
+<span class="sourceLineNo">881</span>   * @see #shutdownMiniCluster()<a name="line.881"></a>
+<span class="sourceLineNo">882</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.882"></a>
+<span class="sourceLineNo">883</span>   */<a name="line.883"></a>
+<span class="sourceLineNo">884</span>  @Deprecated<a name="line.884"></a>
+<span class="sourceLineNo">885</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts,<a name="line.885"></a>
+<span class="sourceLineNo">886</span>      boolean createRootDir) throws Exception {<a name="line.886"></a>
+<span class="sourceLineNo">887</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.887"></a>
+<span class="sourceLineNo">888</span>        .numMasters(numMasters).numRegionServers(numSlaves).createRootDir(createRootDir)<a name="line.888"></a>
+<span class="sourceLineNo">889</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts).build();<a name="line.889"></a>
+<span class="sourceLineNo">890</span>    return startMiniCluster(option);<a name="line.890"></a>
+<span class="sourceLineNo">891</span>  }<a name="line.891"></a>
+<span class="sourceLineNo">892</span><a name="line.892"></a>
+<span class="sourceLineNo">893</span>  /**<a name="line.893"></a>
+<span class="sourceLineNo">894</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.894"></a>
+<span class="sourceLineNo">895</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.895"></a>
+<span class="sourceLineNo">896</span>   * @param numMasters Master node number.<a name="line.896"></a>
+<span class="sourceLineNo">897</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.897"></a>
+<span class="sourceLineNo">898</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.898"></a>
+<span class="sourceLineNo">899</span>   *                      HDFS data node number.<a name="line.899"></a>
+<span class="sourceLineNo">900</span>   * @return The mini HBase cluster created.<a name="line.900"></a>
+<span class="sourceLineNo">901</span>   * @see #shutdownMiniCluster()<a name="line.901"></a>
+<span class="sourceLineNo">902</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.902"></a>
+<span class="sourceLineNo">903</span>   */<a name="line.903"></a>
+<span class="sourceLineNo">904</span>  @Deprecated<a name="line.904"></a>
+<span class="sourceLineNo">905</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts)<a name="line.905"></a>
+<span class="sourceLineNo">906</span>      throws Exception {<a name="line.906"></a>
+<span class="sourceLineNo">907</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.907"></a>
+<span class="sourceLineNo">908</span>        .numMasters(numMasters).numRegionServers(numSlaves)<a name="line.908"></a>
+<span class="sourceLineNo">909</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts).build();<a name="line.909"></a>
+<span class="sourceLineNo">910</span>    return startMiniCluster(option);<a name="line.910"></a>
+<span class="sourceLineNo">911</span>  }<a name="line.911"></a>
+<span class="sourceLineNo">912</span><a name="line.912"></a>
+<span class="sourceLineNo">913</span>  /**<a name="line.913"></a>
+<span class="sourceLineNo">914</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.914"></a>
+<span class="sourceLineNo">915</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.915"></a>
+<span class="sourceLineNo">916</span>   * @param numMasters Master node number.<a name="line.916"></a>
+<span class="sourceLineNo">917</span>   * @param numRegionServers Number of region servers.<a name="line.917"></a>
+<span class="sourceLineNo">918</span>   * @param numDataNodes Number of datanodes.<a name="line.918"></a>
+<span class="sourceLineNo">919</span>   * @return The mini HBase cluster created.<a name="line.919"></a>
+<span class="sourceLineNo">920</span>   * @see #shutdownMiniCluster()<a name="line.920"></a>
+<span class="sourceLineNo">921</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.921"></a>
+<span class="sourceLineNo">922</span>   */<a name="line.922"></a>
+<span class="sourceLineNo">923</span>  @Deprecated<a name="line.923"></a>
+<span class="sourceLineNo">924</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes)<a name="line.924"></a>
+<span class="sourceLineNo">925</span>      throws Exception {<a name="line.925"></a>
+<span class="sourceLineNo">926</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.926"></a>
+<span class="sourceLineNo">927</span>        .numMasters(numMasters).numRegionServers(numRegionServers).numDataNodes(numDataNodes)<a name="line.927"></a>
+<span class="sourceLineNo">928</span>        .build();<a name="line.928"></a>
+<span class="sourceLineNo">929</span>    return startMiniCluster(option);<a name="line.929"></a>
+<span class="sourceLineNo">930</span>  }<a name="line.930"></a>
+<span class="sourceLineNo">931</span><a name="line.931"></a>
+<span class="sourceLineNo">932</span>  /**<a name="line.932"></a>
+<span class="sourceLineNo">933</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.933"></a>
+<span class="sourceLineNo">934</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.934"></a>
+<span class="sourceLineNo">935</span>   * @param numMasters Master node number.<a name="line.935"></a>
+<span class="sourceLineNo">936</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.936"></a>
+<span class="sourceLineNo">937</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.937"></a>
+<span class="sourceLineNo">938</span>   *                      HDFS data node number.<a name="line.938"></a>
+<span class="sourceLineNo">939</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.939"></a>
+<span class="sourceLineNo">940</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.940"></a>
+<span class="sourceLineNo">941</span>   * @return The mini HBase cluster created.<a name="line.941"></a>
+<span class="sourceLineNo">942</span>   * @see #shutdownMiniCluster()<a name="line.942"></a>
+<span class="sourceLineNo">943</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.943"></a>
+<span class="sourceLineNo">944</span>   */<a name="line.944"></a>
+<span class="sourceLineNo">945</span>  @Deprecated<a name="line.945"></a>
+<span class="sourceLineNo">946</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts,<a name="line.946"></a>
+<span class="sourceLineNo">947</span>      Class&lt;? extends HMaster&gt; masterClass,<a name="line.947"></a>
+<span class="sourceLineNo">948</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass)<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      throws Exception {<a name="line.949"></a>
+<span class="sourceLineNo">950</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.951"></a>
+<span class="sourceLineNo">952</span>        .numRegionServers(numSlaves).rsClass(rsClass)<a name="line.952"></a>
+<span class="sourceLineNo">953</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts)<a name="line.953"></a>
+<span class="sourceLineNo">954</span>        .build();<a name="line.954"></a>
+<span class="sourceLineNo">955</span>    return startMiniCluster(option);<a name="line.955"></a>
+<span class="sourceLineNo">956</span>  }<a name="line.956"></a>
+<span class="sourceLineNo">957</span><a name="line.957"></a>
+<span class="sourceLineNo">958</span>  /**<a name="line.958"></a>
+<span class="sourceLineNo">959</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.959"></a>
+<span class="sourceLineNo">960</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.960"></a>
+<span class="sourceLineNo">961</span>   * @param numMasters Master node number.<a name="line.961"></a>
+<span class="sourceLineNo">962</span>   * @param numRegionServers Number of region servers.<a name="line.962"></a>
+<span class="sourceLineNo">963</span>   * @param numDataNodes Number of datanodes.<a name="line.963"></a>
+<span class="sourceLineNo">964</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.964"></a>
+<span class="sourceLineNo">965</span>   *                      HDFS data node number.<a name="line.965"></a>
+<span class="sourceLineNo">966</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.966"></a>
+<span class="sourceLineNo">967</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.967"></a>
+<span class="sourceLineNo">968</span>   * @return The mini HBase cluster created.<a name="line.968"></a>
+<span class="sourceLineNo">969</span>   * @see #shutdownMiniCluster()<a name="line.969"></a>
+<span class="sourceLineNo">970</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.970"></a>
+<span class="sourceLineNo">971</span>   */<a name="line.971"></a>
+<span class="sourceLineNo">972</span>  @Deprecated<a name="line.972"></a>
+<span class="sourceLineNo">973</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes,<a name="line.973"></a>
+<span class="sourceLineNo">974</span>      String[] dataNodeHosts, Class&lt;? extends HMaster&gt; masterClass,<a name="line.974"></a>
+<span class="sourceLineNo">975</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass)<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    throws Exception {<a name="line.976"></a>
+<span class="sourceLineNo">977</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.977"></a>
+<span class="sourceLineNo">978</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.978"></a>
+<span class="sourceLineNo">979</span>        .numRegionServers(numRegionServers).rsClass(rsClass)<a name="line.979"></a>
+<span class="sourceLineNo">980</span>        .numDataNodes(numDataNodes).dataNodeHosts(dataNodeHosts)<a name="line.980"></a>
+<span class="sourceLineNo">981</span>        .build();<a name="line.981"></a>
+<span class="sourceLineNo">982</span>    return startMiniCluster(option);<a name="line.982"></a>
+<span class="sourceLineNo">983</span>  }<a name="line.983"></a>
+<span class="sourceLineNo">984</span><a name="line.984"></a>
+<span class="sourceLineNo">985</span>  /**<a name="line.985"></a>
+<span class="sourceLineNo">986</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.986"></a>
+<span class="sourceLineNo">987</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.987"></a>
+<span class="sourceLineNo">988</span>   * @param numMasters Master node number.<a name="line.988"></a>
+<span class="sourceLineNo">989</span>   * @param numRegionServers Number of region servers.<a name="line.989"></a>
+<span class="sourceLineNo">990</span>   * @param numDataNodes Number of datanodes.<a name="line.990"></a>
+<span class="sourceLineNo">991</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.991"></a>
+<span class="sourceLineNo">992</span>   *                      HDFS data node number.<a name="line.992"></a>
+<span class="sourceLineNo">993</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.993"></a>
+<span class="sourceLineNo">994</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.994"></a>
+<span class="sourceLineNo">995</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.995"></a>
+<span class="sourceLineNo">996</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.996"></a>
+<span class="sourceLineNo">997</span>   * @return The mini HBase cluster created.<a name="line.997"></a>
+<span class="sourceLineNo">998</span>   * @see #shutdownMiniCluster()<a name="line.998"></a>
+<span class="sourceLineNo">999</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.999"></a>
+<span class="sourceLineNo">1000</span>   */<a name="line.1000"></a>
+<span class="sourceLineNo">1001</span>  @Deprecated<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes,<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span>      String[] dataNodeHosts, Class&lt;? extends HMaster&gt; masterClass,<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass, boolean createRootDir,<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>      boolean createWALDir) throws Exception {<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>        .numRegionServers(numRegionServers).rsClass(rsClass)<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>        .numDataNodes(numDataNodes).dataNodeHosts(dataNodeHosts)<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>        .createRootDir(createRootDir).createWALDir(createWALDir)<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>        .build();<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>    return startMiniCluster(option);<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span>  }<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span><a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>  /**<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>   * Start up a minicluster of hbase, dfs and zookeeper clusters with given slave node number.<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>   * @param numSlaves slave node number, for both HBase region server and HDFS data node.<a name="line.1018"></a>
 <span class="sourceLineNo">1019</span>   * @see #startMiniCluster(StartMiniClusterOption option)<a name="line.1019"></a>
 <span class="sourceLineNo">1020</span>   * @see #shutdownMiniDFSCluster()<a name="line.1020"></a>
 <span class="sourceLineNo">1021</span>   */<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>  public MiniHBaseCluster startMiniCluster() throws Exception {<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>    return startMiniCluster(StartMiniClusterOption.builder().build());<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>  }<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>   * Start up a mini cluster of hbase, optionally dfs and zookeeper if needed.<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>   * It modifies Configuration.  It homes the cluster data directory under a random<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>   * subdirectory in a directory under System property test.build.data, to be cleaned up on exit.<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>   * @see #shutdownMiniDFSCluster()<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>   */<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>  public MiniHBaseCluster startMiniCluster(StartMiniClusterOption option) throws Exception {<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>    LOG.info("Starting up minicluster with option: {}", option);<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span><a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>    // If we already put up a cluster, fail.<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>    if (miniClusterRunning) {<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>      throw new IllegalStateException("A mini-cluster is already running");<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>    }<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>    miniClusterRunning = true;<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span><a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>    setupClusterTestDir();<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>    System.setProperty(TEST_DIRECTORY_KEY, this.clusterTestDir.getPath());<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span><a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>    // Bring up mini dfs cluster. This spews a bunch of warnings about missing<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>    // scheme. Complaints are 'Scheme is undefined for build/test/data/dfs/name1'.<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>    if (dfsCluster == null) {<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>      LOG.info("STARTING DFS");<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>      dfsCluster = startMiniDFSCluster(option.getNumDataNodes(), option.getDataNodeHosts());<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>    } else {<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>      LOG.info("NOT STARTING DFS");<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>    }<a name="line.1051"></a>
+<span class="sourceLineNo">1022</span>  public MiniHBaseCluster startMiniCluster(int numSlaves) throws Exception {<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).build();<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>    return startMiniCluster(option);<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>  }<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span><a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>  /**<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>   * Start up a minicluster of hbase, dfs and zookeeper all using default options.<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>   * Option default value can be found in {@link StartMiniClusterOption.Builder}.<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span>   * @see #startMiniCluster(StartMiniClusterOption option)<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>   * @see #shutdownMiniDFSCluster()<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>   */<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>  public MiniHBaseCluster startMiniCluster() throws Exception {<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>    return startMiniCluster(StartMiniClusterOption.builder().build());<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>  }<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span><a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>  /**<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>   * Start up a mini cluster of hbase, optionally dfs and zookeeper if needed.<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>   * It modifies Configuration.  It homes the cluster data directory under a random<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>   * subdirectory in a directory under System property test.build.data, to be cleaned up on exit.<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>   * @see #shutdownMiniDFSCluster()<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>   */<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>  public MiniHBaseCluster startMiniCluster(StartMiniClusterOption option) throws Exception {<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>    LOG.info("Starting up minicluster with option: {}", option);<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span><a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>    // If we already put up a cluster, fail.<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>    if (miniClusterRunning) {<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>      throw new IllegalStateException("A mini-cluster is already running");<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>    }<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>    miniClusterRunning = true;<a name="line.1051"></a>
 <span class="sourceLineNo">1052</span><a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>    // Start up a zk cluster.<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>    if (getZkCluster() == null) {<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>      startMiniZKCluster(option.getNumZkServers());<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>    }<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span><a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>    // Start the MiniHBaseCluster<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>    return startMiniHBaseCluster(option);<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>  }<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span><a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>  /**<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>   * Starts up mini hbase cluster.<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>   * Usually you won't want this.  You'll usually want {@link #startMiniCluster()}.<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>   * This is useful when doing stepped startup of clusters.<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>   * @return Reference to the hbase mini hbase cluster.<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>   * @see #startMiniCluster(StartMiniClusterOption)<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>   * @see #shutdownMiniHBaseCluster()<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>   */<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>  public MiniHBaseCluster startMiniHBaseCluster(StartMiniClusterOption option)<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>      throws IOException, InterruptedException {<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>    // Now do the mini hbase cluster.  Set the hbase.rootdir in config.<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>    createRootDir(option.isCreateRootDir());<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>    if (option.isCreateWALDir()) {<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>      createWALRootDir();<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span>    }<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>    // Set the hbase.fs.tmp.dir config to make sure that we have some default value. This is<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>    // for tests that do not read hbase-defaults.xml<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>    setHBaseFsTmpDir();<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span><a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>    // These settings will make the server waits until this exact number of<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>    // regions servers are connected.<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>    if (conf.getInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, -1) == -1) {<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>      conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, option.getNumRegionServers());<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>    }<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>    if (conf.getInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, -1) == -1) {<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>      conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, option.getNumRegionServers());<a name="line.1087"></a>
+<span class="sourceLineNo">1053</span>    setupClusterTestDir();<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>    System.setProperty(TEST_DIRECTORY_KEY, this.clusterTestDir.getPath());<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span><a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>    // Bring up mini dfs cluster. This spews a bunch of warnings about missing<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>    // scheme. Complaints are 'Scheme is undefined for build/test/data/dfs/name1'.<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>    if (dfsCluster == null) {<a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>      LOG.info("STARTING DFS");<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>      dfsCluster = startMiniDFSCluster(option.getNumDataNodes(), option.getDataNodeHosts());<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>    } else {<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>      LOG.info("NOT STARTING DFS");<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>    }<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span><a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>    // Start up a zk cluster.<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>    if (getZkCluster() == null) {<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>      startMiniZKCluster(option.getNumZkServers());<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>    }<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span><a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>    // Start the MiniHBaseCluster<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>    return startMiniHBaseCluster(option);<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>  }<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span><a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>  /**<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>   * Starts up mini hbase cluster.<a name="line.1075"></a>
+<span class="sourceLineNo">1076</span>   * Usually you won't want this.  You'll usually want {@link #startMiniCluster()}.<a name="line.1076"></a>
+<span class="sourceLineNo">1077</span>   * This is useful when doing stepped startup of clusters.<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>   * @return Reference to the hbase mini hbase cluster.<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>   * @see #startMiniCluster(StartMiniClusterOption)<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span>   * @see #shutdownMiniHBaseCluster()<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>   */<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>  public MiniHBaseCluster startMiniHBaseCluster(StartMiniClusterOption option)<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>      throws IOException, InterruptedException {<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>    // Now do the mini hbase cluster.  Set the hbase.rootdir in config.<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>    createRootDir(option.isCreateRootDir());<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>    if (option.isCreateWALDir()) {<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>      createWALRootDir();<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>    Configuration c = new Configuration(this.conf);<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>    TraceUtil.initTracer(c);<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span>    this.hbaseCluster =<a name="line.1092"></a>
-<span class="sourceLineNo">1093</span>        new MiniHBaseCluster(c, option.getNumMasters(), option.getNumRegionServers(),<a name="line.1093"></a>
-<span class="sourceLineNo">1094</span>            option.getRsPorts(), option.getMasterClass(), option.getRsClass());<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>    // Don't leave here till we've done a successful scan of the hbase:meta<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>    Table t = getConnection().getTable(TableName.META_TABLE_NAME);<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    ResultScanner s = t.getScanner(new Scan());<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>    while (s.next() != null) {<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>      continue;<a name="line.1099"></a>
+<span class="sourceLineNo">1089</span>    // Set the hbase.fs.tmp.dir config to make sure that we have some default value. This is<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>    // for tests that do not read hbase-defaults.xml<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>    setHBaseFsTmpDir();<a name="line.1091"></a>
+<span class="sourceLineNo">1092</span><a name="line.1092"></a>
+<span class="sourceLineNo">1093</span>    // These settings will make the server waits until this exact number of<a name="line.1093"></a>
+<span class="sourceLineNo">1094</span>    // regions servers are connected.<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>    if (conf.getInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, -1) == -1) {<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>      conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, option.getNumRegionServers());<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>    }<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span>    if (conf.getInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, -1) == -1) {<a name="line.1098"></a>
+<span class="sourceLineNo">1099</span>      conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, option.getNumRegionServers());<a name="line.1099"></a>
 <span class="sourceLineNo">1100</span>    }<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>    s.close();<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>    t.close();<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span><a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>    getAdmin(); // create immediately the hbaseAdmin<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>    LOG.info("Minicluster is up; activeMaster={}", getHBaseCluster().getMaster());<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span><a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>    return (MiniHBaseCluster) hbaseCluster;<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>   * Starts up mini hbase cluster using default options.<a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>   * Default options can be found in {@link StartMiniClusterOption.Builder}.<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>   * @see #startMiniHBaseCluster(StartMiniClusterOption)<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>   * @see #shutdownMiniHBaseCluster()<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>   */<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>  public MiniHBaseCluster startMiniHBaseCluster() throws IOException, InterruptedException {<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>    return startMiniHBaseCluster(StartMiniClusterOption.builder().build());<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>  }<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span><a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>  /**<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span>   * Starts up mini hbase cluster.<a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>   * Usually you won't want this.  You'll usually want {@link #startMiniCluster()}.<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>   * @param numMasters Master node number.<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>   * @param numRegionServers Number of region servers.<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>   * @return The mini HBase cluster created.<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>   * @see #shutdownMiniHBaseCluster()<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>   * @deprecated Use {@link #startMiniHBaseCluster(StartMiniClusterOption)} instead.<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span>   */<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>  @Deprecated<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>  public MiniHBaseCluster startMiniHBaseCluster(int numMasters, int numRegionServers)<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>      throws IOException, InterruptedException {<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>        .numMasters(numMasters).numRegionServers(numRegionServers).build();<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>    return startMiniHBaseCluster(option);<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>  }<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span><a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>  /**<a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>   * Starts up mini hbase cluster.<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>   * Usually you won't want this.  You'll usually want {@link #startMiniCluster()}.<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>   * @param numMasters Master node number.<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>   * @param numRegionServers Number of region servers.<a name="line.1143"></a>
-<span class="sourceLineNo">1144</span>   * @param rsPorts Ports that RegionServer should use.<a name="line.1144"></a>
-<span class="sourceLineNo">1145</span>   * @return The mini HBase cluster created.<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>   * @see #shutdownMiniHBaseCluster()<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>   * @deprecated Use {@link #startMiniHBaseCluster(StartMiniClusterOption)} instead.<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>   */<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span>  @Deprecated<a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>  public MiniHBaseCluster startMiniHBaseCluster(int numMasters, int numRegionServers,<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>      List&lt;Integer&gt; rsPorts) throws IOException, InterruptedException {<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span>        .numMasters(numMasters).numRegionServers(numRegionServers).rsPorts(rsPorts).build();<a name="line.1153"></a>
-<span class="sourceLineNo">1154</span>    return startMiniHBaseCluster(option);<a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>  }<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span><a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>  /**<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>   * Starts up mini hbase cluster.<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>   * Usually you won't want this.  You'll usually want {@link #startMiniCluster()}.<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.1160"></a>
-<span class="

<TRUNCATED>

[26/29] hbase-site git commit: Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/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 60f4eac..c9da8c1 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/MobStoreScanner.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/MobStoreScanner.html
@@ -230,7 +230,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#isScanUsePread--">isScanUsePread</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#next--">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/reg
 ionserver/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-org.apache.hadoop.hbase.regionserver.HStore-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>
+<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#isScanUsePread--">isScanUsePread</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#newKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">newKVHeap</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#next--">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-org.apache.hadoop.hbase.regionserver.HStore-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-">trySkipToN
 extColumn</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/70f4ddbc/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 cd705d2..ebc8938 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/ReversedMobStoreScanner.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/ReversedMobStoreScanner.html
@@ -235,14 +235,14 @@ 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/ReversedStoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">ReversedStoreScanner</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#backwardSeek-org.apache.hadoop.hbase.Cell-">backwardSeek</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.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/ReversedStoreScanner.html#reseek-org.apache.hadoop.hbase.Cell-">reseek</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#resetKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">resetKVHeap</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#seek-org.apache.hadoop.hbase.Cell-">seek</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#seekAsDirection-org.apache.hadoop.hbase.Cell-">seekAsDirection</a>, <a href="../../../../../
 org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#seekScanners-java.util.List-org.apache.hadoop.hbase.Cell-boolean-boolean-">seekScanners</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#seekToNextRow-org.apache.hadoop.hbase.Cell-">seekToNextRow</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#seekToPreviousRow-org.apache.hadoop.hbase.Cell-">seekToPreviousRow</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#backwardSeek-org.apache.hadoop.hbase.Cell-">backwardSeek</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.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/ReversedStoreScanner.html#newKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">newKVHeap</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#reseek-org.apache.hadoop.hbase.Cell-">reseek</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#seek-org.apache.hadoop.hbase.Cell-">seek</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#seekAsDirection-org.apache.hadoop.hbase.Cell-">seekAsDirection</a>, <a href="../../../../../org/
 apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#seekScanners-java.util.List-org.apache.hadoop.hbase.Cell-boolean-boolean-">seekScanners</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#seekToNextRow-org.apache.hadoop.hbase.Cell-">seekToNextRow</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#seekToPreviousRow-org.apache.hadoop.hbase.Cell-">seekToPreviousRow</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.StoreScanner">
 <!--   -->
 </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#isScanUsePread--">isScanUsePread</a>, 
 <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#next--">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-org.apache.hadoop.hbase.regionserver.HStore-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#trySwitchToSt
 reamRead--">trySwitchToStreamRead</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#isScanUsePread--">isScanUsePread</a>, 
 <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#next--">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#resetKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">resetKVHeap</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#selectScannersFrom-org.apache.hadoop.hbase.regionserver.HStore-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.htm
 l#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/70f4ddbc/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 97c4715..5200ca8 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html
@@ -228,16 +228,16 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 </td>
 </tr>
 <tr id="i2" class="altColor">
+<td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#newKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">newKVHeap</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
+         <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>
+</tr>
+<tr id="i3" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#reseek-org.apache.hadoop.hbase.Cell-">reseek</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)</code>
 <div class="block">Reseek the scanner at or after the specified KeyValue.</div>
 </td>
 </tr>
-<tr id="i3" class="rowColor">
-<td class="colFirst"><code>protected void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#resetKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">resetKVHeap</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
-           <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>
-</tr>
 <tr id="i4" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#seek-org.apache.hadoop.hbase.Cell-">seek</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)</code>
@@ -276,7 +276,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#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-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-org.apache.hadoop.hbase.regionserver.HStore-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>
+<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#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-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#resetKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">resetKVHeap</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#selectScannersFrom-org.apache.hadoop.hbase.regionserver.HStore-java.util.List-">selectScannersFrom</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#shipped--">shipped</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreSca
 nner.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">
@@ -385,18 +385,18 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <!--   -->
 </a>
 <h3>Method Detail</h3>
-<a name="resetKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">
+<a name="newKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>resetKVHeap</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#line.62">resetKVHeap</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
-                           <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)
-                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<h4>newKVHeap</h4>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#line.62">newKVHeap</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
+                                 <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)
+                          throws <a href="https://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>
-<dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#resetKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">resetKVHeap</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreScanner</a></code></dd>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#newKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">newKVHeap</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreScanner</a></code></dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
 </dl>
@@ -408,7 +408,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>seekScanners</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#line.69">seekScanners</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#line.68">seekScanners</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/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;seekKey,
                             boolean&nbsp;isLazy,
                             boolean&nbsp;isParallelSeek)
@@ -431,7 +431,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>seekToNextRow</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#line.86">seekToNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#line.85">seekToNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)
                          throws <a href="https://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>
@@ -447,7 +447,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>seekAsDirection</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#line.94">seekAsDirection</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#line.93">seekAsDirection</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Do a backwardSeek in a reversed StoreScanner(scan backward)</div>
 <dl>
@@ -466,7 +466,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>checkScanOrder</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#line.99">checkScanOrder</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;prevKV,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#line.98">checkScanOrder</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;prevKV,
                               <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv,
                               <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)
                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -486,7 +486,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>reseek</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#line.111">reseek</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#line.110">reseek</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)
                throws <a href="https://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/KeyValueScanner.html#reseek-org.apache.hadoop.hbase.Cell-">KeyValueScanner</a></code></span></div>
 <div class="block">Reseek the scanner at or after the specified KeyValue.
@@ -513,7 +513,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>seek</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#line.117">seek</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#line.116">seek</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)
              throws <a href="https://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/KeyValueScanner.html#seek-org.apache.hadoop.hbase.Cell-">KeyValueScanner</a></code></span></div>
 <div class="block">Seek the scanner at or after the specified KeyValue.</div>
@@ -537,7 +537,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>seekToPreviousRow</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#line.123">seekToPreviousRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#line.122">seekToPreviousRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)
                           throws <a href="https://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/KeyValueScanner.html#seekToPreviousRow-org.apache.hadoop.hbase.Cell-">KeyValueScanner</a></code></span></div>
 <div class="block">Seek the scanner at the first Cell of the row which is the previous row
@@ -563,7 +563,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockListLast">
 <li class="blockList">
 <h4>backwardSeek</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#line.131">backwardSeek</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/ReversedStoreScanner.html#line.130">backwardSeek</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)
                      throws <a href="https://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/KeyValueScanner.html#backwardSeek-org.apache.hadoop.hbase.Cell-">KeyValueScanner</a></code></span></div>
 <div class="block">Seek the scanner at or before the row of specified Cell, it firstly

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/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 3fe9134..efaa07e 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/StoreScanner.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/StoreScanner.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":9,"i4":10,"i5":10,"i6":9,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":9,"i4":10,"i5":10,"i6":9,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":10,"i32":10,"i33":10,"i34":10};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -515,76 +515,81 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 </td>
 </tr>
 <tr id="i13" class="rowColor">
+<td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#newKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">newKVHeap</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
+         <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>
+</tr>
+<tr id="i14" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#next--">next</a></span>()</code>
 <div class="block">Return the next Cell in this scanner, iterating the scanner</div>
 </td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#next-java.util.List-org.apache.hadoop.hbase.regionserver.ScannerContext-">next</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResult,
     <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext)</code>
 <div class="block">Get the next row of values from this Store.</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/StoreScanner.html#parallelSeek-java.util.List-org.apache.hadoop.hbase.Cell-">parallelSeek</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
             <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)</code>
 <div class="block">Seek storefiles in parallel to optimize IO latency as much as possible</div>
 </td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#peek--">peek</a></span>()</code>
 <div class="block">Look at the next Cell in this scanner, but do not iterate scanner.</div>
 </td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#reopenAfterFlush--">reopenAfterFlush</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i19" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#reseek-org.apache.hadoop.hbase.Cell-">reseek</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)</code>
 <div class="block">Reseek the scanner at or after the specified KeyValue.</div>
 </td>
 </tr>
-<tr id="i19" class="rowColor">
+<tr id="i20" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><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="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
            <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)</code>&nbsp;</td>
 </tr>
-<tr id="i20" class="altColor">
+<tr id="i21" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#resetQueryMatcher-org.apache.hadoop.hbase.Cell-">resetQueryMatcher</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;lastTopKey)</code>&nbsp;</td>
 </tr>
-<tr id="i21" class="rowColor">
+<tr id="i22" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#seek-org.apache.hadoop.hbase.Cell-">seek</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)</code>
 <div class="block">Seek the scanner at or after the specified KeyValue.</div>
 </td>
 </tr>
-<tr id="i22" class="altColor">
+<tr id="i23" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#seekAllScanner-org.apache.hadoop.hbase.regionserver.ScanInfo-java.util.List-">seekAllScanner</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a>&nbsp;scanInfo,
               <a href="https://docs.oracle.com/javase/8/docs/api/java/util/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)</code>&nbsp;</td>
 </tr>
-<tr id="i23" class="rowColor">
+<tr id="i24" class="altColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#seekAsDirection-org.apache.hadoop.hbase.Cell-">seekAsDirection</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)</code>
 <div class="block">Do a reseek in a normal StoreScanner(scan forward)</div>
 </td>
 </tr>
-<tr id="i24" class="altColor">
+<tr id="i25" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#seekOrSkipToNextColumn-org.apache.hadoop.hbase.Cell-">seekOrSkipToNextColumn</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>&nbsp;</td>
 </tr>
-<tr id="i25" class="rowColor">
+<tr id="i26" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#seekOrSkipToNextRow-org.apache.hadoop.hbase.Cell-">seekOrSkipToNextRow</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>&nbsp;</td>
 </tr>
-<tr id="i26" class="altColor">
+<tr id="i27" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#seekScanners-java.util.List-org.apache.hadoop.hbase.Cell-boolean-boolean-">seekScanners</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
             <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;seekKey,
@@ -593,40 +598,40 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <div class="block">Seek the specified scanners with the given key</div>
 </td>
 </tr>
-<tr id="i27" class="rowColor">
+<tr id="i28" class="altColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#seekToNextRow-org.apache.hadoop.hbase.Cell-">seekToNextRow</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;c)</code>&nbsp;</td>
 </tr>
-<tr id="i28" class="altColor">
+<tr id="i29" class="rowColor">
 <td class="colFirst"><code>protected <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/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/StoreScanner.html#selectScannersFrom-org.apache.hadoop.hbase.regionserver.HStore-java.util.List-">selectScannersFrom</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
                   <a href="https://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 TTL.</div>
 </td>
 </tr>
-<tr id="i29" class="rowColor">
+<tr id="i30" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#shipped--">shipped</a></span>()</code>
 <div class="block">Called after a batch of rows scanned and set to be returned to client.</div>
 </td>
 </tr>
-<tr id="i30" class="altColor">
+<tr id="i31" class="rowColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#trySkipToNextColumn-org.apache.hadoop.hbase.Cell-">trySkipToNextColumn</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>
 <div class="block">See <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#trySkipToNextRow-org.apache.hadoop.hbase.Cell-"><code>trySkipToNextRow(Cell)</code></a></div>
 </td>
 </tr>
-<tr id="i31" class="rowColor">
+<tr id="i32" class="altColor">
 <td class="colFirst"><code>protected boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#trySkipToNextRow-org.apache.hadoop.hbase.Cell-">trySkipToNextRow</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>
 <div class="block">See if we should actually SEEK or rather just SKIP to the next Cell (see HBASE-13109).</div>
 </td>
 </tr>
-<tr id="i32" class="altColor">
+<tr id="i33" 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/StoreScanner.html#trySwitchToStreamRead--">trySwitchToStreamRead</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i33" class="rowColor">
+<tr id="i34" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreScanner.html#updateReaders-java.util.List-java.util.List-">updateReaders</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;sfs,
              <a href="https://docs.oracle.com/javase/8/docs/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;memStoreScanners)</code>
@@ -1337,7 +1342,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>resetKVHeap</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.406">resetKVHeap</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.407">resetKVHeap</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
                            <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)
                     throws <a href="https://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>
@@ -1346,13 +1351,28 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 </dl>
 </li>
 </ul>
+<a name="newKVHeap-java.util.List-org.apache.hadoop.hbase.CellComparator-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>newKVHeap</h4>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.413">newKVHeap</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
+                                 <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)
+                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
 <a name="selectScannersFrom-org.apache.hadoop.hbase.regionserver.HStore-java.util.List-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>selectScannersFrom</h4>
-<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.418">selectScannersFrom</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
+<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/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.424">selectScannersFrom</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
                                                    <a href="https://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)</pre>
 <div class="block">Filters the given list of scanners using Bloom filter, time range, and TTL.
  <p>
@@ -1365,7 +1385,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>peek</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.454">peek</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.460">peek</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html#peek--">KeyValueScanner</a></code></span></div>
 <div class="block">Look at the next Cell in this scanner, but do not iterate scanner.
  NOTICE: The returned cell has not been passed into ScanQueryMatcher. So it may not be what the
@@ -1384,7 +1404,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>next</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.459">next</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.465">next</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html#next--">KeyValueScanner</a></code></span></div>
 <div class="block">Return the next Cell in this scanner, iterating the scanner</div>
 <dl>
@@ -1401,7 +1421,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.465">close</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.471">close</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html#close--">KeyValueScanner</a></code></span></div>
 <div class="block">Close the KeyValue scanner.</div>
 <dl>
@@ -1422,7 +1442,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.469">close</a>(boolean&nbsp;withDelayedScannersClose)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.475">close</a>(boolean&nbsp;withDelayedScannersClose)</pre>
 </li>
 </ul>
 <a name="seek-org.apache.hadoop.hbase.Cell-">
@@ -1431,7 +1451,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>seek</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.499">seek</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.505">seek</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;key)
              throws <a href="https://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/KeyValueScanner.html#seek-org.apache.hadoop.hbase.Cell-">KeyValueScanner</a></code></span></div>
 <div class="block">Seek the scanner at or after the specified KeyValue.</div>
@@ -1453,7 +1473,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>next</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.513">next</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResult,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.519">next</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResult,
                     <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext)
              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get the next row of values from this Store.</div>
@@ -1476,7 +1496,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>needToReturn</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.NextState.html" title="enum in org.apache.hadoop.hbase.regionserver">ScannerContext.NextState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.729">needToReturn</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResult)</pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.NextState.html" title="enum in org.apache.hadoop.hbase.regionserver">ScannerContext.NextState</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.735">needToReturn</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResult)</pre>
 <div class="block">If the top cell won't be flushed into disk, the new top cell may be
  changed after #reopenAfterFlush. Because the older top cell only exist
  in the memstore scanner but the memstore scanner is replaced by hfile
@@ -1498,7 +1518,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>seekOrSkipToNextRow</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.736">seekOrSkipToNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.742">seekOrSkipToNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)
                           throws <a href="https://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>
@@ -1512,7 +1532,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>seekOrSkipToNextColumn</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.747">seekOrSkipToNextColumn</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.753">seekOrSkipToNextColumn</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)
                              throws <a href="https://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>
@@ -1526,7 +1546,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>trySkipToNextRow</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.803">trySkipToNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.809">trySkipToNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)
                             throws <a href="https://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 if we should actually SEEK or rather just SKIP to the next Cell (see HBASE-13109).
  ScanQueryMatcher may issue SEEK hints, such as seek to next column, next row,
@@ -1589,7 +1609,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>trySkipToNextColumn</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.829">trySkipToNextColumn</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.835">trySkipToNextColumn</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)
                                throws <a href="https://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/StoreScanner.html#trySkipToNextRow-org.apache.hadoop.hbase.Cell-"><code>trySkipToNextRow(Cell)</code></a></div>
 <dl>
@@ -1608,7 +1628,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>getReadPoint</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.856">getReadPoint</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.862">getReadPoint</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/ChangedReadersObserver.html#getReadPoint--">getReadPoint</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/ChangedReadersObserver.html" title="interface in org.apache.hadoop.hbase.regionserver">ChangedReadersObserver</a></code></dd>
@@ -1623,7 +1643,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>clearAndClose</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.860">clearAndClose</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners)</pre>
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.866">clearAndClose</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners)</pre>
 </li>
 </ul>
 <a name="updateReaders-java.util.List-java.util.List-">
@@ -1632,7 +1652,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>updateReaders</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.869">updateReaders</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;sfs,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.875">updateReaders</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;sfs,
                           <a href="https://docs.oracle.com/javase/8/docs/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;memStoreScanners)
                    throws <a href="https://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/ChangedReadersObserver.html#updateReaders-java.util.List-java.util.List-">ChangedReadersObserver</a></code></span></div>
@@ -1654,7 +1674,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>reopenAfterFlush</h4>
-<pre>protected final&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.901">reopenAfterFlush</a>()
+<pre>protected final&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.907">reopenAfterFlush</a>()
                                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1670,7 +1690,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>resetQueryMatcher</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.948">resetQueryMatcher</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;lastTopKey)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.954">resetQueryMatcher</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;lastTopKey)</pre>
 </li>
 </ul>
 <a name="checkScanOrder-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.Cell-org.apache.hadoop.hbase.CellComparator-">
@@ -1679,7 +1699,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>checkScanOrder</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.970">checkScanOrder</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;prevKV,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.976">checkScanOrder</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;prevKV,
                               <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv,
                               <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;comparator)
                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -1700,7 +1720,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>seekToNextRow</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.978">seekToNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;c)
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.984">seekToNextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;c)
                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -1714,7 +1734,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>seekAsDirection</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.988">seekAsDirection</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.994">seekAsDirection</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Do a reseek in a normal StoreScanner(scan forward)</div>
 <dl>
@@ -1733,7 +1753,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>reseek</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.994">reseek</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1000">reseek</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;kv)
                throws <a href="https://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/KeyValueScanner.html#reseek-org.apache.hadoop.hbase.Cell-">KeyValueScanner</a></code></span></div>
 <div class="block">Reseek the scanner at or after the specified KeyValue.
@@ -1758,7 +1778,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>trySwitchToStreamRead</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1005">trySwitchToStreamRead</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1011">trySwitchToStreamRead</a>()</pre>
 </li>
 </ul>
 <a name="checkFlushed--">
@@ -1767,7 +1787,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.1055">checkFlushed</a>()</pre>
+<pre>protected final&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1061">checkFlushed</a>()</pre>
 </li>
 </ul>
 <a name="parallelSeek-java.util.List-org.apache.hadoop.hbase.Cell-">
@@ -1776,7 +1796,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.1081">parallelSeek</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/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.1087">parallelSeek</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/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="https://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>
@@ -1795,7 +1815,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
 <ul class="blockList">
 <li class="blockList">
 <h4>getAllScannersForTesting</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/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.1117">getAllScannersForTesting</a>()</pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/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.1123">getAllScannersForTesting</a>()</pre>
 <div class="block">Used in testing.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -1809,7 +1829,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.1127">enableLazySeekGlobally</a>(boolean&nbsp;enable)</pre>
+<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1133">enableLazySeekGlobally</a>(boolean&nbsp;enable)</pre>
 </li>
 </ul>
 <a name="getEstimatedNumberOfKvsScanned--">
@@ -1818,7 +1838,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.1134">getEstimatedNumberOfKvsScanned</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1140">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>
@@ -1831,7 +1851,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.1139">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.1145">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>
@@ -1850,7 +1870,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.1144">shipped</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1150">shipped</a>()
              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Shipper.html#shipped--">Shipper</a></code></span></div>
 <div class="block">Called after a batch of rows scanned and set to be returned to client. Any in between cleanup


[12/29] hbase-site git commit: Published site at 44dec60054d1c45880d591c74a023f7a534e6d73.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/70f4ddbc/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html
index 5c3d7f4..ef2cd13 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html
@@ -721,3236 +721,3236 @@
 <span class="sourceLineNo">713</span>      new Path(root, "mapreduce-am-staging-root-dir").toString());<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>  /**<a name="line.717"></a>
-<span class="sourceLineNo">718</span>   *  Get the HBase setting for dfs.client.read.shortcircuit from the conf or a system property.<a name="line.718"></a>
-<span class="sourceLineNo">719</span>   *  This allows to specify this parameter on the command line.<a name="line.719"></a>
-<span class="sourceLineNo">720</span>   *   If not set, default is true.<a name="line.720"></a>
-<span class="sourceLineNo">721</span>   */<a name="line.721"></a>
-<span class="sourceLineNo">722</span>  public boolean isReadShortCircuitOn(){<a name="line.722"></a>
-<span class="sourceLineNo">723</span>    final String propName = "hbase.tests.use.shortcircuit.reads";<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    String readOnProp = System.getProperty(propName);<a name="line.724"></a>
-<span class="sourceLineNo">725</span>    if (readOnProp != null){<a name="line.725"></a>
-<span class="sourceLineNo">726</span>      return  Boolean.parseBoolean(readOnProp);<a name="line.726"></a>
-<span class="sourceLineNo">727</span>    } else {<a name="line.727"></a>
-<span class="sourceLineNo">728</span>      return conf.getBoolean(propName, false);<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><a name="line.731"></a>
-<span class="sourceLineNo">732</span>  /** Enable the short circuit read, unless configured differently.<a name="line.732"></a>
-<span class="sourceLineNo">733</span>   * Set both HBase and HDFS settings, including skipping the hdfs checksum checks.<a name="line.733"></a>
-<span class="sourceLineNo">734</span>   */<a name="line.734"></a>
-<span class="sourceLineNo">735</span>  private void enableShortCircuit() {<a name="line.735"></a>
-<span class="sourceLineNo">736</span>    if (isReadShortCircuitOn()) {<a name="line.736"></a>
-<span class="sourceLineNo">737</span>      String curUser = System.getProperty("user.name");<a name="line.737"></a>
-<span class="sourceLineNo">738</span>      LOG.info("read short circuit is ON for user " + curUser);<a name="line.738"></a>
-<span class="sourceLineNo">739</span>      // read short circuit, for hdfs<a name="line.739"></a>
-<span class="sourceLineNo">740</span>      conf.set("dfs.block.local-path-access.user", curUser);<a name="line.740"></a>
-<span class="sourceLineNo">741</span>      // read short circuit, for hbase<a name="line.741"></a>
-<span class="sourceLineNo">742</span>      conf.setBoolean("dfs.client.read.shortcircuit", true);<a name="line.742"></a>
-<span class="sourceLineNo">743</span>      // Skip checking checksum, for the hdfs client and the datanode<a name="line.743"></a>
-<span class="sourceLineNo">744</span>      conf.setBoolean("dfs.client.read.shortcircuit.skip.checksum", true);<a name="line.744"></a>
-<span class="sourceLineNo">745</span>    } else {<a name="line.745"></a>
-<span class="sourceLineNo">746</span>      LOG.info("read short circuit is OFF");<a name="line.746"></a>
-<span class="sourceLineNo">747</span>    }<a name="line.747"></a>
-<span class="sourceLineNo">748</span>  }<a name="line.748"></a>
-<span class="sourceLineNo">749</span><a name="line.749"></a>
-<span class="sourceLineNo">750</span>  private String createDirAndSetProperty(final String relPath, String property) {<a name="line.750"></a>
-<span class="sourceLineNo">751</span>    String path = getDataTestDir(relPath).toString();<a name="line.751"></a>
-<span class="sourceLineNo">752</span>    System.setProperty(property, path);<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    conf.set(property, path);<a name="line.753"></a>
-<span class="sourceLineNo">754</span>    new File(path).mkdirs();<a name="line.754"></a>
-<span class="sourceLineNo">755</span>    LOG.info("Setting " + property + " to " + path + " in system properties and HBase conf");<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    return path;<a name="line.756"></a>
-<span class="sourceLineNo">757</span>  }<a name="line.757"></a>
-<span class="sourceLineNo">758</span><a name="line.758"></a>
-<span class="sourceLineNo">759</span>  /**<a name="line.759"></a>
-<span class="sourceLineNo">760</span>   * Shuts down instance created by call to {@link #startMiniDFSCluster(int)}<a name="line.760"></a>
-<span class="sourceLineNo">761</span>   * or does nothing.<a name="line.761"></a>
-<span class="sourceLineNo">762</span>   * @throws IOException<a name="line.762"></a>
-<span class="sourceLineNo">763</span>   */<a name="line.763"></a>
-<span class="sourceLineNo">764</span>  public void shutdownMiniDFSCluster() throws IOException {<a name="line.764"></a>
-<span class="sourceLineNo">765</span>    if (this.dfsCluster != null) {<a name="line.765"></a>
-<span class="sourceLineNo">766</span>      // The below throws an exception per dn, AsynchronousCloseException.<a name="line.766"></a>
-<span class="sourceLineNo">767</span>      this.dfsCluster.shutdown();<a name="line.767"></a>
-<span class="sourceLineNo">768</span>      dfsCluster = null;<a name="line.768"></a>
-<span class="sourceLineNo">769</span>      dataTestDirOnTestFS = null;<a name="line.769"></a>
-<span class="sourceLineNo">770</span>      FSUtils.setFsDefault(this.conf, new Path("file:///"));<a name="line.770"></a>
-<span class="sourceLineNo">771</span>    }<a name="line.771"></a>
-<span class="sourceLineNo">772</span>  }<a name="line.772"></a>
-<span class="sourceLineNo">773</span><a name="line.773"></a>
-<span class="sourceLineNo">774</span>  /**<a name="line.774"></a>
-<span class="sourceLineNo">775</span>   * Start up a minicluster of hbase, dfs, and zookeeper where WAL's walDir is created separately.<a name="line.775"></a>
-<span class="sourceLineNo">776</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.776"></a>
-<span class="sourceLineNo">777</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.777"></a>
-<span class="sourceLineNo">778</span>   * @return The mini HBase cluster created.<a name="line.778"></a>
-<span class="sourceLineNo">779</span>   * @see #shutdownMiniCluster()<a name="line.779"></a>
-<span class="sourceLineNo">780</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.780"></a>
-<span class="sourceLineNo">781</span>   */<a name="line.781"></a>
-<span class="sourceLineNo">782</span>  @Deprecated<a name="line.782"></a>
-<span class="sourceLineNo">783</span>  public MiniHBaseCluster startMiniCluster(boolean createWALDir) throws Exception {<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.784"></a>
-<span class="sourceLineNo">785</span>        .createWALDir(createWALDir).build();<a name="line.785"></a>
-<span class="sourceLineNo">786</span>    return startMiniCluster(option);<a name="line.786"></a>
-<span class="sourceLineNo">787</span>  }<a name="line.787"></a>
-<span class="sourceLineNo">788</span><a name="line.788"></a>
-<span class="sourceLineNo">789</span>  /**<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.791"></a>
-<span class="sourceLineNo">792</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.792"></a>
-<span class="sourceLineNo">793</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.793"></a>
-<span class="sourceLineNo">794</span>   * @return The mini HBase cluster created.<a name="line.794"></a>
-<span class="sourceLineNo">795</span>   * @see #shutdownMiniCluster()<a name="line.795"></a>
-<span class="sourceLineNo">796</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.796"></a>
-<span class="sourceLineNo">797</span>   */<a name="line.797"></a>
-<span class="sourceLineNo">798</span>  @Deprecated<a name="line.798"></a>
-<span class="sourceLineNo">799</span>  public MiniHBaseCluster startMiniCluster(int numSlaves, boolean createRootDir)<a name="line.799"></a>
-<span class="sourceLineNo">800</span>  throws Exception {<a name="line.800"></a>
-<span class="sourceLineNo">801</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.801"></a>
-<span class="sourceLineNo">802</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).createRootDir(createRootDir).build();<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    return startMiniCluster(option);<a name="line.803"></a>
-<span class="sourceLineNo">804</span>  }<a name="line.804"></a>
-<span class="sourceLineNo">805</span><a name="line.805"></a>
-<span class="sourceLineNo">806</span>  /**<a name="line.806"></a>
-<span class="sourceLineNo">807</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.807"></a>
-<span class="sourceLineNo">808</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.808"></a>
-<span class="sourceLineNo">809</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.809"></a>
-<span class="sourceLineNo">810</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.810"></a>
-<span class="sourceLineNo">811</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.811"></a>
-<span class="sourceLineNo">812</span>   * @return The mini HBase cluster created.<a name="line.812"></a>
-<span class="sourceLineNo">813</span>   * @see #shutdownMiniCluster()<a name="line.813"></a>
-<span class="sourceLineNo">814</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.814"></a>
-<span class="sourceLineNo">815</span>   */<a name="line.815"></a>
-<span class="sourceLineNo">816</span>  @Deprecated<a name="line.816"></a>
-<span class="sourceLineNo">817</span>  public MiniHBaseCluster startMiniCluster(int numSlaves, boolean createRootDir,<a name="line.817"></a>
-<span class="sourceLineNo">818</span>      boolean createWALDir) throws Exception {<a name="line.818"></a>
-<span class="sourceLineNo">819</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.819"></a>
-<span class="sourceLineNo">820</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).createRootDir(createRootDir)<a name="line.820"></a>
-<span class="sourceLineNo">821</span>        .createWALDir(createWALDir).build();<a name="line.821"></a>
-<span class="sourceLineNo">822</span>    return startMiniCluster(option);<a name="line.822"></a>
-<span class="sourceLineNo">823</span>  }<a name="line.823"></a>
-<span class="sourceLineNo">824</span><a name="line.824"></a>
-<span class="sourceLineNo">825</span>  /**<a name="line.825"></a>
-<span class="sourceLineNo">826</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.826"></a>
-<span class="sourceLineNo">827</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.827"></a>
-<span class="sourceLineNo">828</span>   * @param numMasters Master node number.<a name="line.828"></a>
-<span class="sourceLineNo">829</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.829"></a>
-<span class="sourceLineNo">830</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.830"></a>
-<span class="sourceLineNo">831</span>   * @return The mini HBase cluster created.<a name="line.831"></a>
-<span class="sourceLineNo">832</span>   * @see #shutdownMiniCluster()<a name="line.832"></a>
-<span class="sourceLineNo">833</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.833"></a>
-<span class="sourceLineNo">834</span>   */<a name="line.834"></a>
-<span class="sourceLineNo">835</span>  @Deprecated<a name="line.835"></a>
-<span class="sourceLineNo">836</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, boolean createRootDir)<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    throws Exception {<a name="line.837"></a>
-<span class="sourceLineNo">838</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.838"></a>
-<span class="sourceLineNo">839</span>        .numMasters(numMasters).numRegionServers(numSlaves).createRootDir(createRootDir)<a name="line.839"></a>
-<span class="sourceLineNo">840</span>        .numDataNodes(numSlaves).build();<a name="line.840"></a>
-<span class="sourceLineNo">841</span>    return startMiniCluster(option);<a name="line.841"></a>
-<span class="sourceLineNo">842</span>  }<a name="line.842"></a>
-<span class="sourceLineNo">843</span><a name="line.843"></a>
-<span class="sourceLineNo">844</span>  /**<a name="line.844"></a>
-<span class="sourceLineNo">845</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.845"></a>
-<span class="sourceLineNo">846</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.846"></a>
-<span class="sourceLineNo">847</span>   * @param numMasters Master node number.<a name="line.847"></a>
-<span class="sourceLineNo">848</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.848"></a>
-<span class="sourceLineNo">849</span>   * @return The mini HBase cluster created.<a name="line.849"></a>
-<span class="sourceLineNo">850</span>   * @see #shutdownMiniCluster()<a name="line.850"></a>
-<span class="sourceLineNo">851</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.851"></a>
-<span class="sourceLineNo">852</span>   */<a name="line.852"></a>
-<span class="sourceLineNo">853</span>  @Deprecated<a name="line.853"></a>
-<span class="sourceLineNo">854</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves) throws Exception {<a name="line.854"></a>
-<span class="sourceLineNo">855</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.855"></a>
-<span class="sourceLineNo">856</span>        .numMasters(numMasters).numRegionServers(numSlaves).numDataNodes(numSlaves).build();<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    return startMiniCluster(option);<a name="line.857"></a>
-<span class="sourceLineNo">858</span>  }<a name="line.858"></a>
-<span class="sourceLineNo">859</span><a name="line.859"></a>
-<span class="sourceLineNo">860</span>  /**<a name="line.860"></a>
-<span class="sourceLineNo">861</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.861"></a>
-<span class="sourceLineNo">862</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.862"></a>
-<span class="sourceLineNo">863</span>   * @param numMasters Master node number.<a name="line.863"></a>
-<span class="sourceLineNo">864</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.864"></a>
-<span class="sourceLineNo">865</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.865"></a>
-<span class="sourceLineNo">866</span>   *                      HDFS data node number.<a name="line.866"></a>
-<span class="sourceLineNo">867</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.867"></a>
-<span class="sourceLineNo">868</span>   * @return The mini HBase cluster created.<a name="line.868"></a>
-<span class="sourceLineNo">869</span>   * @see #shutdownMiniCluster()<a name="line.869"></a>
-<span class="sourceLineNo">870</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.870"></a>
-<span class="sourceLineNo">871</span>   */<a name="line.871"></a>
-<span class="sourceLineNo">872</span>  @Deprecated<a name="line.872"></a>
-<span class="sourceLineNo">873</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts,<a name="line.873"></a>
-<span class="sourceLineNo">874</span>      boolean createRootDir) throws Exception {<a name="line.874"></a>
-<span class="sourceLineNo">875</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.875"></a>
-<span class="sourceLineNo">876</span>        .numMasters(numMasters).numRegionServers(numSlaves).createRootDir(createRootDir)<a name="line.876"></a>
-<span class="sourceLineNo">877</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts).build();<a name="line.877"></a>
-<span class="sourceLineNo">878</span>    return startMiniCluster(option);<a name="line.878"></a>
-<span class="sourceLineNo">879</span>  }<a name="line.879"></a>
-<span class="sourceLineNo">880</span><a name="line.880"></a>
-<span class="sourceLineNo">881</span>  /**<a name="line.881"></a>
-<span class="sourceLineNo">882</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.882"></a>
-<span class="sourceLineNo">883</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.883"></a>
-<span class="sourceLineNo">884</span>   * @param numMasters Master node number.<a name="line.884"></a>
-<span class="sourceLineNo">885</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.885"></a>
-<span class="sourceLineNo">886</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.886"></a>
-<span class="sourceLineNo">887</span>   *                      HDFS data node number.<a name="line.887"></a>
-<span class="sourceLineNo">888</span>   * @return The mini HBase cluster created.<a name="line.888"></a>
-<span class="sourceLineNo">889</span>   * @see #shutdownMiniCluster()<a name="line.889"></a>
-<span class="sourceLineNo">890</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.890"></a>
-<span class="sourceLineNo">891</span>   */<a name="line.891"></a>
-<span class="sourceLineNo">892</span>  @Deprecated<a name="line.892"></a>
-<span class="sourceLineNo">893</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts)<a name="line.893"></a>
-<span class="sourceLineNo">894</span>      throws Exception {<a name="line.894"></a>
-<span class="sourceLineNo">895</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.895"></a>
-<span class="sourceLineNo">896</span>        .numMasters(numMasters).numRegionServers(numSlaves)<a name="line.896"></a>
-<span class="sourceLineNo">897</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts).build();<a name="line.897"></a>
-<span class="sourceLineNo">898</span>    return startMiniCluster(option);<a name="line.898"></a>
-<span class="sourceLineNo">899</span>  }<a name="line.899"></a>
-<span class="sourceLineNo">900</span><a name="line.900"></a>
-<span class="sourceLineNo">901</span>  /**<a name="line.901"></a>
-<span class="sourceLineNo">902</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.902"></a>
-<span class="sourceLineNo">903</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.903"></a>
-<span class="sourceLineNo">904</span>   * @param numMasters Master node number.<a name="line.904"></a>
-<span class="sourceLineNo">905</span>   * @param numRegionServers Number of region servers.<a name="line.905"></a>
-<span class="sourceLineNo">906</span>   * @param numDataNodes Number of datanodes.<a name="line.906"></a>
-<span class="sourceLineNo">907</span>   * @return The mini HBase cluster created.<a name="line.907"></a>
-<span class="sourceLineNo">908</span>   * @see #shutdownMiniCluster()<a name="line.908"></a>
-<span class="sourceLineNo">909</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.909"></a>
-<span class="sourceLineNo">910</span>   */<a name="line.910"></a>
-<span class="sourceLineNo">911</span>  @Deprecated<a name="line.911"></a>
-<span class="sourceLineNo">912</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes)<a name="line.912"></a>
-<span class="sourceLineNo">913</span>      throws Exception {<a name="line.913"></a>
-<span class="sourceLineNo">914</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.914"></a>
-<span class="sourceLineNo">915</span>        .numMasters(numMasters).numRegionServers(numRegionServers).numDataNodes(numDataNodes)<a name="line.915"></a>
-<span class="sourceLineNo">916</span>        .build();<a name="line.916"></a>
-<span class="sourceLineNo">917</span>    return startMiniCluster(option);<a name="line.917"></a>
-<span class="sourceLineNo">918</span>  }<a name="line.918"></a>
-<span class="sourceLineNo">919</span><a name="line.919"></a>
-<span class="sourceLineNo">920</span>  /**<a name="line.920"></a>
-<span class="sourceLineNo">921</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.921"></a>
-<span class="sourceLineNo">922</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.922"></a>
-<span class="sourceLineNo">923</span>   * @param numMasters Master node number.<a name="line.923"></a>
-<span class="sourceLineNo">924</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.924"></a>
-<span class="sourceLineNo">925</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.925"></a>
-<span class="sourceLineNo">926</span>   *                      HDFS data node number.<a name="line.926"></a>
-<span class="sourceLineNo">927</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.927"></a>
-<span class="sourceLineNo">928</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.928"></a>
-<span class="sourceLineNo">929</span>   * @return The mini HBase cluster created.<a name="line.929"></a>
-<span class="sourceLineNo">930</span>   * @see #shutdownMiniCluster()<a name="line.930"></a>
-<span class="sourceLineNo">931</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.931"></a>
-<span class="sourceLineNo">932</span>   */<a name="line.932"></a>
-<span class="sourceLineNo">933</span>  @Deprecated<a name="line.933"></a>
-<span class="sourceLineNo">934</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts,<a name="line.934"></a>
-<span class="sourceLineNo">935</span>      Class&lt;? extends HMaster&gt; masterClass,<a name="line.935"></a>
-<span class="sourceLineNo">936</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass)<a name="line.936"></a>
-<span class="sourceLineNo">937</span>      throws Exception {<a name="line.937"></a>
-<span class="sourceLineNo">938</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.938"></a>
-<span class="sourceLineNo">939</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.939"></a>
-<span class="sourceLineNo">940</span>        .numRegionServers(numSlaves).rsClass(rsClass)<a name="line.940"></a>
-<span class="sourceLineNo">941</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts)<a name="line.941"></a>
-<span class="sourceLineNo">942</span>        .build();<a name="line.942"></a>
-<span class="sourceLineNo">943</span>    return startMiniCluster(option);<a name="line.943"></a>
-<span class="sourceLineNo">944</span>  }<a name="line.944"></a>
-<span class="sourceLineNo">945</span><a name="line.945"></a>
-<span class="sourceLineNo">946</span>  /**<a name="line.946"></a>
-<span class="sourceLineNo">947</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.947"></a>
-<span class="sourceLineNo">948</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.948"></a>
-<span class="sourceLineNo">949</span>   * @param numMasters Master node number.<a name="line.949"></a>
-<span class="sourceLineNo">950</span>   * @param numRegionServers Number of region servers.<a name="line.950"></a>
-<span class="sourceLineNo">951</span>   * @param numDataNodes Number of datanodes.<a name="line.951"></a>
-<span class="sourceLineNo">952</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.952"></a>
-<span class="sourceLineNo">953</span>   *                      HDFS data node number.<a name="line.953"></a>
-<span class="sourceLineNo">954</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.954"></a>
-<span class="sourceLineNo">955</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.955"></a>
-<span class="sourceLineNo">956</span>   * @return The mini HBase cluster created.<a name="line.956"></a>
-<span class="sourceLineNo">957</span>   * @see #shutdownMiniCluster()<a name="line.957"></a>
-<span class="sourceLineNo">958</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.958"></a>
-<span class="sourceLineNo">959</span>   */<a name="line.959"></a>
-<span class="sourceLineNo">960</span>  @Deprecated<a name="line.960"></a>
-<span class="sourceLineNo">961</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes,<a name="line.961"></a>
-<span class="sourceLineNo">962</span>      String[] dataNodeHosts, Class&lt;? extends HMaster&gt; masterClass,<a name="line.962"></a>
-<span class="sourceLineNo">963</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass)<a name="line.963"></a>
-<span class="sourceLineNo">964</span>    throws Exception {<a name="line.964"></a>
-<span class="sourceLineNo">965</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.965"></a>
-<span class="sourceLineNo">966</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.966"></a>
-<span class="sourceLineNo">967</span>        .numRegionServers(numRegionServers).rsClass(rsClass)<a name="line.967"></a>
-<span class="sourceLineNo">968</span>        .numDataNodes(numDataNodes).dataNodeHosts(dataNodeHosts)<a name="line.968"></a>
-<span class="sourceLineNo">969</span>        .build();<a name="line.969"></a>
-<span class="sourceLineNo">970</span>    return startMiniCluster(option);<a name="line.970"></a>
-<span class="sourceLineNo">971</span>  }<a name="line.971"></a>
-<span class="sourceLineNo">972</span><a name="line.972"></a>
-<span class="sourceLineNo">973</span>  /**<a name="line.973"></a>
-<span class="sourceLineNo">974</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.974"></a>
-<span class="sourceLineNo">975</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.975"></a>
-<span class="sourceLineNo">976</span>   * @param numMasters Master node number.<a name="line.976"></a>
-<span class="sourceLineNo">977</span>   * @param numRegionServers Number of region servers.<a name="line.977"></a>
-<span class="sourceLineNo">978</span>   * @param numDataNodes Number of datanodes.<a name="line.978"></a>
-<span class="sourceLineNo">979</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.979"></a>
-<span class="sourceLineNo">980</span>   *                      HDFS data node number.<a name="line.980"></a>
-<span class="sourceLineNo">981</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.981"></a>
-<span class="sourceLineNo">982</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.982"></a>
-<span class="sourceLineNo">983</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.983"></a>
-<span class="sourceLineNo">984</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.984"></a>
-<span class="sourceLineNo">985</span>   * @return The mini HBase cluster created.<a name="line.985"></a>
-<span class="sourceLineNo">986</span>   * @see #shutdownMiniCluster()<a name="line.986"></a>
-<span class="sourceLineNo">987</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.987"></a>
-<span class="sourceLineNo">988</span>   */<a name="line.988"></a>
-<span class="sourceLineNo">989</span>  @Deprecated<a name="line.989"></a>
-<span class="sourceLineNo">990</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes,<a name="line.990"></a>
-<span class="sourceLineNo">991</span>      String[] dataNodeHosts, Class&lt;? extends HMaster&gt; masterClass,<a name="line.991"></a>
-<span class="sourceLineNo">992</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass, boolean createRootDir,<a name="line.992"></a>
-<span class="sourceLineNo">993</span>      boolean createWALDir) throws Exception {<a name="line.993"></a>
-<span class="sourceLineNo">994</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.994"></a>
-<span class="sourceLineNo">995</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.995"></a>
-<span class="sourceLineNo">996</span>        .numRegionServers(numRegionServers).rsClass(rsClass)<a name="line.996"></a>
-<span class="sourceLineNo">997</span>        .numDataNodes(numDataNodes).dataNodeHosts(dataNodeHosts)<a name="line.997"></a>
-<span class="sourceLineNo">998</span>        .createRootDir(createRootDir).createWALDir(createWALDir)<a name="line.998"></a>
-<span class="sourceLineNo">999</span>        .build();<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>    return startMiniCluster(option);<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>  }<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span><a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>  /**<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>   * Start up a minicluster of hbase, dfs and zookeeper clusters with given slave node number.<a name="line.1004"></a>
-<span class="sourceLineNo">1005</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>   * @param numSlaves slave node number, for both HBase region server and HDFS data node.<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span>   * @see #startMiniCluster(StartMiniClusterOption option)<a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>   * @see #shutdownMiniDFSCluster()<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>   */<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>  public MiniHBaseCluster startMiniCluster(int numSlaves) throws Exception {<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.1011"></a>
-<span class="sourceLineNo">1012</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).build();<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>    return startMiniCluster(option);<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>  }<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span><a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>  /**<a name="line.1016"></a>
-<span class="sourceLineNo">1017</span>   * Start up a minicluster of hbase, dfs and zookeeper all using default options.<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>   * Option default value can be found in {@link StartMiniClusterOption.Builder}.<a name="line.1018"></a>
+<span class="sourceLineNo">716</span>  /**<a name="line.716"></a>
+<span class="sourceLineNo">717</span>   *  Check whether the tests should assume NEW_VERSION_BEHAVIOR when creating<a name="line.717"></a>
+<span class="sourceLineNo">718</span>   *  new column families. Default to false.<a name="line.718"></a>
+<span class="sourceLineNo">719</span>   */<a name="line.719"></a>
+<span class="sourceLineNo">720</span>  public boolean isNewVersionBehaviorEnabled(){<a name="line.720"></a>
+<span class="sourceLineNo">721</span>    final String propName = "hbase.tests.new.version.behavior";<a name="line.721"></a>
+<span class="sourceLineNo">722</span>    String v = System.getProperty(propName);<a name="line.722"></a>
+<span class="sourceLineNo">723</span>    if (v != null){<a name="line.723"></a>
+<span class="sourceLineNo">724</span>      return Boolean.parseBoolean(v);<a name="line.724"></a>
+<span class="sourceLineNo">725</span>    }<a name="line.725"></a>
+<span class="sourceLineNo">726</span>    return false;<a name="line.726"></a>
+<span class="sourceLineNo">727</span>  }<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>   *  Get the HBase setting for dfs.client.read.shortcircuit from the conf or a system property.<a name="line.730"></a>
+<span class="sourceLineNo">731</span>   *  This allows to specify this parameter on the command line.<a name="line.731"></a>
+<span class="sourceLineNo">732</span>   *   If not set, default is true.<a name="line.732"></a>
+<span class="sourceLineNo">733</span>   */<a name="line.733"></a>
+<span class="sourceLineNo">734</span>  public boolean isReadShortCircuitOn(){<a name="line.734"></a>
+<span class="sourceLineNo">735</span>    final String propName = "hbase.tests.use.shortcircuit.reads";<a name="line.735"></a>
+<span class="sourceLineNo">736</span>    String readOnProp = System.getProperty(propName);<a name="line.736"></a>
+<span class="sourceLineNo">737</span>    if (readOnProp != null){<a name="line.737"></a>
+<span class="sourceLineNo">738</span>      return  Boolean.parseBoolean(readOnProp);<a name="line.738"></a>
+<span class="sourceLineNo">739</span>    } else {<a name="line.739"></a>
+<span class="sourceLineNo">740</span>      return conf.getBoolean(propName, false);<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><a name="line.743"></a>
+<span class="sourceLineNo">744</span>  /** Enable the short circuit read, unless configured differently.<a name="line.744"></a>
+<span class="sourceLineNo">745</span>   * Set both HBase and HDFS settings, including skipping the hdfs checksum checks.<a name="line.745"></a>
+<span class="sourceLineNo">746</span>   */<a name="line.746"></a>
+<span class="sourceLineNo">747</span>  private void enableShortCircuit() {<a name="line.747"></a>
+<span class="sourceLineNo">748</span>    if (isReadShortCircuitOn()) {<a name="line.748"></a>
+<span class="sourceLineNo">749</span>      String curUser = System.getProperty("user.name");<a name="line.749"></a>
+<span class="sourceLineNo">750</span>      LOG.info("read short circuit is ON for user " + curUser);<a name="line.750"></a>
+<span class="sourceLineNo">751</span>      // read short circuit, for hdfs<a name="line.751"></a>
+<span class="sourceLineNo">752</span>      conf.set("dfs.block.local-path-access.user", curUser);<a name="line.752"></a>
+<span class="sourceLineNo">753</span>      // read short circuit, for hbase<a name="line.753"></a>
+<span class="sourceLineNo">754</span>      conf.setBoolean("dfs.client.read.shortcircuit", true);<a name="line.754"></a>
+<span class="sourceLineNo">755</span>      // Skip checking checksum, for the hdfs client and the datanode<a name="line.755"></a>
+<span class="sourceLineNo">756</span>      conf.setBoolean("dfs.client.read.shortcircuit.skip.checksum", true);<a name="line.756"></a>
+<span class="sourceLineNo">757</span>    } else {<a name="line.757"></a>
+<span class="sourceLineNo">758</span>      LOG.info("read short circuit is OFF");<a name="line.758"></a>
+<span class="sourceLineNo">759</span>    }<a name="line.759"></a>
+<span class="sourceLineNo">760</span>  }<a name="line.760"></a>
+<span class="sourceLineNo">761</span><a name="line.761"></a>
+<span class="sourceLineNo">762</span>  private String createDirAndSetProperty(final String relPath, String property) {<a name="line.762"></a>
+<span class="sourceLineNo">763</span>    String path = getDataTestDir(relPath).toString();<a name="line.763"></a>
+<span class="sourceLineNo">764</span>    System.setProperty(property, path);<a name="line.764"></a>
+<span class="sourceLineNo">765</span>    conf.set(property, path);<a name="line.765"></a>
+<span class="sourceLineNo">766</span>    new File(path).mkdirs();<a name="line.766"></a>
+<span class="sourceLineNo">767</span>    LOG.info("Setting " + property + " to " + path + " in system properties and HBase conf");<a name="line.767"></a>
+<span class="sourceLineNo">768</span>    return path;<a name="line.768"></a>
+<span class="sourceLineNo">769</span>  }<a name="line.769"></a>
+<span class="sourceLineNo">770</span><a name="line.770"></a>
+<span class="sourceLineNo">771</span>  /**<a name="line.771"></a>
+<span class="sourceLineNo">772</span>   * Shuts down instance created by call to {@link #startMiniDFSCluster(int)}<a name="line.772"></a>
+<span class="sourceLineNo">773</span>   * or does nothing.<a name="line.773"></a>
+<span class="sourceLineNo">774</span>   * @throws IOException<a name="line.774"></a>
+<span class="sourceLineNo">775</span>   */<a name="line.775"></a>
+<span class="sourceLineNo">776</span>  public void shutdownMiniDFSCluster() throws IOException {<a name="line.776"></a>
+<span class="sourceLineNo">777</span>    if (this.dfsCluster != null) {<a name="line.777"></a>
+<span class="sourceLineNo">778</span>      // The below throws an exception per dn, AsynchronousCloseException.<a name="line.778"></a>
+<span class="sourceLineNo">779</span>      this.dfsCluster.shutdown();<a name="line.779"></a>
+<span class="sourceLineNo">780</span>      dfsCluster = null;<a name="line.780"></a>
+<span class="sourceLineNo">781</span>      dataTestDirOnTestFS = null;<a name="line.781"></a>
+<span class="sourceLineNo">782</span>      FSUtils.setFsDefault(this.conf, new Path("file:///"));<a name="line.782"></a>
+<span class="sourceLineNo">783</span>    }<a name="line.783"></a>
+<span class="sourceLineNo">784</span>  }<a name="line.784"></a>
+<span class="sourceLineNo">785</span><a name="line.785"></a>
+<span class="sourceLineNo">786</span>  /**<a name="line.786"></a>
+<span class="sourceLineNo">787</span>   * Start up a minicluster of hbase, dfs, and zookeeper where WAL's walDir is created separately.<a name="line.787"></a>
+<span class="sourceLineNo">788</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.788"></a>
+<span class="sourceLineNo">789</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.789"></a>
+<span class="sourceLineNo">790</span>   * @return The mini HBase cluster created.<a name="line.790"></a>
+<span class="sourceLineNo">791</span>   * @see #shutdownMiniCluster()<a name="line.791"></a>
+<span class="sourceLineNo">792</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.792"></a>
+<span class="sourceLineNo">793</span>   */<a name="line.793"></a>
+<span class="sourceLineNo">794</span>  @Deprecated<a name="line.794"></a>
+<span class="sourceLineNo">795</span>  public MiniHBaseCluster startMiniCluster(boolean createWALDir) throws Exception {<a name="line.795"></a>
+<span class="sourceLineNo">796</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.796"></a>
+<span class="sourceLineNo">797</span>        .createWALDir(createWALDir).build();<a name="line.797"></a>
+<span class="sourceLineNo">798</span>    return startMiniCluster(option);<a name="line.798"></a>
+<span class="sourceLineNo">799</span>  }<a name="line.799"></a>
+<span class="sourceLineNo">800</span><a name="line.800"></a>
+<span class="sourceLineNo">801</span>  /**<a name="line.801"></a>
+<span class="sourceLineNo">802</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.802"></a>
+<span class="sourceLineNo">803</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.803"></a>
+<span class="sourceLineNo">804</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.804"></a>
+<span class="sourceLineNo">805</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.805"></a>
+<span class="sourceLineNo">806</span>   * @return The mini HBase cluster created.<a name="line.806"></a>
+<span class="sourceLineNo">807</span>   * @see #shutdownMiniCluster()<a name="line.807"></a>
+<span class="sourceLineNo">808</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.808"></a>
+<span class="sourceLineNo">809</span>   */<a name="line.809"></a>
+<span class="sourceLineNo">810</span>  @Deprecated<a name="line.810"></a>
+<span class="sourceLineNo">811</span>  public MiniHBaseCluster startMiniCluster(int numSlaves, boolean createRootDir)<a name="line.811"></a>
+<span class="sourceLineNo">812</span>  throws Exception {<a name="line.812"></a>
+<span class="sourceLineNo">813</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.813"></a>
+<span class="sourceLineNo">814</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).createRootDir(createRootDir).build();<a name="line.814"></a>
+<span class="sourceLineNo">815</span>    return startMiniCluster(option);<a name="line.815"></a>
+<span class="sourceLineNo">816</span>  }<a name="line.816"></a>
+<span class="sourceLineNo">817</span><a name="line.817"></a>
+<span class="sourceLineNo">818</span>  /**<a name="line.818"></a>
+<span class="sourceLineNo">819</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.819"></a>
+<span class="sourceLineNo">820</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.820"></a>
+<span class="sourceLineNo">821</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.821"></a>
+<span class="sourceLineNo">822</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.822"></a>
+<span class="sourceLineNo">823</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.823"></a>
+<span class="sourceLineNo">824</span>   * @return The mini HBase cluster created.<a name="line.824"></a>
+<span class="sourceLineNo">825</span>   * @see #shutdownMiniCluster()<a name="line.825"></a>
+<span class="sourceLineNo">826</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.826"></a>
+<span class="sourceLineNo">827</span>   */<a name="line.827"></a>
+<span class="sourceLineNo">828</span>  @Deprecated<a name="line.828"></a>
+<span class="sourceLineNo">829</span>  public MiniHBaseCluster startMiniCluster(int numSlaves, boolean createRootDir,<a name="line.829"></a>
+<span class="sourceLineNo">830</span>      boolean createWALDir) throws Exception {<a name="line.830"></a>
+<span class="sourceLineNo">831</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.831"></a>
+<span class="sourceLineNo">832</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).createRootDir(createRootDir)<a name="line.832"></a>
+<span class="sourceLineNo">833</span>        .createWALDir(createWALDir).build();<a name="line.833"></a>
+<span class="sourceLineNo">834</span>    return startMiniCluster(option);<a name="line.834"></a>
+<span class="sourceLineNo">835</span>  }<a name="line.835"></a>
+<span class="sourceLineNo">836</span><a name="line.836"></a>
+<span class="sourceLineNo">837</span>  /**<a name="line.837"></a>
+<span class="sourceLineNo">838</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.838"></a>
+<span class="sourceLineNo">839</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.839"></a>
+<span class="sourceLineNo">840</span>   * @param numMasters Master node number.<a name="line.840"></a>
+<span class="sourceLineNo">841</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.841"></a>
+<span class="sourceLineNo">842</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.842"></a>
+<span class="sourceLineNo">843</span>   * @return The mini HBase cluster created.<a name="line.843"></a>
+<span class="sourceLineNo">844</span>   * @see #shutdownMiniCluster()<a name="line.844"></a>
+<span class="sourceLineNo">845</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.845"></a>
+<span class="sourceLineNo">846</span>   */<a name="line.846"></a>
+<span class="sourceLineNo">847</span>  @Deprecated<a name="line.847"></a>
+<span class="sourceLineNo">848</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, boolean createRootDir)<a name="line.848"></a>
+<span class="sourceLineNo">849</span>    throws Exception {<a name="line.849"></a>
+<span class="sourceLineNo">850</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.850"></a>
+<span class="sourceLineNo">851</span>        .numMasters(numMasters).numRegionServers(numSlaves).createRootDir(createRootDir)<a name="line.851"></a>
+<span class="sourceLineNo">852</span>        .numDataNodes(numSlaves).build();<a name="line.852"></a>
+<span class="sourceLineNo">853</span>    return startMiniCluster(option);<a name="line.853"></a>
+<span class="sourceLineNo">854</span>  }<a name="line.854"></a>
+<span class="sourceLineNo">855</span><a name="line.855"></a>
+<span class="sourceLineNo">856</span>  /**<a name="line.856"></a>
+<span class="sourceLineNo">857</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.857"></a>
+<span class="sourceLineNo">858</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.858"></a>
+<span class="sourceLineNo">859</span>   * @param numMasters Master node number.<a name="line.859"></a>
+<span class="sourceLineNo">860</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.860"></a>
+<span class="sourceLineNo">861</span>   * @return The mini HBase cluster created.<a name="line.861"></a>
+<span class="sourceLineNo">862</span>   * @see #shutdownMiniCluster()<a name="line.862"></a>
+<span class="sourceLineNo">863</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.863"></a>
+<span class="sourceLineNo">864</span>   */<a name="line.864"></a>
+<span class="sourceLineNo">865</span>  @Deprecated<a name="line.865"></a>
+<span class="sourceLineNo">866</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves) throws Exception {<a name="line.866"></a>
+<span class="sourceLineNo">867</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.867"></a>
+<span class="sourceLineNo">868</span>        .numMasters(numMasters).numRegionServers(numSlaves).numDataNodes(numSlaves).build();<a name="line.868"></a>
+<span class="sourceLineNo">869</span>    return startMiniCluster(option);<a name="line.869"></a>
+<span class="sourceLineNo">870</span>  }<a name="line.870"></a>
+<span class="sourceLineNo">871</span><a name="line.871"></a>
+<span class="sourceLineNo">872</span>  /**<a name="line.872"></a>
+<span class="sourceLineNo">873</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.873"></a>
+<span class="sourceLineNo">874</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.874"></a>
+<span class="sourceLineNo">875</span>   * @param numMasters Master node number.<a name="line.875"></a>
+<span class="sourceLineNo">876</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.876"></a>
+<span class="sourceLineNo">877</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.877"></a>
+<span class="sourceLineNo">878</span>   *                      HDFS data node number.<a name="line.878"></a>
+<span class="sourceLineNo">879</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.879"></a>
+<span class="sourceLineNo">880</span>   * @return The mini HBase cluster created.<a name="line.880"></a>
+<span class="sourceLineNo">881</span>   * @see #shutdownMiniCluster()<a name="line.881"></a>
+<span class="sourceLineNo">882</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.882"></a>
+<span class="sourceLineNo">883</span>   */<a name="line.883"></a>
+<span class="sourceLineNo">884</span>  @Deprecated<a name="line.884"></a>
+<span class="sourceLineNo">885</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts,<a name="line.885"></a>
+<span class="sourceLineNo">886</span>      boolean createRootDir) throws Exception {<a name="line.886"></a>
+<span class="sourceLineNo">887</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.887"></a>
+<span class="sourceLineNo">888</span>        .numMasters(numMasters).numRegionServers(numSlaves).createRootDir(createRootDir)<a name="line.888"></a>
+<span class="sourceLineNo">889</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts).build();<a name="line.889"></a>
+<span class="sourceLineNo">890</span>    return startMiniCluster(option);<a name="line.890"></a>
+<span class="sourceLineNo">891</span>  }<a name="line.891"></a>
+<span class="sourceLineNo">892</span><a name="line.892"></a>
+<span class="sourceLineNo">893</span>  /**<a name="line.893"></a>
+<span class="sourceLineNo">894</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.894"></a>
+<span class="sourceLineNo">895</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.895"></a>
+<span class="sourceLineNo">896</span>   * @param numMasters Master node number.<a name="line.896"></a>
+<span class="sourceLineNo">897</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.897"></a>
+<span class="sourceLineNo">898</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.898"></a>
+<span class="sourceLineNo">899</span>   *                      HDFS data node number.<a name="line.899"></a>
+<span class="sourceLineNo">900</span>   * @return The mini HBase cluster created.<a name="line.900"></a>
+<span class="sourceLineNo">901</span>   * @see #shutdownMiniCluster()<a name="line.901"></a>
+<span class="sourceLineNo">902</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.902"></a>
+<span class="sourceLineNo">903</span>   */<a name="line.903"></a>
+<span class="sourceLineNo">904</span>  @Deprecated<a name="line.904"></a>
+<span class="sourceLineNo">905</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts)<a name="line.905"></a>
+<span class="sourceLineNo">906</span>      throws Exception {<a name="line.906"></a>
+<span class="sourceLineNo">907</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.907"></a>
+<span class="sourceLineNo">908</span>        .numMasters(numMasters).numRegionServers(numSlaves)<a name="line.908"></a>
+<span class="sourceLineNo">909</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts).build();<a name="line.909"></a>
+<span class="sourceLineNo">910</span>    return startMiniCluster(option);<a name="line.910"></a>
+<span class="sourceLineNo">911</span>  }<a name="line.911"></a>
+<span class="sourceLineNo">912</span><a name="line.912"></a>
+<span class="sourceLineNo">913</span>  /**<a name="line.913"></a>
+<span class="sourceLineNo">914</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.914"></a>
+<span class="sourceLineNo">915</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.915"></a>
+<span class="sourceLineNo">916</span>   * @param numMasters Master node number.<a name="line.916"></a>
+<span class="sourceLineNo">917</span>   * @param numRegionServers Number of region servers.<a name="line.917"></a>
+<span class="sourceLineNo">918</span>   * @param numDataNodes Number of datanodes.<a name="line.918"></a>
+<span class="sourceLineNo">919</span>   * @return The mini HBase cluster created.<a name="line.919"></a>
+<span class="sourceLineNo">920</span>   * @see #shutdownMiniCluster()<a name="line.920"></a>
+<span class="sourceLineNo">921</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.921"></a>
+<span class="sourceLineNo">922</span>   */<a name="line.922"></a>
+<span class="sourceLineNo">923</span>  @Deprecated<a name="line.923"></a>
+<span class="sourceLineNo">924</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes)<a name="line.924"></a>
+<span class="sourceLineNo">925</span>      throws Exception {<a name="line.925"></a>
+<span class="sourceLineNo">926</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.926"></a>
+<span class="sourceLineNo">927</span>        .numMasters(numMasters).numRegionServers(numRegionServers).numDataNodes(numDataNodes)<a name="line.927"></a>
+<span class="sourceLineNo">928</span>        .build();<a name="line.928"></a>
+<span class="sourceLineNo">929</span>    return startMiniCluster(option);<a name="line.929"></a>
+<span class="sourceLineNo">930</span>  }<a name="line.930"></a>
+<span class="sourceLineNo">931</span><a name="line.931"></a>
+<span class="sourceLineNo">932</span>  /**<a name="line.932"></a>
+<span class="sourceLineNo">933</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.933"></a>
+<span class="sourceLineNo">934</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.934"></a>
+<span class="sourceLineNo">935</span>   * @param numMasters Master node number.<a name="line.935"></a>
+<span class="sourceLineNo">936</span>   * @param numSlaves Slave node number, for both HBase region server and HDFS data node.<a name="line.936"></a>
+<span class="sourceLineNo">937</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.937"></a>
+<span class="sourceLineNo">938</span>   *                      HDFS data node number.<a name="line.938"></a>
+<span class="sourceLineNo">939</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.939"></a>
+<span class="sourceLineNo">940</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.940"></a>
+<span class="sourceLineNo">941</span>   * @return The mini HBase cluster created.<a name="line.941"></a>
+<span class="sourceLineNo">942</span>   * @see #shutdownMiniCluster()<a name="line.942"></a>
+<span class="sourceLineNo">943</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.943"></a>
+<span class="sourceLineNo">944</span>   */<a name="line.944"></a>
+<span class="sourceLineNo">945</span>  @Deprecated<a name="line.945"></a>
+<span class="sourceLineNo">946</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numSlaves, String[] dataNodeHosts,<a name="line.946"></a>
+<span class="sourceLineNo">947</span>      Class&lt;? extends HMaster&gt; masterClass,<a name="line.947"></a>
+<span class="sourceLineNo">948</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass)<a name="line.948"></a>
+<span class="sourceLineNo">949</span>      throws Exception {<a name="line.949"></a>
+<span class="sourceLineNo">950</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.950"></a>
+<span class="sourceLineNo">951</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.951"></a>
+<span class="sourceLineNo">952</span>        .numRegionServers(numSlaves).rsClass(rsClass)<a name="line.952"></a>
+<span class="sourceLineNo">953</span>        .numDataNodes(numSlaves).dataNodeHosts(dataNodeHosts)<a name="line.953"></a>
+<span class="sourceLineNo">954</span>        .build();<a name="line.954"></a>
+<span class="sourceLineNo">955</span>    return startMiniCluster(option);<a name="line.955"></a>
+<span class="sourceLineNo">956</span>  }<a name="line.956"></a>
+<span class="sourceLineNo">957</span><a name="line.957"></a>
+<span class="sourceLineNo">958</span>  /**<a name="line.958"></a>
+<span class="sourceLineNo">959</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.959"></a>
+<span class="sourceLineNo">960</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.960"></a>
+<span class="sourceLineNo">961</span>   * @param numMasters Master node number.<a name="line.961"></a>
+<span class="sourceLineNo">962</span>   * @param numRegionServers Number of region servers.<a name="line.962"></a>
+<span class="sourceLineNo">963</span>   * @param numDataNodes Number of datanodes.<a name="line.963"></a>
+<span class="sourceLineNo">964</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.964"></a>
+<span class="sourceLineNo">965</span>   *                      HDFS data node number.<a name="line.965"></a>
+<span class="sourceLineNo">966</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.966"></a>
+<span class="sourceLineNo">967</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.967"></a>
+<span class="sourceLineNo">968</span>   * @return The mini HBase cluster created.<a name="line.968"></a>
+<span class="sourceLineNo">969</span>   * @see #shutdownMiniCluster()<a name="line.969"></a>
+<span class="sourceLineNo">970</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.970"></a>
+<span class="sourceLineNo">971</span>   */<a name="line.971"></a>
+<span class="sourceLineNo">972</span>  @Deprecated<a name="line.972"></a>
+<span class="sourceLineNo">973</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes,<a name="line.973"></a>
+<span class="sourceLineNo">974</span>      String[] dataNodeHosts, Class&lt;? extends HMaster&gt; masterClass,<a name="line.974"></a>
+<span class="sourceLineNo">975</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass)<a name="line.975"></a>
+<span class="sourceLineNo">976</span>    throws Exception {<a name="line.976"></a>
+<span class="sourceLineNo">977</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.977"></a>
+<span class="sourceLineNo">978</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.978"></a>
+<span class="sourceLineNo">979</span>        .numRegionServers(numRegionServers).rsClass(rsClass)<a name="line.979"></a>
+<span class="sourceLineNo">980</span>        .numDataNodes(numDataNodes).dataNodeHosts(dataNodeHosts)<a name="line.980"></a>
+<span class="sourceLineNo">981</span>        .build();<a name="line.981"></a>
+<span class="sourceLineNo">982</span>    return startMiniCluster(option);<a name="line.982"></a>
+<span class="sourceLineNo">983</span>  }<a name="line.983"></a>
+<span class="sourceLineNo">984</span><a name="line.984"></a>
+<span class="sourceLineNo">985</span>  /**<a name="line.985"></a>
+<span class="sourceLineNo">986</span>   * Start up a minicluster of hbase, dfs, and zookeeper.<a name="line.986"></a>
+<span class="sourceLineNo">987</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.987"></a>
+<span class="sourceLineNo">988</span>   * @param numMasters Master node number.<a name="line.988"></a>
+<span class="sourceLineNo">989</span>   * @param numRegionServers Number of region servers.<a name="line.989"></a>
+<span class="sourceLineNo">990</span>   * @param numDataNodes Number of datanodes.<a name="line.990"></a>
+<span class="sourceLineNo">991</span>   * @param dataNodeHosts The hostnames of DataNodes to run on. If not null, its size will overwrite<a name="line.991"></a>
+<span class="sourceLineNo">992</span>   *                      HDFS data node number.<a name="line.992"></a>
+<span class="sourceLineNo">993</span>   * @param masterClass The class to use as HMaster, or null for default.<a name="line.993"></a>
+<span class="sourceLineNo">994</span>   * @param rsClass The class to use as HRegionServer, or null for default.<a name="line.994"></a>
+<span class="sourceLineNo">995</span>   * @param createRootDir Whether to create a new root or data directory path.<a name="line.995"></a>
+<span class="sourceLineNo">996</span>   * @param createWALDir Whether to create a new WAL directory.<a name="line.996"></a>
+<span class="sourceLineNo">997</span>   * @return The mini HBase cluster created.<a name="line.997"></a>
+<span class="sourceLineNo">998</span>   * @see #shutdownMiniCluster()<a name="line.998"></a>
+<span class="sourceLineNo">999</span>   * @deprecated Use {@link #startMiniCluster(StartMiniClusterOption)} instead.<a name="line.999"></a>
+<span class="sourceLineNo">1000</span>   */<a name="line.1000"></a>
+<span class="sourceLineNo">1001</span>  @Deprecated<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>  public MiniHBaseCluster startMiniCluster(int numMasters, int numRegionServers, int numDataNodes,<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span>      String[] dataNodeHosts, Class&lt;? extends HMaster&gt; masterClass,<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>      Class&lt;? extends MiniHBaseCluster.MiniHBaseClusterRegionServer&gt; rsClass, boolean createRootDir,<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>      boolean createWALDir) throws Exception {<a name="line.1005"></a>
+<span class="sourceLineNo">1006</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span>        .numMasters(numMasters).masterClass(masterClass)<a name="line.1007"></a>
+<span class="sourceLineNo">1008</span>        .numRegionServers(numRegionServers).rsClass(rsClass)<a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>        .numDataNodes(numDataNodes).dataNodeHosts(dataNodeHosts)<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>        .createRootDir(createRootDir).createWALDir(createWALDir)<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>        .build();<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>    return startMiniCluster(option);<a name="line.1012"></a>
+<span class="sourceLineNo">1013</span>  }<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span><a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>  /**<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>   * Start up a minicluster of hbase, dfs and zookeeper clusters with given slave node number.<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.1017"></a>
+<span class="sourceLineNo">1018</span>   * @param numSlaves slave node number, for both HBase region server and HDFS data node.<a name="line.1018"></a>
 <span class="sourceLineNo">1019</span>   * @see #startMiniCluster(StartMiniClusterOption option)<a name="line.1019"></a>
 <span class="sourceLineNo">1020</span>   * @see #shutdownMiniDFSCluster()<a name="line.1020"></a>
 <span class="sourceLineNo">1021</span>   */<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>  public MiniHBaseCluster startMiniCluster() throws Exception {<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span>    return startMiniCluster(StartMiniClusterOption.builder().build());<a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>  }<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>   * Start up a mini cluster of hbase, optionally dfs and zookeeper if needed.<a name="line.1027"></a>
-<span class="sourceLineNo">1028</span>   * It modifies Configuration.  It homes the cluster data directory under a random<a name="line.1028"></a>
-<span class="sourceLineNo">1029</span>   * subdirectory in a directory under System property test.build.data, to be cleaned up on exit.<a name="line.1029"></a>
-<span class="sourceLineNo">1030</span>   * @see #shutdownMiniDFSCluster()<a name="line.1030"></a>
-<span class="sourceLineNo">1031</span>   */<a name="line.1031"></a>
-<span class="sourceLineNo">1032</span>  public MiniHBaseCluster startMiniCluster(StartMiniClusterOption option) throws Exception {<a name="line.1032"></a>
-<span class="sourceLineNo">1033</span>    LOG.info("Starting up minicluster with option: {}", option);<a name="line.1033"></a>
-<span class="sourceLineNo">1034</span><a name="line.1034"></a>
-<span class="sourceLineNo">1035</span>    // If we already put up a cluster, fail.<a name="line.1035"></a>
-<span class="sourceLineNo">1036</span>    if (miniClusterRunning) {<a name="line.1036"></a>
-<span class="sourceLineNo">1037</span>      throw new IllegalStateException("A mini-cluster is already running");<a name="line.1037"></a>
-<span class="sourceLineNo">1038</span>    }<a name="line.1038"></a>
-<span class="sourceLineNo">1039</span>    miniClusterRunning = true;<a name="line.1039"></a>
-<span class="sourceLineNo">1040</span><a name="line.1040"></a>
-<span class="sourceLineNo">1041</span>    setupClusterTestDir();<a name="line.1041"></a>
-<span class="sourceLineNo">1042</span>    System.setProperty(TEST_DIRECTORY_KEY, this.clusterTestDir.getPath());<a name="line.1042"></a>
-<span class="sourceLineNo">1043</span><a name="line.1043"></a>
-<span class="sourceLineNo">1044</span>    // Bring up mini dfs cluster. This spews a bunch of warnings about missing<a name="line.1044"></a>
-<span class="sourceLineNo">1045</span>    // scheme. Complaints are 'Scheme is undefined for build/test/data/dfs/name1'.<a name="line.1045"></a>
-<span class="sourceLineNo">1046</span>    if (dfsCluster == null) {<a name="line.1046"></a>
-<span class="sourceLineNo">1047</span>      LOG.info("STARTING DFS");<a name="line.1047"></a>
-<span class="sourceLineNo">1048</span>      dfsCluster = startMiniDFSCluster(option.getNumDataNodes(), option.getDataNodeHosts());<a name="line.1048"></a>
-<span class="sourceLineNo">1049</span>    } else {<a name="line.1049"></a>
-<span class="sourceLineNo">1050</span>      LOG.info("NOT STARTING DFS");<a name="line.1050"></a>
-<span class="sourceLineNo">1051</span>    }<a name="line.1051"></a>
+<span class="sourceLineNo">1022</span>  public MiniHBaseCluster startMiniCluster(int numSlaves) throws Exception {<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span>        .numRegionServers(numSlaves).numDataNodes(numSlaves).build();<a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>    return startMiniCluster(option);<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>  }<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span><a name="line.1027"></a>
+<span class="sourceLineNo">1028</span>  /**<a name="line.1028"></a>
+<span class="sourceLineNo">1029</span>   * Start up a minicluster of hbase, dfs and zookeeper all using default options.<a name="line.1029"></a>
+<span class="sourceLineNo">1030</span>   * Option default value can be found in {@link StartMiniClusterOption.Builder}.<a name="line.1030"></a>
+<span class="sourceLineNo">1031</span>   * @see #startMiniCluster(StartMiniClusterOption option)<a name="line.1031"></a>
+<span class="sourceLineNo">1032</span>   * @see #shutdownMiniDFSCluster()<a name="line.1032"></a>
+<span class="sourceLineNo">1033</span>   */<a name="line.1033"></a>
+<span class="sourceLineNo">1034</span>  public MiniHBaseCluster startMiniCluster() throws Exception {<a name="line.1034"></a>
+<span class="sourceLineNo">1035</span>    return startMiniCluster(StartMiniClusterOption.builder().build());<a name="line.1035"></a>
+<span class="sourceLineNo">1036</span>  }<a name="line.1036"></a>
+<span class="sourceLineNo">1037</span><a name="line.1037"></a>
+<span class="sourceLineNo">1038</span>  /**<a name="line.1038"></a>
+<span class="sourceLineNo">1039</span>   * Start up a mini cluster of hbase, optionally dfs and zookeeper if needed.<a name="line.1039"></a>
+<span class="sourceLineNo">1040</span>   * It modifies Configuration.  It homes the cluster data directory under a random<a name="line.1040"></a>
+<span class="sourceLineNo">1041</span>   * subdirectory in a directory under System property test.build.data, to be cleaned up on exit.<a name="line.1041"></a>
+<span class="sourceLineNo">1042</span>   * @see #shutdownMiniDFSCluster()<a name="line.1042"></a>
+<span class="sourceLineNo">1043</span>   */<a name="line.1043"></a>
+<span class="sourceLineNo">1044</span>  public MiniHBaseCluster startMiniCluster(StartMiniClusterOption option) throws Exception {<a name="line.1044"></a>
+<span class="sourceLineNo">1045</span>    LOG.info("Starting up minicluster with option: {}", option);<a name="line.1045"></a>
+<span class="sourceLineNo">1046</span><a name="line.1046"></a>
+<span class="sourceLineNo">1047</span>    // If we already put up a cluster, fail.<a name="line.1047"></a>
+<span class="sourceLineNo">1048</span>    if (miniClusterRunning) {<a name="line.1048"></a>
+<span class="sourceLineNo">1049</span>      throw new IllegalStateException("A mini-cluster is already running");<a name="line.1049"></a>
+<span class="sourceLineNo">1050</span>    }<a name="line.1050"></a>
+<span class="sourceLineNo">1051</span>    miniClusterRunning = true;<a name="line.1051"></a>
 <span class="sourceLineNo">1052</span><a name="line.1052"></a>
-<span class="sourceLineNo">1053</span>    // Start up a zk cluster.<a name="line.1053"></a>
-<span class="sourceLineNo">1054</span>    if (getZkCluster() == null) {<a name="line.1054"></a>
-<span class="sourceLineNo">1055</span>      startMiniZKCluster(option.getNumZkServers());<a name="line.1055"></a>
-<span class="sourceLineNo">1056</span>    }<a name="line.1056"></a>
-<span class="sourceLineNo">1057</span><a name="line.1057"></a>
-<span class="sourceLineNo">1058</span>    // Start the MiniHBaseCluster<a name="line.1058"></a>
-<span class="sourceLineNo">1059</span>    return startMiniHBaseCluster(option);<a name="line.1059"></a>
-<span class="sourceLineNo">1060</span>  }<a name="line.1060"></a>
-<span class="sourceLineNo">1061</span><a name="line.1061"></a>
-<span class="sourceLineNo">1062</span>  /**<a name="line.1062"></a>
-<span class="sourceLineNo">1063</span>   * Starts up mini hbase cluster.<a name="line.1063"></a>
-<span class="sourceLineNo">1064</span>   * Usually you won't want this.  You'll usually want {@link #startMiniCluster()}.<a name="line.1064"></a>
-<span class="sourceLineNo">1065</span>   * This is useful when doing stepped startup of clusters.<a name="line.1065"></a>
-<span class="sourceLineNo">1066</span>   * @return Reference to the hbase mini hbase cluster.<a name="line.1066"></a>
-<span class="sourceLineNo">1067</span>   * @see #startMiniCluster(StartMiniClusterOption)<a name="line.1067"></a>
-<span class="sourceLineNo">1068</span>   * @see #shutdownMiniHBaseCluster()<a name="line.1068"></a>
-<span class="sourceLineNo">1069</span>   */<a name="line.1069"></a>
-<span class="sourceLineNo">1070</span>  public MiniHBaseCluster startMiniHBaseCluster(StartMiniClusterOption option)<a name="line.1070"></a>
-<span class="sourceLineNo">1071</span>      throws IOException, InterruptedException {<a name="line.1071"></a>
-<span class="sourceLineNo">1072</span>    // Now do the mini hbase cluster.  Set the hbase.rootdir in config.<a name="line.1072"></a>
-<span class="sourceLineNo">1073</span>    createRootDir(option.isCreateRootDir());<a name="line.1073"></a>
-<span class="sourceLineNo">1074</span>    if (option.isCreateWALDir()) {<a name="line.1074"></a>
-<span class="sourceLineNo">1075</span>      createWALRootDir();<a name="line.1075"></a>
-<span class="sourceLineNo">1076</span>    }<a name="line.1076"></a>
-<span class="sourceLineNo">1077</span>    // Set the hbase.fs.tmp.dir config to make sure that we have some default value. This is<a name="line.1077"></a>
-<span class="sourceLineNo">1078</span>    // for tests that do not read hbase-defaults.xml<a name="line.1078"></a>
-<span class="sourceLineNo">1079</span>    setHBaseFsTmpDir();<a name="line.1079"></a>
-<span class="sourceLineNo">1080</span><a name="line.1080"></a>
-<span class="sourceLineNo">1081</span>    // These settings will make the server waits until this exact number of<a name="line.1081"></a>
-<span class="sourceLineNo">1082</span>    // regions servers are connected.<a name="line.1082"></a>
-<span class="sourceLineNo">1083</span>    if (conf.getInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, -1) == -1) {<a name="line.1083"></a>
-<span class="sourceLineNo">1084</span>      conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, option.getNumRegionServers());<a name="line.1084"></a>
-<span class="sourceLineNo">1085</span>    }<a name="line.1085"></a>
-<span class="sourceLineNo">1086</span>    if (conf.getInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, -1) == -1) {<a name="line.1086"></a>
-<span class="sourceLineNo">1087</span>      conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, option.getNumRegionServers());<a name="line.1087"></a>
+<span class="sourceLineNo">1053</span>    setupClusterTestDir();<a name="line.1053"></a>
+<span class="sourceLineNo">1054</span>    System.setProperty(TEST_DIRECTORY_KEY, this.clusterTestDir.getPath());<a name="line.1054"></a>
+<span class="sourceLineNo">1055</span><a name="line.1055"></a>
+<span class="sourceLineNo">1056</span>    // Bring up mini dfs cluster. This spews a bunch of warnings about missing<a name="line.1056"></a>
+<span class="sourceLineNo">1057</span>    // scheme. Complaints are 'Scheme is undefined for build/test/data/dfs/name1'.<a name="line.1057"></a>
+<span class="sourceLineNo">1058</span>    if (dfsCluster == null) {<a name="line.1058"></a>
+<span class="sourceLineNo">1059</span>      LOG.info("STARTING DFS");<a name="line.1059"></a>
+<span class="sourceLineNo">1060</span>      dfsCluster = startMiniDFSCluster(option.getNumDataNodes(), option.getDataNodeHosts());<a name="line.1060"></a>
+<span class="sourceLineNo">1061</span>    } else {<a name="line.1061"></a>
+<span class="sourceLineNo">1062</span>      LOG.info("NOT STARTING DFS");<a name="line.1062"></a>
+<span class="sourceLineNo">1063</span>    }<a name="line.1063"></a>
+<span class="sourceLineNo">1064</span><a name="line.1064"></a>
+<span class="sourceLineNo">1065</span>    // Start up a zk cluster.<a name="line.1065"></a>
+<span class="sourceLineNo">1066</span>    if (getZkCluster() == null) {<a name="line.1066"></a>
+<span class="sourceLineNo">1067</span>      startMiniZKCluster(option.getNumZkServers());<a name="line.1067"></a>
+<span class="sourceLineNo">1068</span>    }<a name="line.1068"></a>
+<span class="sourceLineNo">1069</span><a name="line.1069"></a>
+<span class="sourceLineNo">1070</span>    // Start the MiniHBaseCluster<a name="line.1070"></a>
+<span class="sourceLineNo">1071</span>    return startMiniHBaseCluster(option);<a name="line.1071"></a>
+<span class="sourceLineNo">1072</span>  }<a name="line.1072"></a>
+<span class="sourceLineNo">1073</span><a name="line.1073"></a>
+<span class="sourceLineNo">1074</span>  /**<a name="line.1074"></a>
+<span class="sourceLineNo">1075</span>   * Starts up mini hbase cluster.<a name="line.1075"></a>
+<span class="sourceLineNo">1076</span>   * Usually you won't want this.  You'll usually want {@link #startMiniCluster()}.<a name="line.1076"></a>
+<span class="sourceLineNo">1077</span>   * This is useful when doing stepped startup of clusters.<a name="line.1077"></a>
+<span class="sourceLineNo">1078</span>   * @return Reference to the hbase mini hbase cluster.<a name="line.1078"></a>
+<span class="sourceLineNo">1079</span>   * @see #startMiniCluster(StartMiniClusterOption)<a name="line.1079"></a>
+<span class="sourceLineNo">1080</span>   * @see #shutdownMiniHBaseCluster()<a name="line.1080"></a>
+<span class="sourceLineNo">1081</span>   */<a name="line.1081"></a>
+<span class="sourceLineNo">1082</span>  public MiniHBaseCluster startMiniHBaseCluster(StartMiniClusterOption option)<a name="line.1082"></a>
+<span class="sourceLineNo">1083</span>      throws IOException, InterruptedException {<a name="line.1083"></a>
+<span class="sourceLineNo">1084</span>    // Now do the mini hbase cluster.  Set the hbase.rootdir in config.<a name="line.1084"></a>
+<span class="sourceLineNo">1085</span>    createRootDir(option.isCreateRootDir());<a name="line.1085"></a>
+<span class="sourceLineNo">1086</span>    if (option.isCreateWALDir()) {<a name="line.1086"></a>
+<span class="sourceLineNo">1087</span>      createWALRootDir();<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>    Configuration c = new Configuration(this.conf);<a name="line.1090"></a>
-<span class="sourceLineNo">1091</span>    TraceUtil.initTracer(c);<a name="line.1091"></a>
-<span class="sourceLineNo">1092</span>    this.hbaseCluster =<a name="line.1092"></a>
-<span class="sourceLineNo">1093</span>        new MiniHBaseCluster(c, option.getNumMasters(), option.getNumRegionServers(),<a name="line.1093"></a>
-<span class="sourceLineNo">1094</span>            option.getRsPorts(), option.getMasterClass(), option.getRsClass());<a name="line.1094"></a>
-<span class="sourceLineNo">1095</span>    // Don't leave here till we've done a successful scan of the hbase:meta<a name="line.1095"></a>
-<span class="sourceLineNo">1096</span>    Table t = getConnection().getTable(TableName.META_TABLE_NAME);<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    ResultScanner s = t.getScanner(new Scan());<a name="line.1097"></a>
-<span class="sourceLineNo">1098</span>    while (s.next() != null) {<a name="line.1098"></a>
-<span class="sourceLineNo">1099</span>      continue;<a name="line.1099"></a>
+<span class="sourceLineNo">1089</span>    // Set the hbase.fs.tmp.dir config to make sure that we have some default value. This is<a name="line.1089"></a>
+<span class="sourceLineNo">1090</span>    // for tests that do not read hbase-defaults.xml<a name="line.1090"></a>
+<span class="sourceLineNo">1091</span>    setHBaseFsTmpDir();<a name="line.1091"></a>
+<span class="sourceLineNo">1092</span><a name="line.1092"></a>
+<span class="sourceLineNo">1093</span>    // These settings will make the server waits until this exact number of<a name="line.1093"></a>
+<span class="sourceLineNo">1094</span>    // regions servers are connected.<a name="line.1094"></a>
+<span class="sourceLineNo">1095</span>    if (conf.getInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, -1) == -1) {<a name="line.1095"></a>
+<span class="sourceLineNo">1096</span>      conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, option.getNumRegionServers());<a name="line.1096"></a>
+<span class="sourceLineNo">1097</span>    }<a name="line.1097"></a>
+<span class="sourceLineNo">1098</span>    if (conf.getInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, -1) == -1) {<a name="line.1098"></a>
+<span class="sourceLineNo">1099</span>      conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MAXTOSTART, option.getNumRegionServers());<a name="line.1099"></a>
 <span class="sourceLineNo">1100</span>    }<a name="line.1100"></a>
-<span class="sourceLineNo">1101</span>    s.close();<a name="line.1101"></a>
-<span class="sourceLineNo">1102</span>    t.close();<a name="line.1102"></a>
-<span class="sourceLineNo">1103</span><a name="line.1103"></a>
-<span class="sourceLineNo">1104</span>    getAdmin(); // create immediately the hbaseAdmin<a name="line.1104"></a>
-<span class="sourceLineNo">1105</span>    LOG.info("Minicluster is up; activeMaster={}", getHBaseCluster().getMaster());<a name="line.1105"></a>
-<span class="sourceLineNo">1106</span><a name="line.1106"></a>
-<span class="sourceLineNo">1107</span>    return (MiniHBaseCluster) hbaseCluster;<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>   * Starts up mini hbase cluster using default options.<a name="line.1111"></a>
-<span class="sourceLineNo">1112</span>   * Default options can be found in {@link StartMiniClusterOption.Builder}.<a name="line.1112"></a>
-<span class="sourceLineNo">1113</span>   * @see #startMiniHBaseCluster(StartMiniClusterOption)<a name="line.1113"></a>
-<span class="sourceLineNo">1114</span>   * @see #shutdownMiniHBaseCluster()<a name="line.1114"></a>
-<span class="sourceLineNo">1115</span>   */<a name="line.1115"></a>
-<span class="sourceLineNo">1116</span>  public MiniHBaseCluster startMiniHBaseCluster() throws IOException, InterruptedException {<a name="line.1116"></a>
-<span class="sourceLineNo">1117</span>    return startMiniHBaseCluster(StartMiniClusterOption.builder().build());<a name="line.1117"></a>
-<span class="sourceLineNo">1118</span>  }<a name="line.1118"></a>
-<span class="sourceLineNo">1119</span><a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>  /**<a name="line.1120"></a>
-<span class="sourceLineNo">1121</span>   * Starts up mini hbase cluster.<a name="line.1121"></a>
-<span class="sourceLineNo">1122</span>   * Usually you won't want this.  You'll usually want {@link #startMiniCluster()}.<a name="line.1122"></a>
-<span class="sourceLineNo">1123</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.1123"></a>
-<span class="sourceLineNo">1124</span>   * @param numMasters Master node number.<a name="line.1124"></a>
-<span class="sourceLineNo">1125</span>   * @param numRegionServers Number of region servers.<a name="line.1125"></a>
-<span class="sourceLineNo">1126</span>   * @return The mini HBase cluster created.<a name="line.1126"></a>
-<span class="sourceLineNo">1127</span>   * @see #shutdownMiniHBaseCluster()<a name="line.1127"></a>
-<span class="sourceLineNo">1128</span>   * @deprecated Use {@link #startMiniHBaseCluster(StartMiniClusterOption)} instead.<a name="line.1128"></a>
-<span class="sourceLineNo">1129</span>   */<a name="line.1129"></a>
-<span class="sourceLineNo">1130</span>  @Deprecated<a name="line.1130"></a>
-<span class="sourceLineNo">1131</span>  public MiniHBaseCluster startMiniHBaseCluster(int numMasters, int numRegionServers)<a name="line.1131"></a>
-<span class="sourceLineNo">1132</span>      throws IOException, InterruptedException {<a name="line.1132"></a>
-<span class="sourceLineNo">1133</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.1133"></a>
-<span class="sourceLineNo">1134</span>        .numMasters(numMasters).numRegionServers(numRegionServers).build();<a name="line.1134"></a>
-<span class="sourceLineNo">1135</span>    return startMiniHBaseCluster(option);<a name="line.1135"></a>
-<span class="sourceLineNo">1136</span>  }<a name="line.1136"></a>
-<span class="sourceLineNo">1137</span><a name="line.1137"></a>
-<span class="sourceLineNo">1138</span>  /**<a name="line.1138"></a>
-<span class="sourceLineNo">1139</span>   * Starts up mini hbase cluster.<a name="line.1139"></a>
-<span class="sourceLineNo">1140</span>   * Usually you won't want this.  You'll usually want {@link #startMiniCluster()}.<a name="line.1140"></a>
-<span class="sourceLineNo">1141</span>   * All other options will use default values, defined in {@link StartMiniClusterOption.Builder}.<a name="line.1141"></a>
-<span class="sourceLineNo">1142</span>   * @param numMasters Master node number.<a name="line.1142"></a>
-<span class="sourceLineNo">1143</span>   * @param numRegionServers Number of region servers.<a name="line.1143"></a>
-<span class="sourceLineNo">1144</span>   * @param rsPorts Ports that RegionServer should use.<a name="line.1144"></a>
-<span class="sourceLineNo">1145</span>   * @return The mini HBase cluster created.<a name="line.1145"></a>
-<span class="sourceLineNo">1146</span>   * @see #shutdownMiniHBaseCluster()<a name="line.1146"></a>
-<span class="sourceLineNo">1147</span>   * @deprecated Use {@link #startMiniHBaseCluster(StartMiniClusterOption)} instead.<a name="line.1147"></a>
-<span class="sourceLineNo">1148</span>   */<a name="line.1148"></a>
-<span class="sourceLineNo">1149</span>  @Deprecated<a name="line.1149"></a>
-<span class="sourceLineNo">1150</span>  public MiniHBaseCluster startMiniHBaseCluster(int numMasters, int numRegionServers,<a name="line.1150"></a>
-<span class="sourceLineNo">1151</span>      List&lt;Integer&gt; rsPorts) throws IOException, InterruptedException {<a name="line.1151"></a>
-<span class="sourceLineNo">1152</span>    StartMiniClusterOption option = StartMiniClusterOption.builder()<a name="line.1152"></a>
-<span class="sourceLineNo">1153</span>        .numMasters(numMasters).numRegionServers(numRegionServers).rsPorts(rsPorts).build();<a name="line.1153"></a>
-<span class="sourceLineNo">1154</span>    return startMiniHBaseCluster(option);<a name="line.1154"></a>
-<span class="sourceLineNo">1155</span>  }<a name="line.1155"></a>
-<span class="sourceLineNo">1156</span><a name="line.1156"></a>
-<span class="sourceLineNo">1157</span>  /**<a name="line.1157"></a>
-<span class="sourceLineNo">1158</span>   * Starts up mini hbase cluster.<a name="line.1158"></a>
-<span class="sourceLineNo">1159</span>   * Usually you won't want this.  You'll usually want {@link #startMiniCluster()}.<a name="line.1159"></a>
-<span class="sourceLineNo">1160</span>   * All other options will use default values, defi

<TRUNCATED>