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<byte[]> trackedColumns = new TreeSet<byte[]>(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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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><T> clz)</code> </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 size)</code> </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 byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.1062">generateHugeValue</a>(int size)</pre>
+<pre>static byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html#line.1062">generateHugeValue</a>(int 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 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 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 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 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 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 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 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 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 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
+<li>Nested | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </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"> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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"> </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> </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"> </span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </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> </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> </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> </td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!-- -->
+</a>
+<h3>Methods inherited from class 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 <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 <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 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 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 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 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 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 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 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 <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 void <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 void <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 void <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 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 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All 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: </li>
+<li>Nested | </li>
+<li><a href="#field.summary">Field</a> | </li>
+<li><a href="#constructor.summary">Constr</a> | </li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail: </li>
+<li><a href="#field.detail">Field</a> | </li>
+<li><a href="#constructor.detail">Constr</a> | </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 © 2007–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 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 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 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 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 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 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> </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> </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> </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> </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> </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 table,
boolean 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 table,
org.apache.hadoop.hbase.client.Scan scan,
int expectedRowCount,
int expectedCellCount)</code> </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 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><org.apache.hadoop.hbase.Cell> 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 <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 <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 org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.81">LOG</a></pre>
+<pre>private static final 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 <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 <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 byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.84">ROW</a></pre>
+<pre>private static 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 byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.85">FAMILY</a></pre>
+<pre>private static 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 byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.86">QUALIFIER</a></pre>
+<pre>private static 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 byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.87">VALUE</a></pre>
+<pre>private static 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 org.junit.rules.TestName <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.90">name</a></pre>
+<pre>public 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 <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.75">TestScannersFromClientSide</a>()</pre>
+<pre>public <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.96">setUpBeforeClass</a>()
+<pre>public static void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.106">tearDownAfterClass</a>()
+<pre>public static void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.114">setUp</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.122">tearDown</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.132">testScanBatch</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.202">testMaxResultSizeIsSetToDefault</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.255">testScannerForNotExistingTable</a>()</pre>
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.273">testSmallScan</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.312">testSmallScan</a>(org.apache.hadoop.hbase.client.Table table,
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.313">testSmallScan</a>(org.apache.hadoop.hbase.client.Table table,
boolean reversed,
int rows,
int 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.330">verifyExpectedCounts</a>(org.apache.hadoop.hbase.client.Table table,
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.331">verifyExpectedCounts</a>(org.apache.hadoop.hbase.client.Table table,
org.apache.hadoop.hbase.client.Scan scan,
int expectedRowCount,
int 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.355">testGetMaxResults</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.475">testScanMaxResults</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.525">testGetRowOffset</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.615">testScanRawDeleteFamilyVersion</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.645">testScanOnReopenedRegion</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.716">testAsyncScannerWithSmallData</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.726">testAsyncScannerWithManyRows</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.736">testAsyncScannerWithoutCaching</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.750">testAsyncScanner</a>(org.apache.hadoop.hbase.TableName table,
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.751">testAsyncScanner</a>(org.apache.hadoop.hbase.TableName table,
int rowNumber,
int familyNumber,
int 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 byte[][] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.821">makeNAsciiWithZeroPrefix</a>(byte[] base,
+<pre>private static byte[][] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.822">makeNAsciiWithZeroPrefix</a>(byte[] base,
int 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.834">verifyResult</a>(org.apache.hadoop.hbase.client.Result result,
+<pre>static void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.835">verifyResult</a>(org.apache.hadoop.hbase.client.Result 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><org.apache.hadoop.hbase.Cell> expKvList,
boolean 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> 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.861">testReadExpiredDataForRawScan</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.881">testScanWithColumnsAndFilterAndVersion</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.903">testScanWithSameStartRowStopRow</a>()
+<pre>public void <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 void <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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All 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 Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All 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 © 2007–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 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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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 –
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 –
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<? extends HMaster> masterClass,<a name="line.935"></a>
-<span class="sourceLineNo">936</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<? extends HMaster> masterClass,<a name="line.962"></a>
-<span class="sourceLineNo">963</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<? extends HMaster> masterClass,<a name="line.991"></a>
-<span class="sourceLineNo">992</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<? extends HMaster> masterClass,<a name="line.947"></a>
+<span class="sourceLineNo">948</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<? extends HMaster> masterClass,<a name="line.974"></a>
+<span class="sourceLineNo">975</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<? extends HMaster> masterClass,<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<Integer> 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() > 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() > 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() > 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.<KeyValueScanner> 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<? extends KeyValueScanner> 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() > 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() > 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() > 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.<KeyValueScanner> 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.<KeyValueScanner> 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.<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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() > 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<byte[]> getCols(String ...strCols) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span> NavigableSet<byte[]> cols = new TreeSet<>(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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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() > 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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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<KeyValueScanner> scanners = Arrays.<KeyValueScanner>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<Cell> 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<>();<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<>();<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<>();<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<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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() > 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<byte[]> getCols(String ...strCols) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span> NavigableSet<byte[]> cols = new TreeSet<>(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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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() > 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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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<KeyValueScanner> scanners = Arrays.<KeyValueScanner>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<Cell> 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<>();<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<>();<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<>();<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<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<Cell> 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 < 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<>();<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<>();<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<>();<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<Put> puts = new ArrayList<>();<a name="line.224"></a>
-<span class="sourceLineNo">225</span> for (int row = 0; row < 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 < 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() <= 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<Put> puts = new ArrayList<>();<a name="line.285"></a>
-<span class="sourceLineNo">286</span> for (int row = 0; row < 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 < 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<Cell> kvListExp;<a name="line.366"></a>
-<span class="sourceLineNo">367</span><a name="line.367"></a>
-<span class="sourceLineNo">368</span> kvListExp = new ArrayList<>();<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 < 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<>();<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<>();<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 < 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 < 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<>();<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 < 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 < 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 < 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<>();<a name="line.442"></a>
-<span class="sourceLineNo">443</span> for (int i=2; i < 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 < 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 < 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<>();<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 < 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<Cell> 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<>();<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 < 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 < FAMILIES.length; c++) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span> for (int q=0; q < 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 < 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<>();<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<Cell> 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<>();<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 < 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 < 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<>();<a name="line.560"></a>
-<span class="sourceLineNo">561</span> verifyResult(result, kvListExp, toLog, "Testing offset > #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<>();<a name="line.568"></a>
-<span class="sourceLineNo">569</span> for (int i=4; i < 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<>();<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 > 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 < 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<>();<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<Cell> 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 < 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() < 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 && 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() < 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<>();<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<Cell> 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 < 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<>();<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<>();<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<>();<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<Put> puts = new ArrayList<>();<a name="line.225"></a>
+<span class="sourceLineNo">226</span> for (int row = 0; row < 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 < 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<? extends HMaster> masterClass,<a name="line.935"></a>
-<span class="sourceLineNo">936</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<? extends HMaster> masterClass,<a name="line.962"></a>
-<span class="sourceLineNo">963</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<? extends HMaster> masterClass,<a name="line.991"></a>
-<span class="sourceLineNo">992</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<? extends HMaster> masterClass,<a name="line.947"></a>
+<span class="sourceLineNo">948</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<? extends HMaster> masterClass,<a name="line.974"></a>
+<span class="sourceLineNo">975</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<? extends HMaster> masterClass,<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<Integer> 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[] inRow,
org.apache.hadoop.hbase.Cell c)</code> </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 t,
byte[] f,
int startRow,
int endRow)</code> </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 t,
byte[] f,
int rowSize,
int totalRows)</code> </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 r,
byte[] f)</code> </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 r,
byte[] 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 r,
byte[] f)</code> </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 t,
byte[] 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 t,
byte[][] 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 t,
byte[][] 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 t,
byte[][] 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 t,
byte[] 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><<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></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><<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></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#memStoreTSTagsAndOffheapCombination--">memStoreTSTagsAndOffheapCombination</a></span>()</code> </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 admin,
org.apache.hadoop.hbase.client.TableDescriptor 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 destRegion,
org.apache.hadoop.hbase.ServerName 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><<a href="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></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><<a href="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></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 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><<a href="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></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 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><<a href="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></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 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> </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> </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 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 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><<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>> ports)</code> </td>
</tr>
-<tr id="i166" class="altColor">
+<tr id="i167" class="rowColor">
<td class="colFirst"><code>static <T> <a href="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><T> lst,
int i)</code> </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 cluster)</code> </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 cluster,
boolean 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> fsURI)</code> </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> </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> hbaseCluster)</code> </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> </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> stream,
int 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 admin,
org.apache.hadoop.hbase.TableName 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> 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 createWALDir)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
@@ -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 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 numSlaves,
boolean 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 numSlaves,
boolean 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 numMasters,
int 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 numMasters,
int 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 numMasters,
int 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 numMasters,
int 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 numMasters,
int 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 numMasters,
int 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 numMasters,
int 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 numMasters,
int 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> 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 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 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>[] 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 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>[] 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>[] hosts)</code> </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>[] 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 namenodePort)</code> </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 numMasters,
int 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 numMasters,
int 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 numMasters,
int 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> 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 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 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 tableName,
boolean 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[] 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> 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[] row,
org.apache.hadoop.hbase.client.RegionLocator 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> row,
org.apache.hadoop.hbase.client.RegionLocator 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 region,
byte[] f,
int startRow,
int endRow)</code> </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 region,
byte[] f,
@@ -1887,14 +1894,14 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
int endRow,
boolean present)</code> </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 region,
byte[] f,
int startRow,
int endRow)</code> </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 region,
byte[] f,
@@ -1902,7 +1909,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
int endRow,
boolean present)</code> </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 table,
byte[] f,
@@ -1910,78 +1917,78 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
int endRow,
int replicaId)</code> </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 ltd,
org.apache.hadoop.hbase.client.TableDescriptor rtd)</code> </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> host,
int port)</code> </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 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>... 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[] table,
long 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 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 table,
long timeoutMillis)</code> </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[] 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[] table,
long 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 table,
long millisTimeout)</code> </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[] table,
long 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 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 table,
long timeoutMillis)</code> </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 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 tableName,
long 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 timeout)</code>
<div class="block">Wait until no regions in transition.</div>
@@ -2227,7 +2234,7 @@ private static final <a href="https://docs.oracle.com/javase/8/docs/api/jav
<ul class="blockList">
<li class="blockList">
<h4>fam1</h4>
-<pre>public static final byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1856">fam1</a></pre>
+<pre>public static final 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 <a href="https://docs.oracle.com/javase/8/docs/api/jav
<ul class="blockList">
<li class="blockList">
<h4>fam2</h4>
-<pre>public static final byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1857">fam2</a></pre>
+<pre>public static final 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 <a href="https://docs.oracle.com/javase/8/docs/api/jav
<ul class="blockList">
<li class="blockList">
<h4>fam3</h4>
-<pre>public static final byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1858">fam3</a></pre>
+<pre>public static final 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 <a href="https://docs.oracle.com/javase/8/docs/api/jav
<ul class="blockList">
<li class="blockList">
<h4>COLUMNS</h4>
-<pre>public static final byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1859">COLUMNS</a></pre>
+<pre>public static final 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 <a href="https://docs.oracle.com/javase/8/docs/api/jav
<ul class="blockList">
<li class="blockList">
<h4>MAXVERSIONS</h4>
-<pre>private static final int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1860">MAXVERSIONS</a></pre>
+<pre>private static final 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 <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 char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1862">FIRST_CHAR</a></pre>
+<pre>public static final 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 <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 char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1863">LAST_CHAR</a></pre>
+<pre>public static final 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 <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 byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1864">START_KEY_BYTES</a></pre>
+<pre>public static final 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 <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 <a href="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 <a href="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 <a href="https://docs.oracle.com/javase/8/docs/api/jav
<ul class="blockList">
<li class="blockList">
<h4>ROWS</h4>
-<pre>public static final byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2420">ROWS</a></pre>
+<pre>public static final 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 <a href="https://docs.oracle.com/javase/8/docs/api/jav
<ul class="blockList">
<li class="blockList">
<h4>KEYS</h4>
-<pre>public static final byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2435">KEYS</a></pre>
+<pre>public static final 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 <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 byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2447">KEYS_FOR_HBA_CREATE_TABLE</a></pre>
+<pre>public static final 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 <a href="https://docs.oracle.com/javase/8/docs/api/jav
<ul class="blockList">
<li class="blockList">
<h4>hbaseAdmin</h4>
-<pre>private org.apache.hadoop.hbase.client.HBaseAdmin <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.3025">hbaseAdmin</a></pre>
+<pre>private 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 <a href="https://docs.oracle.com/javase/8/docs/api/jav
<ul class="blockList">
<li class="blockList">
<h4>random</h4>
-<pre>private static <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 <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 <a href="https://docs.oracle.com/javase/8/docs/api/jav
<ul class="blockListLast">
<li class="blockList">
<h4>portAllocator</h4>
-<pre>private static final <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 <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 org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../s
</dl>
</li>
</ul>
+<a name="isNewVersionBehaviorEnabled--">
+<!-- -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isNewVersionBehaviorEnabled</h4>
+<pre>public boolean <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 boolean <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.722">isReadShortCircuitOn</a>()</pre>
+<pre>public boolean <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 org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../s
<ul class="blockList">
<li class="blockList">
<h4>enableShortCircuit</h4>
-<pre>private void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.735">enableShortCircuit</a>()</pre>
+<pre>private void <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 org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../s
<ul class="blockList">
<li class="blockList">
<h4>createDirAndSetProperty</h4>
-<pre>private <a href="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.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> relPath,
+<pre>private <a href="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.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> 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> property)</pre>
</li>
</ul>
@@ -2926,7 +2944,7 @@ public org.apache.hadoop.hbase.HTableDescriptor <a href="../../../../s
<ul class="blockList">
<li class="blockList">
<h4>shutdownMiniDFSCluster</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.764">shutdownMiniDFSCluster</a>()
+<pre>public void <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 org.apache.hadoop.hbase.HTableDescriptor <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 <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/HBaseTestingUtility.html#line.783">startMiniCluster</a>(boolean createWALDir)
+public <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/HBaseTestingUtility.html#line.795">startMiniCluster</a>(boolean 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> <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 <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 <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/HBaseTestingUtility.html#line.799">startMiniCluster</a>(int numSlaves,
+public <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/HBaseTestingUtility.html#line.811">startMiniCluster</a>(int numSlaves,
boolean 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> <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 <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 <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/HBaseTestingUtility.html#line.817">startMiniCluster</a>(int numSlaves,
+public <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/HBaseTestingUtility.html#line.829">startMiniCluster</a>(int numSlaves,
boolean createRootDir,
boolean 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 <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 <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/HBaseTestingUtility.html#line.836">startMiniCluster</a>(int numMasters,
+public <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/HBaseTestingUtility.html#line.848">startMiniCluster</a>(int numMasters,
int numSlaves,
boolean 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 <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 <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/HBaseTestingUtility.html#line.854">startMiniCluster</a>(int numMasters,
+public <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/HBaseTestingUtility.html#line.866">startMiniCluster</a>(int numMasters,
int 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> <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 <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 <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/HBaseTestingUtility.html#line.873">startMiniCluster</a>(int numMasters,
+public <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/HBaseTestingUtility.html#line.885">startMiniCluster</a>(int numMasters,
int 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>[] dataNodeHosts,
boolean createRootDir)
@@ -3106,7 +3124,7 @@ public <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 <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/HBaseTestingUtility.html#line.893">startMiniCluster</a>(int numMasters,
+public <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/HBaseTestingUtility.html#line.905">startMiniCluster</a>(int numMasters,
int 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>[] 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 <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 <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/HBaseTestingUtility.html#line.912">startMiniCluster</a>(int numMasters,
+public <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/HBaseTestingUtility.html#line.924">startMiniCluster</a>(int numMasters,
int numRegionServers,
int 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 <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 <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/HBaseTestingUtility.html#line.934">startMiniCluster</a>(int numMasters,
+public <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/HBaseTestingUtility.html#line.946">startMiniCluster</a>(int numMasters,
int 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>[] 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><? extends org.apache.hadoop.hbase.master.HMaster> masterClass,
@@ -3196,7 +3214,7 @@ public <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 <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/HBaseTestingUtility.html#line.961">startMiniCluster</a>(int numMasters,
+public <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/HBaseTestingUtility.html#line.973">startMiniCluster</a>(int numMasters,
int numRegionServers,
int 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>[] dataNodeHosts,
@@ -3231,7 +3249,7 @@ public <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 <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/HBaseTestingUtility.html#line.990">startMiniCluster</a>(int numMasters,
+public <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/HBaseTestingUtility.html#line.1002">startMiniCluster</a>(int numMasters,
int numRegionServers,
int 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>[] dataNodeHosts,
@@ -3269,7 +3287,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>startMiniCluster</h4>
-<pre>public <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/HBaseTestingUtility.html#line.1010">startMiniCluster</a>(int numSlaves)
+<pre>public <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/HBaseTestingUtility.html#line.1022">startMiniCluster</a>(int 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 <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>startMiniCluster</h4>
-<pre>public <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/HBaseTestingUtility.html#line.1022">startMiniCluster</a>()
+<pre>public <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/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 <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>startMiniCluster</h4>
-<pre>public <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/HBaseTestingUtility.html#line.1032">startMiniCluster</a>(<a href="../../../../org/apache/hadoop/hbase/StartMiniClusterOption.html" title="class in org.apache.hadoop.hbase">StartMiniClusterOption</a> option)
+<pre>public <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/HBaseTestingUtility.html#line.1044">startMiniCluster</a>(<a href="../../../../org/apache/hadoop/hbase/StartMiniClusterOption.html" title="class in org.apache.hadoop.hbase">StartMiniClusterOption</a> 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 – 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="" /> Warnings</th>
<th><img src="images/icon_error_sml.gif" alt="" /> 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() > 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() > 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() > 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.<KeyValueScanner> 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<? extends KeyValueScanner> 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() > 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() > 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() > 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.<KeyValueScanner> 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.<KeyValueScanner> 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.<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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() > 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<byte[]> getCols(String ...strCols) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span> NavigableSet<byte[]> cols = new TreeSet<>(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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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() > 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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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<KeyValueScanner> scanners = Arrays.<KeyValueScanner>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<Cell> 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<>();<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<>();<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<>();<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<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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() > 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<byte[]> getCols(String ...strCols) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span> NavigableSet<byte[]> cols = new TreeSet<>(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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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() > 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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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<KeyValueScanner> scanners = Arrays.<KeyValueScanner>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<Cell> 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<>();<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<>();<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<>();<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<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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() > 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() > 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() > 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.<KeyValueScanner> 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<? extends KeyValueScanner> 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() > 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() > 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() > 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.<KeyValueScanner> 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.<KeyValueScanner> 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.<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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() > 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<byte[]> getCols(String ...strCols) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span> NavigableSet<byte[]> cols = new TreeSet<>(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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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() > 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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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<KeyValueScanner> scanners = Arrays.<KeyValueScanner>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<Cell> 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<>();<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<>();<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<>();<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<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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() > 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<byte[]> getCols(String ...strCols) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span> NavigableSet<byte[]> cols = new TreeSet<>(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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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() > 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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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<KeyValueScanner> scanners = Arrays.<KeyValueScanner>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<Cell> 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<>();<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<>();<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<>();<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<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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"> </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 static final 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"> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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<? extends KeyValueScanner>, 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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </dd>
<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestRowComparator.html#test-java.util.function.Function-">test(Function<byte[], T>)</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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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> </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 <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html#line.3839">available</a>(int port)</pre>
+<pre>boolean <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html#line.3883">available</a>(int 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 int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3778">MIN_RANDOM_PORT</a></pre>
+<pre>private static final 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 int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3779">MAX_RANDOM_PORT</a></pre>
+<pre>private static final 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 <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><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>> <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3782">takenRandomPorts</a></pre>
+<pre>private final <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><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>> <a href="../../../../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 <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 <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 <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 <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 <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> random)</pre>
+<pre>public <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> 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 <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> random,
+<pre>public <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> random,
<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.AvailablePortChecker.html" title="interface in org.apache.hadoop.hbase">HBaseTestingUtility.PortAllocator.AvailablePortChecker</a> 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 int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3812">randomFreePort</a>()</pre>
+<pre>public int <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 int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.PortAllocator.html#line.3833">randomPort</a>()</pre>
+<pre>private int <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 <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2158">SeenRowTracker</a>(byte[] startRow,
+<pre>public <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2202">SeenRowTracker</a>(byte[] startRow,
byte[] 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 <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2163">reset</a>()</pre>
+<pre>void <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 <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2169">i</a>(byte b)</pre>
+<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2213">i</a>(byte 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 void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2173">addRow</a>(byte[] row)</pre>
+<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2217">addRow</a>(byte[] 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 void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html#line.2180">validate</a>()</pre>
+<pre>public void <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 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 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 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 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 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 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.280">testWithColumnCountGetFilter</a>()
+<pre>public void <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><byte[]> <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>... 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><byte[]> <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>... 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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.328">testFullRowGetDoesNotOverreadWhenRowInsideOneBlock</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.350">testFullRowSpansBlocks</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.376">testOptimize</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.404">testOptimizeAndGet</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.433">testOptimizeAndGetWithFakedNextBlockIndexStart</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.452">testScanTimeRange</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.507">testScanSameTimestamp</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.536">testWontNextToNext</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.567">testDeleteVersionSameTimestamp</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.586">testDeletedRowThenGoodRow</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.608">testDeleteVersionMaskingMultiplePuts</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.634">testDeleteVersionsMixedAndMultipleVersionReturn</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.659">testWildCardOneVersionScan</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.677">testWildCardScannerUnderDeletes</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.711">testDeleteFamily</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.741">testDeleteColumn</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.771">testSkipColumn</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.795">testWildCardTtlScan</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.832">testScannerReseekDoesntNPE</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.846">testPeek</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.862">testExpiredDeleteFamily</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.888">testDeleteMarkerLongevity</a>()
+<pre>public void <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.html#line.959">testPreadNotEnabledForCompactionStoreScanners</a>()
+<pre>public void <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><E> (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><T>, 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> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#col0">col0</a></span></code> </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> </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> </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> </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> </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> </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> </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> </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> </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> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#testColumns--">testColumns</a></span>()</code> </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> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#testFamilyVersionDelete--">testFamilyVersionDelete</a></span>()</code> </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> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#testFamilyVersionsDelete--">testFamilyVersionsDelete</a></span>()</code> </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> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#testMaxVersionMask--">testMaxVersionMask</a></span>()</code> </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> </td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#testMinVersionsAndTTL--">testMinVersionsAndTTL</a></span>()</code> </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> </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> </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 <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 <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 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 byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.43">col1</a></pre>
+<pre>private final 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 byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.44">col2</a></pre>
+<pre>private final 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 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 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 byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.45">row</a></pre>
+<pre>private final 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 byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.46">family</a></pre>
+<pre>private final 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 byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.47">value</a></pre>
+<pre>private final 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 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 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 <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.37">TestNewVersionBehaviorTracker</a>()</pre>
+<pre>public <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 void <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 void <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.50">testMaxVersionMask</a>()</pre>
+<pre>public void <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 void <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.90">testVersionsDelete</a>()</pre>
+<pre>public void <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 void <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.119">testVersionDelete</a>()</pre>
+<pre>public void <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 void <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.154">testFamilyVersionsDelete</a>()</pre>
+<pre>public void <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 void <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.181">testFamilyVersionDelete</a>()</pre>
+<pre>public void <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 void <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/TestNewVersionBehaviorTracker.html#line.215">testMinVersionsAndTTL</a>()
+<pre>public void <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><E> (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><T>, 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><E> (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><T>, 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> t,
byte[] f,
int startRow,
int endRow)</code> </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> t,
byte[] f,
int rowSize,
int totalRows)</code> </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> r,
byte[] f)</code> </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> r,
byte[] 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> r,
byte[] f)</code> </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> t,
byte[] 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> t,
byte[][] 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> t,
byte[][] 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> t,
byte[][] 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> t,
byte[] 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><<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></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html#memStoreTSTagsAndOffheapCombination--">memStoreTSTagsAndOffheapCombination</a></span>()</code> </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> 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> 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> destRegion,
<a href="../../../../../apidocs/org/apache/hadoop/hbase/ServerName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">ServerName</a> 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><<a href="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></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><<a href="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></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> 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><<a href="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></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> 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><<a href="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></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> 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> </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> </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 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 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><<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>> ports)</code> </td>
</tr>
-<tr id="i152" class="altColor">
+<tr id="i153" class="rowColor">
<td class="colFirst"><code>static <T> <a href="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><T> lst,
int i)</code> </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 cluster)</code> </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 cluster,
boolean 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> fsURI)</code> </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> hbaseCluster)</code> </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> stream,
int 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> admin,
<a href="../../../../../apidocs/org/apache/hadoop/hbase/TableName.html?is-external=true" title="class or interface in org.apache.hadoop.hbase">TableName</a> 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> 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 createWALDir)</code>
<div class="block"><span class="deprecatedLabel">Deprecated.</span>
@@ -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 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 numSlaves,
boolean 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 numSlaves,
boolean 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 numMasters,
int 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 numMasters,
int 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 numMasters,
int 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 numMasters,
int 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 numMasters,
int 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 numMasters,
int 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 numMasters,
int 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 numMasters,
int 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> 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 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 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>[] 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 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>[] 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>[] hosts)</code> </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>[] 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 namenodePort)</code> </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 numMasters,
int 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 numMasters,
int 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 numMasters,
int 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> 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> 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> tableName,
boolean 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[] 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> 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[] 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> 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> 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> 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> region,
byte[] f,
int startRow,
int endRow)</code> </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> region,
byte[] f,
@@ -1696,14 +1703,14 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
int endRow,
boolean present)</code> </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> region,
byte[] f,
int startRow,
int endRow)</code> </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> region,
byte[] f,
@@ -1711,7 +1718,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
int endRow,
boolean present)</code> </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> table,
byte[] f,
@@ -1719,78 +1726,78 @@ extends <a href="../../../../org/apache/hadoop/hbase/HBaseZKTestingUtility.html"
int endRow,
int replicaId)</code> </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> 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> rtd)</code> </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> host,
int port)</code> </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 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>... 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[] table,
long 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> 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> table,
long timeoutMillis)</code> </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[] 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[] table,
long 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> table,
long millisTimeout)</code> </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[] table,
long 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> 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> table,
long timeoutMillis)</code> </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> 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> tableName,
long 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 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 byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1856">fam1</a></pre>
+<pre>public static final 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 byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1857">fam2</a></pre>
+<pre>public static final 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 byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1858">fam3</a></pre>
+<pre>public static final 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 byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1859">COLUMNS</a></pre>
+<pre>public static final 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 char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1862">FIRST_CHAR</a></pre>
+<pre>public static final 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 char <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1863">LAST_CHAR</a></pre>
+<pre>public static final 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 byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.1864">START_KEY_BYTES</a></pre>
+<pre>public static final 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 <a href="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 <a href="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 byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2420">ROWS</a></pre>
+<pre>public static final 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 byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2435">KEYS</a></pre>
+<pre>public static final 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 byte[][] <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.2447">KEYS_FOR_HBA_CREATE_TABLE</a></pre>
+<pre>public static final 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 <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 boolean <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 boolean <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.722">isReadShortCircuitOn</a>()</pre>
+<pre>public boolean <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 <a href="../../../../../apidocs/org/apache/hadoop/hbase/HTableDescri
<ul class="blockList">
<li class="blockList">
<h4>shutdownMiniDFSCluster</h4>
-<pre>public void <a href="../../../../src-html/org/apache/hadoop/hbase/HBaseTestingUtility.html#line.764">shutdownMiniDFSCluster</a>()
+<pre>public void <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 <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 <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/HBaseTestingUtility.html#line.783">startMiniCluster</a>(boolean createWALDir)
+public <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/HBaseTestingUtility.html#line.795">startMiniCluster</a>(boolean 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> <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 <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 <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/HBaseTestingUtility.html#line.799">startMiniCluster</a>(int numSlaves,
+public <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/HBaseTestingUtility.html#line.811">startMiniCluster</a>(int numSlaves,
boolean 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> <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 <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 <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/HBaseTestingUtility.html#line.817">startMiniCluster</a>(int numSlaves,
+public <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/HBaseTestingUtility.html#line.829">startMiniCluster</a>(int numSlaves,
boolean createRootDir,
boolean 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 <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 <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/HBaseTestingUtility.html#line.836">startMiniCluster</a>(int numMasters,
+public <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/HBaseTestingUtility.html#line.848">startMiniCluster</a>(int numMasters,
int numSlaves,
boolean 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 <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 <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/HBaseTestingUtility.html#line.854">startMiniCluster</a>(int numMasters,
+public <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/HBaseTestingUtility.html#line.866">startMiniCluster</a>(int numMasters,
int 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> <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 <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 <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/HBaseTestingUtility.html#line.873">startMiniCluster</a>(int numMasters,
+public <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/HBaseTestingUtility.html#line.885">startMiniCluster</a>(int numMasters,
int 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>[] dataNodeHosts,
boolean createRootDir)
@@ -2647,7 +2665,7 @@ public <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 <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/HBaseTestingUtility.html#line.893">startMiniCluster</a>(int numMasters,
+public <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/HBaseTestingUtility.html#line.905">startMiniCluster</a>(int numMasters,
int 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>[] 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 <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 <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/HBaseTestingUtility.html#line.912">startMiniCluster</a>(int numMasters,
+public <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/HBaseTestingUtility.html#line.924">startMiniCluster</a>(int numMasters,
int numRegionServers,
int 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 <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 <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/HBaseTestingUtility.html#line.934">startMiniCluster</a>(int numMasters,
+public <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/HBaseTestingUtility.html#line.946">startMiniCluster</a>(int numMasters,
int 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>[] 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><? 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>> masterClass,
@@ -2737,7 +2755,7 @@ public <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 <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/HBaseTestingUtility.html#line.961">startMiniCluster</a>(int numMasters,
+public <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/HBaseTestingUtility.html#line.973">startMiniCluster</a>(int numMasters,
int numRegionServers,
int 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>[] dataNodeHosts,
@@ -2772,7 +2790,7 @@ public <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 <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/HBaseTestingUtility.html#line.990">startMiniCluster</a>(int numMasters,
+public <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/HBaseTestingUtility.html#line.1002">startMiniCluster</a>(int numMasters,
int numRegionServers,
int 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>[] dataNodeHosts,
@@ -2810,7 +2828,7 @@ public <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>startMiniCluster</h4>
-<pre>public <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/HBaseTestingUtility.html#line.1010">startMiniCluster</a>(int numSlaves)
+<pre>public <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/HBaseTestingUtility.html#line.1022">startMiniCluster</a>(int 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 <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>startMiniCluster</h4>
-<pre>public <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/HBaseTestingUtility.html#line.1022">startMiniCluster</a>()
+<pre>public <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/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 <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>startMiniCluster</h4>
-<pre>public <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/HBaseTestingUtility.html#line.1032">startMiniCluster</a>(<a href="../../../../org/apache/hadoop/hbase/StartMiniClusterOption.html" title="class in org.apache.hadoop.hbase">StartMiniClusterOption</a> option)
+<pre>public <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/HBaseTestingUtility.html#line.1044">startMiniCluster</a>(<a href="../../../../org/apache/hadoop/hbase/StartMiniClusterOption.html" title="class in org.apache.hadoop.hbase">StartMiniClusterOption</a> 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 <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>startMiniHBaseCluster</h4>
-<pre>public <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/HBaseTestingUtility.html#line.1070">startMiniHBaseCluster</a>(<a href="../../../../org/apache/hadoop/hbase/StartMiniClusterOption.html" title="class in org.apache.hadoop.hbase">StartMiniClusterOption</a> option)
+<pre>public <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/HBaseTestingUtility.html#line.1082">startMiniHBaseCluster</a>(<a href="../../../../org/apache/hadoop/hbase/StartMiniClusterOption.html" title="class in org.apache.hadoop.hbase">StartMiniClusterOption</a> 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 <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html"
<ul class="blockList">
<li class="blockList">
<h4>startMiniHBaseCluster</h4>
-<pre>public <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/HBaseTestingUtility.html#line.1116">startMiniHBaseCluster</a>()
+<pre>public <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() > 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() > 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() > 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.<KeyValueScanner> 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<? extends KeyValueScanner> 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() > 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() > 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() > 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.<KeyValueScanner> 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.<KeyValueScanner> 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.<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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() > 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<byte[]> getCols(String ...strCols) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span> NavigableSet<byte[]> cols = new TreeSet<>(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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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() > 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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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<KeyValueScanner> scanners = Arrays.<KeyValueScanner>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<Cell> 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<>();<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<>();<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<>();<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<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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() > 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<byte[]> getCols(String ...strCols) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span> NavigableSet<byte[]> cols = new TreeSet<>(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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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() > 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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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<KeyValueScanner> scanners = Arrays.<KeyValueScanner>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<Cell> 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<>();<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<>();<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<>();<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<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<ServerName, Long> deadServers = new HashMap<>();<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<ServerName> processingServers = new HashSet<ServerName>();<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 <code>host:port</code> or<a name="line.68"></a>
-<span class="sourceLineNo">069</span> * <code>host,port,startcode</code>.<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<ServerName> 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<ServerName> copyServerNames() {<a name="line.118"></a>
-<span class="sourceLineNo">119</span> Set<ServerName> clone = new HashSet<>(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() && 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<ServerName> 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<ServerName> servers = new HashSet<ServerName>();<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() > 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<Pair<ServerName, Long>> copyDeadServersSince(long ts){<a name="line.215"></a>
-<span class="sourceLineNo">216</span> List<Pair<ServerName, Long>> res = new ArrayList<>(size());<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span> for (Map.Entry<ServerName, Long> entry:deadServers.entrySet()){<a name="line.218"></a>
-<span class="sourceLineNo">219</span> if (entry.getValue() >= ts){<a name="line.219"></a>
-<span class="sourceLineNo">220</span> res.add(new Pair<>(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<Pair<ServerName, Long>> ServerNameDeathDateComparator =<a name="line.238"></a>
-<span class="sourceLineNo">239</span> new Comparator<Pair<ServerName, Long>>(){<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<ServerName, Long> o1, Pair<ServerName, Long> 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<ServerName, Long> deadServers = new HashMap<>();<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<ServerName> processingServers = new HashSet<ServerName>();<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 <code>host:port</code> or<a name="line.67"></a>
+<span class="sourceLineNo">068</span> * <code>host,port,startcode</code>.<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<ServerName> 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<ServerName> copyServerNames() {<a name="line.117"></a>
+<span class="sourceLineNo">118</span> Set<ServerName> clone = new HashSet<>(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() && 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<ServerName> 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<ServerName> servers = new HashSet<ServerName>();<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() > 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<Pair<ServerName, Long>> copyDeadServersSince(long ts){<a name="line.214"></a>
+<span class="sourceLineNo">215</span> List<Pair<ServerName, Long>> res = new ArrayList<>(size());<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span> for (Map.Entry<ServerName, Long> entry:deadServers.entrySet()){<a name="line.217"></a>
+<span class="sourceLineNo">218</span> if (entry.getValue() >= ts){<a name="line.218"></a>
+<span class="sourceLineNo">219</span> res.add(new Pair<>(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<Pair<ServerName, Long>> ServerNameDeathDateComparator =<a name="line.237"></a>
+<span class="sourceLineNo">238</span> new Comparator<Pair<ServerName, Long>>(){<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<ServerName, Long> o1, Pair<ServerName, Long> 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<? extends KeyValueScanner> scanners,<a name="line.62"></a>
+<span class="sourceLineNo">062</span> protected KeyValueHeap newKVHeap(List<? extends KeyValueScanner> 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<? extends KeyValueScanner> 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) < 0<a name="line.103"></a>
-<span class="sourceLineNo">104</span> || (CellUtil.matchingRows(kv, prevKV) && comparator.compare(kv,<a name="line.104"></a>
-<span class="sourceLineNo">105</span> prevKV) >= 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<? extends KeyValueScanner> 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) < 0<a name="line.102"></a>
+<span class="sourceLineNo">103</span> || (CellUtil.matchingRows(kv, prevKV) && comparator.compare(kv,<a name="line.103"></a>
+<span class="sourceLineNo">104</span> prevKV) >= 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() > 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() > 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() > 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.<KeyValueScanner> 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<? extends KeyValueScanner> 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() > 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() > 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() > 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.<KeyValueScanner> 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.<KeyValueScanner> 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.<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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() > 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<byte[]> getCols(String ...strCols) {<a name="line.318"></a>
-<span class="sourceLineNo">319</span> NavigableSet<byte[]> cols = new TreeSet<>(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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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() > 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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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<KeyValueScanner> scanners = Arrays.<KeyValueScanner>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<Cell> 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<>();<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<>();<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<>();<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<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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() > 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<byte[]> getCols(String ...strCols) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span> NavigableSet<byte[]> cols = new TreeSet<>(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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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() > 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<Cell> results = new ArrayList<>();<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<Cell> results = new ArrayList<>();<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<KeyValueScanner> scanners = Arrays.<KeyValueScanner>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<Cell> 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<>();<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<>();<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<>();<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<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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<KeyValueScanner> 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<Cell> results = new ArrayList<>();<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> </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><? extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners,
+ <a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> comparator)</code> </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><? extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners,
+ <a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> comparator)</code> </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 nonce)</code> </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><? extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners,
+ <a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> comparator)</code> </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><? extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners,
+ <a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> comparator)</code> </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><? extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners,
<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> kv)</code>
@@ -610,16 +620,11 @@
<a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> comparator)</code> </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><? extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners,
- <a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> comparator)</code> </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> 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><? extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners)</code> </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><? extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners,
<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> 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><? extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners,
<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> seekKey,
boolean isLazy,
boolean isParallelSeek)</code> </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><<a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>></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> 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><? extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> 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><<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>> 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><<a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> memStoreScanners)</code> </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><<a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>> 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><<a href="../../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> 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><E> (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><T>, 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 <a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ColumnCount.html" title="class in org.apache.hadoop.hbase.regionserver.querymatcher">ColumnCount</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.html#line.361">getColumnHint</a>()</pre>
+<pre>public <a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ColumnCount.html" title="class in org.apache.hadoop.hbase.regionserver.querymatcher">ColumnCount</a> <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: <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 <a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher">ScanQueryMatcher.MatchCode</a> <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> cell)</pre>
+<pre>public <a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher">ScanQueryMatcher.MatchCode</a> <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> cell)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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 boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.html#line.377">isDone</a>(long timestamp)</pre>
+<pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.html#line.374">isDone</a>(long timestamp)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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 <a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.html#line.383">getCellComparator</a>()</pre>
+<pre>public <a href="../../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/querymatcher/NewVersionBehaviorTracker.html#line.380">getCellComparator</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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><E> (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><T>, 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><E> (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><T>, 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><E> (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><T>, 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><E> (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><T>, 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><E> (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><T>, 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><E> (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><T>, 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><E> (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><T>, 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><T>)</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><T>)</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><T>)</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 < 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 < 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 < 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<Cell>();<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<? extends HMaster> masterClass,<a name="line.935"></a>
-<span class="sourceLineNo">936</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<? extends HMaster> masterClass,<a name="line.962"></a>
-<span class="sourceLineNo">963</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<? extends HMaster> masterClass,<a name="line.991"></a>
-<span class="sourceLineNo">992</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<? extends HMaster> masterClass,<a name="line.947"></a>
+<span class="sourceLineNo">948</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<? extends HMaster> masterClass,<a name="line.974"></a>
+<span class="sourceLineNo">975</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<? extends HMaster> masterClass,<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<Integer> 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<? extends KeyValueScanner> 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> * <p><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<KeyValueScanner> selectScannersFrom(HStore store,<a name="line.418"></a>
-<span class="sourceLineNo">419</span> List<? extends KeyValueScanner> 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<KeyValueScanner> scanners = new ArrayList<>(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<? extends KeyValueScanner> 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<? extends KeyValueScanner> 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> * <p><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<KeyValueScanner> selectScannersFrom(HStore store,<a name="line.424"></a>
+<span class="sourceLineNo">425</span> List<? extends KeyValueScanner> 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 && filesOnly) || (isFile && 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<KeyValueScanner> scanners = new ArrayList<>(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 && filesOnly) || (isFile && 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<Cell> 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() && 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<Cell> 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() && 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 &&<a name="line.558"></a>
-<span class="sourceLineNo">559</span> readType == Scan.ReadType.DEFAULT && bytesRead > 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 && readType == Scan.ReadType.DEFAULT &&<a name="line.571"></a>
-<span class="sourceLineNo">572</span> bytesRead > 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 > -1 && this.countPerRow > (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 > 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() && totalBytesRead > 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 &&<a name="line.564"></a>
+<span class="sourceLineNo">565</span> readType == Scan.ReadType.DEFAULT && bytesRead > 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 && readType == Scan.ReadType.DEFAULT &&<a name="line.577"></a>
+<span class="sourceLineNo">578</span> bytesRead > 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 > -1 && this.countPerRow > (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 > 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() && totalBytesRead > 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 && comparator.compare(nextKV, cell) > 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 > 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<Cell> outResult) {<a name="line.729"></a>
-<span class="sourceLineNo">730</span> if (!outResult.isEmpty() && 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 && comparator.compare(nextKV, cell) > 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 > 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<Cell> outResult) {<a name="line.735"></a>
+<span class="sourceLineNo">736</span> if (!outResult.isEmpty() && 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> * <p>Other notes:<a name="line.766"></a>
-<span class="sourceLineNo">767</span> * <ul><a name="line.767"></a>
-<span class="sourceLineNo">768</span> * <li>Rows can straddle block boundaries</li><a name="line.768"></a>
-<span class="sourceLineNo">769</span> * <li>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)</li><a name="line.770"></a>
-<span class="sourceLineNo">771</span> * <li>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...</li><a name="line.772"></a>
-<span class="sourceLineNo">773</span> * <li>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.</li><a name="line.774"></a>
-<span class="sourceLineNo">775</span> * </ul><a name="line.775"></a>
-<span class="sourceLineNo">776</span> * <p>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> * <pre><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> * </pre><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 > 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 && nextIndexedKey != KeyValueScanner.NO_NEXT_INDEXED_KEY &&<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) >= 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 && 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 && nextIndexedKey != KeyValueScanner.NO_NEXT_INDEXED_KEY &&<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) >= 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 && 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 && matcher.compareKeyForNextColumn(nextCell, cell) < 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<KeyValueScanner> 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<HStoreFile> sfs, List<KeyValueScanner> 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) && 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<KeyValueScanner> 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<KeyValueScanner> 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<KeyValueScanner> allScanners =<a name="line.910"></a>
-<span class="sourceLineNo">911</span> new ArrayList<>(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 >=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 < 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 < 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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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"> </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> </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> </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 <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 <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 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 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 <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 <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 int <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.44">connectorPort</a></pre>
+<pre>private static 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 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 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 <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 <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 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 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 <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.36">TestBalancerStatusTagInJMXMetrics</a>()</pre>
+<pre>public <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 void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.53">setupBeforeClass</a>()
+<pre>public static void <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 void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.83">tearDownAfterClass</a>()
+<pre>public static void <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 void <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.91">testJmxMetrics</a>()
+<pre>public void <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 <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/TestBalancerStatusTagInJMXMetrics.html#line.102">getStatus</a>()
+<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/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><E> (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><T>, 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><V>, org.apache.hadoop.hbase.errorhandling.ForeignExceptionListener)
+<li type="circle">org.apache.hadoop.hbase.procedure2.Procedure<TEnvironment> (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><T>)
<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<TEnvironment> (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><T>)
+<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><V>, 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><E> (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><T>, 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> </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><? extends org.apache.hadoop.hbase.regionserver.KeyValueScanner> scanners,
+ org.apache.hadoop.hbase.CellComparator comparator)</code> </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><? extends org.apache.hadoop.hbase.regionserver.KeyValueScanner> scanners,
org.apache.hadoop.hbase.CellComparator comparator)</code> </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 cell)</code> </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 cell)</code> </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 org.apache.hadoop.hbase.regionserver.KeyValueHeap <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><? extends org.apache.hadoop.hbase.regionserver.KeyValueScanner> scanners,
+ org.apache.hadoop.hbase.CellComparator 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> in class <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 boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html#line.177">trySkipToNextRow</a>(org.apache.hadoop.hbase.Cell cell)
+<pre>protected boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html#line.183">trySkipToNextRow</a>(org.apache.hadoop.hbase.Cell 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 boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html#line.188">trySkipToNextColumn</a>(org.apache.hadoop.hbase.Cell cell)
+<pre>protected boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html#line.194">trySkipToNextColumn</a>(org.apache.hadoop.hbase.Cell 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 org.apache.hadoop.hbase.Cell <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellGridStoreScanner.html#line.199">getNextIndexedKey</a>()</pre>
+<pre>public org.apache.hadoop.hbase.Cell <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> in interface <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 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 <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 <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 scan,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner.html#line.262">CellWithVersionsNoOptimizeStoreScanner</a>(org.apache.hadoop.hbase.client.Scan scan,
org.apache.hadoop.hbase.regionserver.ScanInfo 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 boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner.html#line.263">trySkipToNextColumn</a>(org.apache.hadoop.hbase.Cell cell)
+<pre>protected boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner.html#line.269">trySkipToNextColumn</a>(org.apache.hadoop.hbase.Cell 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 org.apache.hadoop.hbase.Cell <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsNoOptimizeStoreScanner.html#line.274">getNextIndexedKey</a>()</pre>
+<pre>public org.apache.hadoop.hbase.Cell <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> in interface <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 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 <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 <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 scan,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsStoreScanner.html#line.233">CellWithVersionsStoreScanner</a>(org.apache.hadoop.hbase.client.Scan scan,
org.apache.hadoop.hbase.regionserver.ScanInfo 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 boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsStoreScanner.html#line.234">trySkipToNextColumn</a>(org.apache.hadoop.hbase.Cell cell)
+<pre>protected boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsStoreScanner.html#line.240">trySkipToNextColumn</a>(org.apache.hadoop.hbase.Cell 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 org.apache.hadoop.hbase.Cell <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestStoreScanner.CellWithVersionsStoreScanner.html#line.245">getNextIndexedKey</a>()</pre>
+<pre>public org.apache.hadoop.hbase.Cell <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> in interface <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 < 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 < 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 < 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) && 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) > 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 < 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 && columnIndex >= 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 < 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 < 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 < 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 < 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) && 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) > 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 < 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 && columnIndex >= 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 < 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 – 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 –
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 – 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 – 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 – 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 – 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 – 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 –
Apache HBase (TM) Metrics
@@ -469,7 +469,7 @@ export HBASE_REGIONSERVER_OPTS="$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 –
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 – 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 – 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 – 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 – 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 – 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 – 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 –
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 –
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 – 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 – 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 – 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 – 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 – 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> </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> </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>©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 –
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 – 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 – 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 – 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 – 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 static final <a href="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 static final <a href="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<? extends KeyValueScanner>, 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> </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<? extends KeyValueScanner>, 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> </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> </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<?>, 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> </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> </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<? extends KeyValueScanner>, 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> </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<? extends KeyValueScanner>, 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> </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><E> (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><T>, 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><? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners,
- <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> comparator)</code> </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><? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners,
+ <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> comparator)</code> </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><? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners,
+ <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> comparator)</code> </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><? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> 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><? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners,
<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> comparator)</code> </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><<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>></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><<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>> cells,
<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> comparator)</code> </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> comparator)</code> </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><E> (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><T>, 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><E> (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><T>, 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><E> (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><T>, 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><E> (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><T>, 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><E> (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><T>, 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 org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.48">LOG</a></pre>
+<pre>private static final 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 <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><<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>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.57">deadServers</a></pre>
+<pre>private final <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><<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>> <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 <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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.62">processingServers</a></pre>
+<pre>private final <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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/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 <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><<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><<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>>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.238">ServerNameDeathDateComparator</a></pre>
+<pre>private static <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><<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><<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>>> <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 <a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.47">DeadServer</a>()</pre>
+<pre>public <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 boolean <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> newServerName)</pre>
+<pre>public boolean <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> 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 boolean <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> serverName)</pre>
+<pre>public boolean <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> 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 boolean <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> serverName)</pre>
+<pre>public boolean <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> 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 boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.114">areDeadServersInProgress</a>()</pre>
+<pre>public boolean <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 <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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.118">copyServerNames</a>()</pre>
+<pre>public <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><<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>> <a href="../../../../../src-html/org/apache/hadoop/hbase/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 void <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> sn)</pre>
+<pre>public void <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> 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 void <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> sn)</pre>
+<pre>public void <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> 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 void <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> sn)</pre>
+<pre>public void <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> 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 int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.166">size</a>()</pre>
+<pre>public int <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 boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.170">isEmpty</a>()</pre>
+<pre>public boolean <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 void <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> newServerName)</pre>
+<pre>public void <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> 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 <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.191">toString</a>()</pre>
+<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/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> in class <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 <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><<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>>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.215">copyDeadServersSince</a>(long ts)</pre>
+<pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><<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>>> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/DeadServer.html#line.214">copyDeadServersSince</a>(long 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 <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> <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> deadServerName)</pre>
+<pre>public <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> <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> 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 boolean <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> deadServerName)</pre>
+<pre>public boolean <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> 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><E> (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><T>, 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><E> (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><T>, 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><E> (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><T>, 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><E> (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><T>, 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><E> (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><T>, 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<? extends HMaster> masterClass,<a name="line.935"></a>
-<span class="sourceLineNo">936</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<? extends HMaster> masterClass,<a name="line.962"></a>
-<span class="sourceLineNo">963</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<? extends HMaster> masterClass,<a name="line.991"></a>
-<span class="sourceLineNo">992</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<? extends HMaster> masterClass,<a name="line.947"></a>
+<span class="sourceLineNo">948</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<? extends HMaster> masterClass,<a name="line.974"></a>
+<span class="sourceLineNo">975</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<? extends HMaster> masterClass,<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<Integer> 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 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 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 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><? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners,
+ <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> comparator)</code> </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> 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><? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners,
- <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> comparator)</code> </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> key)</code>
@@ -276,7 +276,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValue
<!-- -->
</a>
<h3>Methods inherited from 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></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 void <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><? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners,
- <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> 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 <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/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><? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners,
+ <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> 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> in class <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> in class <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 void <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><? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners,
+<pre>protected void <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><? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners,
<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> seekKey,
boolean isLazy,
boolean 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 boolean <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> kv)
+<pre>protected boolean <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> 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 boolean <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> kv)
+<pre>protected boolean <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> 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 void <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> prevKV,
+<pre>protected void <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> prevKV,
<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> kv,
<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> 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 boolean <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> kv)
+<pre>public boolean <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> 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: <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 boolean <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> key)
+<pre>public boolean <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> 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: <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 boolean <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> key)
+<pre>public boolean <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> 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: <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 boolean <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> key)
+<pre>public boolean <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> 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: <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><? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners,
+ <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> comparator)</code> </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><<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>> outResult,
<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a> 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><? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners,
<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> 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> </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> 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><? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners,
<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> comparator)</code> </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> lastTopKey)</code> </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> 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> 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><? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners)</code> </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> 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> cell)</code> </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> cell)</code> </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><? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners,
<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> 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> c)</code> </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><<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/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> 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><? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> 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> 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> 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> </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><<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>> 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><<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> 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 void <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><? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners,
+<pre>protected void <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><? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners,
<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> 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 <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/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><? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners,
+ <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> 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 <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> <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> store,
+<pre>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><<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> <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> 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><? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> 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 <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.454">peek</a>()</pre>
+<pre>public <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.460">peek</a>()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface: <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 <a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.459">next</a>()</pre>
+<pre>public <a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a> <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: <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.465">close</a>()</pre>
+<pre>public void <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: <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.469">close</a>(boolean withDelayedScannersClose)</pre>
+<pre>private void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.475">close</a>(boolean 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 boolean <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> key)
+<pre>public boolean <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> 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: <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 boolean <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><<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>> outResult,
+<pre>public boolean <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><<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>> outResult,
<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a> 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 <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.NextState.html" title="enum in org.apache.hadoop.hbase.regionserver">ScannerContext.NextState</a> <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><<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>> outResult)</pre>
+<pre>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.NextState.html" title="enum in org.apache.hadoop.hbase.regionserver">ScannerContext.NextState</a> <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><<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>> 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 void <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> cell)
+<pre>private void <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> 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 void <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> cell)
+<pre>private void <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> 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 boolean <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> cell)
+<pre>protected boolean <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> 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 boolean <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> cell)
+<pre>protected boolean <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> 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 long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.856">getReadPoint</a>()</pre>
+<pre>public long <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> in interface <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 void <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><<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners)</pre>
+<pre>private static void <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><<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> 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 void <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><<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>> sfs,
+<pre>public void <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><<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>> 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><<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> 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: <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 boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.901">reopenAfterFlush</a>()
+<pre>protected final boolean <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 void <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> lastTopKey)</pre>
+<pre>private void <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> 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 void <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> prevKV,
+<pre>protected void <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> prevKV,
<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> kv,
<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> 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 boolean <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> c)
+<pre>protected boolean <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> 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 boolean <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> kv)
+<pre>protected boolean <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> 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 boolean <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> kv)
+<pre>public boolean <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> 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: <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 <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1005">trySwitchToStreamRead</a>()</pre>
+<pre>void <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 boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1055">checkFlushed</a>()</pre>
+<pre>protected final boolean <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 void <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><? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners,
+<pre>private void <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><? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> scanners,
<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> 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><<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> <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><<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>> <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1127">enableLazySeekGlobally</a>(boolean enable)</pre>
+<pre>static void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1133">enableLazySeekGlobally</a>(boolean 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 long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1134">getEstimatedNumberOfKvsScanned</a>()</pre>
+<pre>public long <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 <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1139">getNextIndexedKey</a>()</pre>
+<pre>public <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/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> in interface <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 void <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreScanner.html#line.1144">shipped</a>()
+<pre>public void <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: <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<? extends HMaster> masterClass,<a name="line.935"></a>
-<span class="sourceLineNo">936</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<? extends HMaster> masterClass,<a name="line.962"></a>
-<span class="sourceLineNo">963</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<? extends HMaster> masterClass,<a name="line.991"></a>
-<span class="sourceLineNo">992</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<? extends HMaster> masterClass,<a name="line.947"></a>
+<span class="sourceLineNo">948</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<? extends HMaster> masterClass,<a name="line.974"></a>
+<span class="sourceLineNo">975</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<? extends HMaster> masterClass,<a name="line.1003"></a>
+<span class="sourceLineNo">1004</span> Class<? extends MiniHBaseCluster.MiniHBaseClusterRegionServer> 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<Integer> 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>