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/21 17:52:36 UTC

[01/29] hbase-site git commit: Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.

Repository: hbase-site
Updated Branches:
  refs/heads/asf-site 54270554e -> 13ae52253


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html
index 28b8679..c6dd2b6 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html
@@ -40,531 +40,530 @@
 <span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.32"></a>
 <span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.33"></a>
 <span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.io.hfile.HFile.Reader;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.io.hfile.HFile.Writer;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.testclassification.IOTests;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.io.BytesWritable;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.junit.ClassRule;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.junit.experimental.categories.Category;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.slf4j.Logger;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.slf4j.LoggerFactory;<a name="line.44"></a>
-<span class="sourceLineNo">045</span><a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLineParser;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.GnuParser;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.HelpFormatter;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.Option;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.OptionBuilder;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.Options;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.ParseException;<a name="line.53"></a>
-<span class="sourceLineNo">054</span><a name="line.54"></a>
-<span class="sourceLineNo">055</span>/**<a name="line.55"></a>
-<span class="sourceLineNo">056</span> * test the performance for seek.<a name="line.56"></a>
-<span class="sourceLineNo">057</span> * &lt;p&gt;<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * Copied from<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * &lt;a href="https://issues.apache.org/jira/browse/HADOOP-3315"&gt;hadoop-3315 tfile&lt;/a&gt;.<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * Remove after tfile is committed and use the tfile version of this class<a name="line.60"></a>
-<span class="sourceLineNo">061</span> * instead.&lt;/p&gt;<a name="line.61"></a>
-<span class="sourceLineNo">062</span> */<a name="line.62"></a>
-<span class="sourceLineNo">063</span>@Category({IOTests.class, MediumTests.class})<a name="line.63"></a>
-<span class="sourceLineNo">064</span>public class TestHFileSeek extends TestCase {<a name="line.64"></a>
-<span class="sourceLineNo">065</span><a name="line.65"></a>
-<span class="sourceLineNo">066</span>  @ClassRule<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.67"></a>
-<span class="sourceLineNo">068</span>      HBaseClassTestRule.forClass(TestHFileSeek.class);<a name="line.68"></a>
-<span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span>  private static final byte[] CF = "f1".getBytes();<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private static final byte[] QUAL = "q1".getBytes();<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  private static final boolean USE_PREAD = true;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  private MyOptions options;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  private Configuration conf;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>  private Path path;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  private FileSystem fs;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  private NanoTimer timer;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  private Random rng;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  private RandomDistribution.DiscreteRNG keyLenGen;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  private KVGenerator kvGen;<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(TestHFileSeek.class);<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>  public void setUp() throws IOException {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    if (options == null) {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>      options = new MyOptions(new String[0]);<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>    conf = new Configuration();<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>    if (options.useRawFs) {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      conf.setClass("fs.file.impl", RawLocalFileSystem.class, FileSystem.class);<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    }<a name="line.94"></a>
-<span class="sourceLineNo">095</span><a name="line.95"></a>
-<span class="sourceLineNo">096</span>    conf.setInt("tfile.fs.input.buffer.size", options.fsInputBufferSize);<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    conf.setInt("tfile.fs.output.buffer.size", options.fsOutputBufferSize);<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    path = new Path(new Path(options.rootDir), options.file);<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    fs = path.getFileSystem(conf);<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    timer = new NanoTimer(false);<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    rng = new Random(options.seed);<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    keyLenGen =<a name="line.102"></a>
-<span class="sourceLineNo">103</span>        new RandomDistribution.Zipf(new Random(rng.nextLong()),<a name="line.103"></a>
-<span class="sourceLineNo">104</span>            options.minKeyLen, options.maxKeyLen, 1.2);<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    RandomDistribution.DiscreteRNG valLenGen =<a name="line.105"></a>
-<span class="sourceLineNo">106</span>        new RandomDistribution.Flat(new Random(rng.nextLong()),<a name="line.106"></a>
-<span class="sourceLineNo">107</span>            options.minValLength, options.maxValLength);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    RandomDistribution.DiscreteRNG wordLenGen =<a name="line.108"></a>
-<span class="sourceLineNo">109</span>        new RandomDistribution.Flat(new Random(rng.nextLong()),<a name="line.109"></a>
-<span class="sourceLineNo">110</span>            options.minWordLen, options.maxWordLen);<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    kvGen =<a name="line.111"></a>
-<span class="sourceLineNo">112</span>        new KVGenerator(rng, true, keyLenGen, valLenGen, wordLenGen,<a name="line.112"></a>
-<span class="sourceLineNo">113</span>            options.dictSize);<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 void tearDown() {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    try {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      fs.close();<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    }<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    catch (Exception e) {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>      // Nothing<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    }<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  }<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  private static FSDataOutputStream createFSOutput(Path name, FileSystem fs)<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    throws IOException {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    if (fs.exists(name)) {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      fs.delete(name, true);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    }<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    FSDataOutputStream fout = fs.create(name);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    return fout;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  }<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>  private void createTFile() throws IOException {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    long totalBytes = 0;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    FSDataOutputStream fout = createFSOutput(path, fs);<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    try {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      HFileContext context = new HFileContextBuilder()<a name="line.139"></a>
-<span class="sourceLineNo">140</span>                            .withBlockSize(options.minBlockSize)<a name="line.140"></a>
-<span class="sourceLineNo">141</span>                            .withCompression(HFileWriterImpl.compressionByName(options.compress))<a name="line.141"></a>
-<span class="sourceLineNo">142</span>                            .build();<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      Writer writer = HFile.getWriterFactoryNoCache(conf)<a name="line.143"></a>
-<span class="sourceLineNo">144</span>          .withOutputStream(fout)<a name="line.144"></a>
-<span class="sourceLineNo">145</span>          .withFileContext(context)<a name="line.145"></a>
-<span class="sourceLineNo">146</span>          .withComparator(CellComparatorImpl.COMPARATOR)<a name="line.146"></a>
-<span class="sourceLineNo">147</span>          .create();<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      try {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>        BytesWritable key = new BytesWritable();<a name="line.149"></a>
-<span class="sourceLineNo">150</span>        BytesWritable val = new BytesWritable();<a name="line.150"></a>
-<span class="sourceLineNo">151</span>        timer.start();<a name="line.151"></a>
-<span class="sourceLineNo">152</span>        for (long i = 0; true; ++i) {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>          if (i % 1000 == 0) { // test the size for every 1000 rows.<a name="line.153"></a>
-<span class="sourceLineNo">154</span>            if (fs.getFileStatus(path).getLen() &gt;= options.fileSize) {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>              break;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>            }<a name="line.156"></a>
-<span class="sourceLineNo">157</span>          }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>          kvGen.next(key, val, false);<a name="line.158"></a>
-<span class="sourceLineNo">159</span>          byte [] k = new byte [key.getLength()];<a name="line.159"></a>
-<span class="sourceLineNo">160</span>          System.arraycopy(key.getBytes(), 0, k, 0, key.getLength());<a name="line.160"></a>
-<span class="sourceLineNo">161</span>          byte [] v = new byte [val.getLength()];<a name="line.161"></a>
-<span class="sourceLineNo">162</span>          System.arraycopy(val.getBytes(), 0, v, 0, key.getLength());<a name="line.162"></a>
-<span class="sourceLineNo">163</span>          KeyValue kv = new KeyValue(k, CF, QUAL, v);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>          writer.append(kv);<a name="line.164"></a>
-<span class="sourceLineNo">165</span>          totalBytes += kv.getKeyLength();<a name="line.165"></a>
-<span class="sourceLineNo">166</span>          totalBytes += kv.getValueLength();<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        }<a name="line.167"></a>
-<span class="sourceLineNo">168</span>        timer.stop();<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      }<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      finally {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        writer.close();<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>    finally {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      fout.close();<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    }<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    double duration = (double)timer.read()/1000; // in us.<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    long fsize = fs.getFileStatus(path).getLen();<a name="line.178"></a>
-<span class="sourceLineNo">179</span><a name="line.179"></a>
-<span class="sourceLineNo">180</span>    System.out.printf(<a name="line.180"></a>
-<span class="sourceLineNo">181</span>        "time: %s...uncompressed: %.2fMB...raw thrpt: %.2fMB/s\n",<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        timer.toString(), (double) totalBytes / 1024 / 1024, totalBytes<a name="line.182"></a>
-<span class="sourceLineNo">183</span>            / duration);<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    System.out.printf("time: %s...file size: %.2fMB...disk thrpt: %.2fMB/s\n",<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        timer.toString(), (double) fsize / 1024 / 1024, fsize / duration);<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>  public void seekTFile() throws IOException {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    int miss = 0;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    long totalBytes = 0;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    FSDataInputStream fsdis = fs.open(path);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    Reader reader = HFile.createReaderFromStream(path, fsdis,<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        fs.getFileStatus(path).getLen(), new CacheConfig(conf), conf);<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    reader.loadFileInfo();<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    KeySampler kSampler = new KeySampler(rng, ((KeyValue) reader.getFirstKey().get()).getKey(),<a name="line.195"></a>
-<span class="sourceLineNo">196</span>        ((KeyValue) reader.getLastKey().get()).getKey(), keyLenGen);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    HFileScanner scanner = reader.getScanner(false, USE_PREAD);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    BytesWritable key = new BytesWritable();<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    timer.reset();<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    timer.start();<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    for (int i = 0; i &lt; options.seekCount; ++i) {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      kSampler.next(key);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      byte [] k = new byte [key.getLength()];<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      System.arraycopy(key.getBytes(), 0, k, 0, key.getLength());<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      if (scanner.seekTo(KeyValueUtil.createKeyValueFromKey(k)) &gt;= 0) {<a name="line.205"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.io.hfile.HFile.Reader;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.io.hfile.HFile.Writer;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.testclassification.IOTests;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.io.BytesWritable;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.junit.ClassRule;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.junit.experimental.categories.Category;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.slf4j.Logger;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.slf4j.LoggerFactory;<a name="line.43"></a>
+<span class="sourceLineNo">044</span><a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLineParser;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.GnuParser;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.HelpFormatter;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.Option;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.OptionBuilder;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.Options;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.ParseException;<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> * test the performance for seek.<a name="line.55"></a>
+<span class="sourceLineNo">056</span> * &lt;p&gt;<a name="line.56"></a>
+<span class="sourceLineNo">057</span> * Copied from<a name="line.57"></a>
+<span class="sourceLineNo">058</span> * &lt;a href="https://issues.apache.org/jira/browse/HADOOP-3315"&gt;hadoop-3315 tfile&lt;/a&gt;.<a name="line.58"></a>
+<span class="sourceLineNo">059</span> * Remove after tfile is committed and use the tfile version of this class<a name="line.59"></a>
+<span class="sourceLineNo">060</span> * instead.&lt;/p&gt;<a name="line.60"></a>
+<span class="sourceLineNo">061</span> */<a name="line.61"></a>
+<span class="sourceLineNo">062</span>@Category({IOTests.class, MediumTests.class})<a name="line.62"></a>
+<span class="sourceLineNo">063</span>public class TestHFileSeek extends TestCase {<a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span>  @ClassRule<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.66"></a>
+<span class="sourceLineNo">067</span>      HBaseClassTestRule.forClass(TestHFileSeek.class);<a name="line.67"></a>
+<span class="sourceLineNo">068</span><a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private static final byte[] CF = "f1".getBytes();<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  private static final byte[] QUAL = "q1".getBytes();<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  private static final boolean USE_PREAD = true;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  private MyOptions options;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private Configuration conf;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  private Path path;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  private FileSystem fs;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  private NanoTimer timer;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  private Random rng;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  private RandomDistribution.DiscreteRNG keyLenGen;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  private KVGenerator kvGen;<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(TestHFileSeek.class);<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>  @Override<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  public void setUp() throws IOException {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    if (options == null) {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>      options = new MyOptions(new String[0]);<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>    conf = new Configuration();<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>    if (options.useRawFs) {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      conf.setClass("fs.file.impl", RawLocalFileSystem.class, FileSystem.class);<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    }<a name="line.93"></a>
+<span class="sourceLineNo">094</span><a name="line.94"></a>
+<span class="sourceLineNo">095</span>    conf.setInt("tfile.fs.input.buffer.size", options.fsInputBufferSize);<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    conf.setInt("tfile.fs.output.buffer.size", options.fsOutputBufferSize);<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    path = new Path(new Path(options.rootDir), options.file);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    fs = path.getFileSystem(conf);<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    timer = new NanoTimer(false);<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    rng = new Random(options.seed);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    keyLenGen =<a name="line.101"></a>
+<span class="sourceLineNo">102</span>        new RandomDistribution.Zipf(new Random(rng.nextLong()),<a name="line.102"></a>
+<span class="sourceLineNo">103</span>            options.minKeyLen, options.maxKeyLen, 1.2);<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    RandomDistribution.DiscreteRNG valLenGen =<a name="line.104"></a>
+<span class="sourceLineNo">105</span>        new RandomDistribution.Flat(new Random(rng.nextLong()),<a name="line.105"></a>
+<span class="sourceLineNo">106</span>            options.minValLength, options.maxValLength);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    RandomDistribution.DiscreteRNG wordLenGen =<a name="line.107"></a>
+<span class="sourceLineNo">108</span>        new RandomDistribution.Flat(new Random(rng.nextLong()),<a name="line.108"></a>
+<span class="sourceLineNo">109</span>            options.minWordLen, options.maxWordLen);<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    kvGen =<a name="line.110"></a>
+<span class="sourceLineNo">111</span>        new KVGenerator(rng, true, keyLenGen, valLenGen, wordLenGen,<a name="line.111"></a>
+<span class="sourceLineNo">112</span>            options.dictSize);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  }<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  @Override<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  public void tearDown() {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    try {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      fs.close();<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    }<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    catch (Exception e) {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      // Nothing<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    }<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  }<a name="line.123"></a>
+<span class="sourceLineNo">124</span><a name="line.124"></a>
+<span class="sourceLineNo">125</span>  private static FSDataOutputStream createFSOutput(Path name, FileSystem fs)<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    throws IOException {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    if (fs.exists(name)) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      fs.delete(name, true);<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    }<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    FSDataOutputStream fout = fs.create(name);<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    return fout;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  }<a name="line.132"></a>
+<span class="sourceLineNo">133</span><a name="line.133"></a>
+<span class="sourceLineNo">134</span>  private void createTFile() throws IOException {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    long totalBytes = 0;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    FSDataOutputStream fout = createFSOutput(path, fs);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    try {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      HFileContext context = new HFileContextBuilder()<a name="line.138"></a>
+<span class="sourceLineNo">139</span>                            .withBlockSize(options.minBlockSize)<a name="line.139"></a>
+<span class="sourceLineNo">140</span>                            .withCompression(HFileWriterImpl.compressionByName(options.compress))<a name="line.140"></a>
+<span class="sourceLineNo">141</span>                            .build();<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      Writer writer = HFile.getWriterFactoryNoCache(conf)<a name="line.142"></a>
+<span class="sourceLineNo">143</span>          .withOutputStream(fout)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>          .withFileContext(context)<a name="line.144"></a>
+<span class="sourceLineNo">145</span>          .withComparator(CellComparatorImpl.COMPARATOR)<a name="line.145"></a>
+<span class="sourceLineNo">146</span>          .create();<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      try {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>        BytesWritable key = new BytesWritable();<a name="line.148"></a>
+<span class="sourceLineNo">149</span>        BytesWritable val = new BytesWritable();<a name="line.149"></a>
+<span class="sourceLineNo">150</span>        timer.start();<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        for (long i = 0; true; ++i) {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>          if (i % 1000 == 0) { // test the size for every 1000 rows.<a name="line.152"></a>
+<span class="sourceLineNo">153</span>            if (fs.getFileStatus(path).getLen() &gt;= options.fileSize) {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>              break;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>            }<a name="line.155"></a>
+<span class="sourceLineNo">156</span>          }<a name="line.156"></a>
+<span class="sourceLineNo">157</span>          kvGen.next(key, val, false);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>          byte [] k = new byte [key.getLength()];<a name="line.158"></a>
+<span class="sourceLineNo">159</span>          System.arraycopy(key.getBytes(), 0, k, 0, key.getLength());<a name="line.159"></a>
+<span class="sourceLineNo">160</span>          byte [] v = new byte [val.getLength()];<a name="line.160"></a>
+<span class="sourceLineNo">161</span>          System.arraycopy(val.getBytes(), 0, v, 0, key.getLength());<a name="line.161"></a>
+<span class="sourceLineNo">162</span>          KeyValue kv = new KeyValue(k, CF, QUAL, v);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>          writer.append(kv);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>          totalBytes += kv.getKeyLength();<a name="line.164"></a>
+<span class="sourceLineNo">165</span>          totalBytes += kv.getValueLength();<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        timer.stop();<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      }<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      finally {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>        writer.close();<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>    finally {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      fout.close();<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    }<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    double duration = (double)timer.read()/1000; // in us.<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    long fsize = fs.getFileStatus(path).getLen();<a name="line.177"></a>
+<span class="sourceLineNo">178</span><a name="line.178"></a>
+<span class="sourceLineNo">179</span>    System.out.printf(<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        "time: %s...uncompressed: %.2fMB...raw thrpt: %.2fMB/s\n",<a name="line.180"></a>
+<span class="sourceLineNo">181</span>        timer.toString(), (double) totalBytes / 1024 / 1024, totalBytes<a name="line.181"></a>
+<span class="sourceLineNo">182</span>            / duration);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    System.out.printf("time: %s...file size: %.2fMB...disk thrpt: %.2fMB/s\n",<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        timer.toString(), (double) fsize / 1024 / 1024, fsize / duration);<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>  public void seekTFile() throws IOException {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    int miss = 0;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    long totalBytes = 0;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    FSDataInputStream fsdis = fs.open(path);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    Reader reader = HFile.createReaderFromStream(path, fsdis,<a name="line.191"></a>
+<span class="sourceLineNo">192</span>        fs.getFileStatus(path).getLen(), new CacheConfig(conf), conf);<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    reader.loadFileInfo();<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    KeySampler kSampler = new KeySampler(rng, ((KeyValue) reader.getFirstKey().get()).getKey(),<a name="line.194"></a>
+<span class="sourceLineNo">195</span>        ((KeyValue) reader.getLastKey().get()).getKey(), keyLenGen);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    HFileScanner scanner = reader.getScanner(false, USE_PREAD);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    BytesWritable key = new BytesWritable();<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    timer.reset();<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    timer.start();<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    for (int i = 0; i &lt; options.seekCount; ++i) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      kSampler.next(key);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      byte[] k = new byte[key.getLength()];<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      System.arraycopy(key.getBytes(), 0, k, 0, key.getLength());<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      KeyValue kv = new KeyValue(k, CF, QUAL);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      if (scanner.seekTo(kv) &gt;= 0) {<a name="line.205"></a>
 <span class="sourceLineNo">206</span>        ByteBuffer bbkey = ByteBuffer.wrap(((KeyValue) scanner.getKey()).getKey());<a name="line.206"></a>
 <span class="sourceLineNo">207</span>        ByteBuffer bbval = scanner.getValue();<a name="line.207"></a>
 <span class="sourceLineNo">208</span>        totalBytes += bbkey.limit();<a name="line.208"></a>
 <span class="sourceLineNo">209</span>        totalBytes += bbval.limit();<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      }<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      else {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        ++miss;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      }<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    }<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    timer.stop();<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    System.out.printf(<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        "time: %s...avg seek: %s...%d hit...%d miss...avg I/O size: %.2fKB\n",<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        timer.toString(), NanoTimer.nanoTimeToString(timer.read()<a name="line.218"></a>
-<span class="sourceLineNo">219</span>            / options.seekCount), options.seekCount - miss, miss,<a name="line.219"></a>
-<span class="sourceLineNo">220</span>        (double) totalBytes / 1024 / (options.seekCount - miss));<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>  public void testSeeks() throws IOException {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    if (options.doCreate()) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      createTFile();<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>    if (options.doRead()) {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      seekTFile();<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    }<a name="line.231"></a>
-<span class="sourceLineNo">232</span><a name="line.232"></a>
-<span class="sourceLineNo">233</span>    if (options.doCreate()) {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      fs.delete(path, true);<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><a name="line.237"></a>
-<span class="sourceLineNo">238</span>  private static class IntegerRange {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    private final int from, to;<a name="line.239"></a>
-<span class="sourceLineNo">240</span><a name="line.240"></a>
-<span class="sourceLineNo">241</span>    public IntegerRange(int from, int to) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      this.from = from;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      this.to = to;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    }<a name="line.244"></a>
-<span class="sourceLineNo">245</span><a name="line.245"></a>
-<span class="sourceLineNo">246</span>    public static IntegerRange parse(String s) throws ParseException {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      StringTokenizer st = new StringTokenizer(s, " \t,");<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      if (st.countTokens() != 2) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        throw new ParseException("Bad integer specification: " + s);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      }<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      int from = Integer.parseInt(st.nextToken());<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      int to = Integer.parseInt(st.nextToken());<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      return new IntegerRange(from, to);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>    public int from() {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      return from;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    }<a name="line.258"></a>
-<span class="sourceLineNo">259</span><a name="line.259"></a>
-<span class="sourceLineNo">260</span>    public int to() {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      return to;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    }<a name="line.262"></a>
-<span class="sourceLineNo">263</span>  }<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>  private static class MyOptions {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    // hard coded constants<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    int dictSize = 1000;<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    int minWordLen = 5;<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    int maxWordLen = 20;<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>    private HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    String rootDir =<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      TEST_UTIL.getDataTestDir("TestTFileSeek").toString();<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    String file = "TestTFileSeek";<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    // String compress = "lzo"; DISABLED<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    String compress = "none";<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    int minKeyLen = 10;<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    int maxKeyLen = 50;<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    int minValLength = 1024;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    int maxValLength = 2 * 1024;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    int minBlockSize = 1 * 1024 * 1024;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    int fsOutputBufferSize = 1;<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    int fsInputBufferSize = 0;<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    // Default writing 10MB.<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    long fileSize = 10 * 1024 * 1024;<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    long seekCount = 1000;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    long trialCount = 1;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    long seed;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    boolean useRawFs = false;<a name="line.289"></a>
-<span class="sourceLineNo">290</span><a name="line.290"></a>
-<span class="sourceLineNo">291</span>    static final int OP_CREATE = 1;<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    static final int OP_READ = 2;<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    int op = OP_CREATE | OP_READ;<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>    boolean proceed = false;<a name="line.295"></a>
-<span class="sourceLineNo">296</span><a name="line.296"></a>
-<span class="sourceLineNo">297</span>    public MyOptions(String[] args) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      seed = System.nanoTime();<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>      try {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        Options opts = buildOptions();<a name="line.301"></a>
-<span class="sourceLineNo">302</span>        CommandLineParser parser = new GnuParser();<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        CommandLine line = parser.parse(opts, args, true);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        processOptions(line, opts);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        validateOptions();<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      catch (ParseException e) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        System.out.println(e.getMessage());<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        System.out.println("Try \"--help\" option for details.");<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        setStopProceed();<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>    public boolean proceed() {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      return proceed;<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>    private Options buildOptions() {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      Option compress =<a name="line.319"></a>
-<span class="sourceLineNo">320</span>          OptionBuilder.withLongOpt("compress").withArgName("[none|lzo|gz|snappy]")<a name="line.320"></a>
-<span class="sourceLineNo">321</span>              .hasArg().withDescription("compression scheme").create('c');<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>      Option fileSize =<a name="line.323"></a>
-<span class="sourceLineNo">324</span>          OptionBuilder.withLongOpt("file-size").withArgName("size-in-MB")<a name="line.324"></a>
-<span class="sourceLineNo">325</span>              .hasArg().withDescription("target size of the file (in MB).")<a name="line.325"></a>
-<span class="sourceLineNo">326</span>              .create('s');<a name="line.326"></a>
-<span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>      Option fsInputBufferSz =<a name="line.328"></a>
-<span class="sourceLineNo">329</span>          OptionBuilder.withLongOpt("fs-input-buffer").withArgName("size")<a name="line.329"></a>
-<span class="sourceLineNo">330</span>              .hasArg().withDescription(<a name="line.330"></a>
-<span class="sourceLineNo">331</span>                  "size of the file system input buffer (in bytes).").create(<a name="line.331"></a>
-<span class="sourceLineNo">332</span>                  'i');<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>      Option fsOutputBufferSize =<a name="line.334"></a>
-<span class="sourceLineNo">335</span>          OptionBuilder.withLongOpt("fs-output-buffer").withArgName("size")<a name="line.335"></a>
-<span class="sourceLineNo">336</span>              .hasArg().withDescription(<a name="line.336"></a>
-<span class="sourceLineNo">337</span>                  "size of the file system output buffer (in bytes).").create(<a name="line.337"></a>
-<span class="sourceLineNo">338</span>                  'o');<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>      Option keyLen =<a name="line.340"></a>
-<span class="sourceLineNo">341</span>          OptionBuilder<a name="line.341"></a>
-<span class="sourceLineNo">342</span>              .withLongOpt("key-length")<a name="line.342"></a>
-<span class="sourceLineNo">343</span>              .withArgName("min,max")<a name="line.343"></a>
-<span class="sourceLineNo">344</span>              .hasArg()<a name="line.344"></a>
-<span class="sourceLineNo">345</span>              .withDescription(<a name="line.345"></a>
-<span class="sourceLineNo">346</span>                  "the length range of the key (in bytes)")<a name="line.346"></a>
-<span class="sourceLineNo">347</span>              .create('k');<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>      Option valueLen =<a name="line.349"></a>
-<span class="sourceLineNo">350</span>          OptionBuilder<a name="line.350"></a>
-<span class="sourceLineNo">351</span>              .withLongOpt("value-length")<a name="line.351"></a>
-<span class="sourceLineNo">352</span>              .withArgName("min,max")<a name="line.352"></a>
-<span class="sourceLineNo">353</span>              .hasArg()<a name="line.353"></a>
-<span class="sourceLineNo">354</span>              .withDescription(<a name="line.354"></a>
-<span class="sourceLineNo">355</span>                  "the length range of the value (in bytes)")<a name="line.355"></a>
-<span class="sourceLineNo">356</span>              .create('v');<a name="line.356"></a>
-<span class="sourceLineNo">357</span><a name="line.357"></a>
-<span class="sourceLineNo">358</span>      Option blockSz =<a name="line.358"></a>
-<span class="sourceLineNo">359</span>          OptionBuilder.withLongOpt("block").withArgName("size-in-KB").hasArg()<a name="line.359"></a>
-<span class="sourceLineNo">360</span>              .withDescription("minimum block size (in KB)").create('b');<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>      Option operation =<a name="line.362"></a>
-<span class="sourceLineNo">363</span>          OptionBuilder.withLongOpt("operation").withArgName("r|w|rw").hasArg()<a name="line.363"></a>
-<span class="sourceLineNo">364</span>              .withDescription(<a name="line.364"></a>
-<span class="sourceLineNo">365</span>                  "action: seek-only, create-only, seek-after-create").create(<a name="line.365"></a>
-<span class="sourceLineNo">366</span>                  'x');<a name="line.366"></a>
-<span class="sourceLineNo">367</span><a name="line.367"></a>
-<span class="sourceLineNo">368</span>      Option rootDir =<a name="line.368"></a>
-<span class="sourceLineNo">369</span>          OptionBuilder.withLongOpt("root-dir").withArgName("path").hasArg()<a name="line.369"></a>
-<span class="sourceLineNo">370</span>              .withDescription(<a name="line.370"></a>
-<span class="sourceLineNo">371</span>                  "specify root directory where files will be created.")<a name="line.371"></a>
-<span class="sourceLineNo">372</span>              .create('r');<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>      Option file =<a name="line.374"></a>
-<span class="sourceLineNo">375</span>          OptionBuilder.withLongOpt("file").withArgName("name").hasArg()<a name="line.375"></a>
-<span class="sourceLineNo">376</span>              .withDescription("specify the file name to be created or read.")<a name="line.376"></a>
-<span class="sourceLineNo">377</span>              .create('f');<a name="line.377"></a>
-<span class="sourceLineNo">378</span><a name="line.378"></a>
-<span class="sourceLineNo">379</span>      Option seekCount =<a name="line.379"></a>
-<span class="sourceLineNo">380</span>          OptionBuilder<a name="line.380"></a>
-<span class="sourceLineNo">381</span>              .withLongOpt("seek")<a name="line.381"></a>
-<span class="sourceLineNo">382</span>              .withArgName("count")<a name="line.382"></a>
-<span class="sourceLineNo">383</span>              .hasArg()<a name="line.383"></a>
-<span class="sourceLineNo">384</span>              .withDescription(<a name="line.384"></a>
-<span class="sourceLineNo">385</span>                  "specify how many seek operations we perform (requires -x r or -x rw.")<a name="line.385"></a>
-<span class="sourceLineNo">386</span>              .create('n');<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>      Option trialCount =<a name="line.388"></a>
-<span class="sourceLineNo">389</span>          OptionBuilder<a name="line.389"></a>
-<span class="sourceLineNo">390</span>              .withLongOpt("trials")<a name="line.390"></a>
-<span class="sourceLineNo">391</span>              .withArgName("n")<a name="line.391"></a>
-<span class="sourceLineNo">392</span>              .hasArg()<a name="line.392"></a>
-<span class="sourceLineNo">393</span>              .withDescription(<a name="line.393"></a>
-<span class="sourceLineNo">394</span>                  "specify how many times to run the whole benchmark")<a name="line.394"></a>
-<span class="sourceLineNo">395</span>              .create('t');<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>      Option useRawFs =<a name="line.397"></a>
-<span class="sourceLineNo">398</span>          OptionBuilder<a name="line.398"></a>
-<span class="sourceLineNo">399</span>            .withLongOpt("rawfs")<a name="line.399"></a>
-<span class="sourceLineNo">400</span>            .withDescription("use raw instead of checksummed file system")<a name="line.400"></a>
-<span class="sourceLineNo">401</span>            .create();<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>      Option help =<a name="line.403"></a>
-<span class="sourceLineNo">404</span>          OptionBuilder.withLongOpt("help").hasArg(false).withDescription(<a name="line.404"></a>
-<span class="sourceLineNo">405</span>              "show this screen").create("h");<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>      return new Options().addOption(compress).addOption(fileSize).addOption(<a name="line.407"></a>
-<span class="sourceLineNo">408</span>          fsInputBufferSz).addOption(fsOutputBufferSize).addOption(keyLen)<a name="line.408"></a>
-<span class="sourceLineNo">409</span>          .addOption(blockSz).addOption(rootDir).addOption(valueLen)<a name="line.409"></a>
-<span class="sourceLineNo">410</span>          .addOption(operation).addOption(seekCount).addOption(file)<a name="line.410"></a>
-<span class="sourceLineNo">411</span>          .addOption(trialCount).addOption(useRawFs).addOption(help);<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span>    }<a name="line.413"></a>
-<span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>    private void processOptions(CommandLine line, Options opts)<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        throws ParseException {<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      // --help -h and --version -V must be processed first.<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      if (line.hasOption('h')) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        HelpFormatter formatter = new HelpFormatter();<a name="line.419"></a>
-<span class="sourceLineNo">420</span>        System.out.println("TFile and SeqFile benchmark.");<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        System.out.println();<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        formatter.printHelp(100,<a name="line.422"></a>
-<span class="sourceLineNo">423</span>            "java ... TestTFileSeqFileComparison [options]",<a name="line.423"></a>
-<span class="sourceLineNo">424</span>            "\nSupported options:", opts, "");<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        return;<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>      if (line.hasOption('c')) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        compress = line.getOptionValue('c');<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      }<a name="line.430"></a>
-<span class="sourceLineNo">431</span><a name="line.431"></a>
-<span class="sourceLineNo">432</span>      if (line.hasOption('d')) {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>        dictSize = Integer.parseInt(line.getOptionValue('d'));<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      }<a name="line.434"></a>
-<span class="sourceLineNo">435</span><a name="line.435"></a>
-<span class="sourceLineNo">436</span>      if (line.hasOption('s')) {<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        fileSize = Long.parseLong(line.getOptionValue('s')) * 1024 * 1024;<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      }<a name="line.438"></a>
-<span class="sourceLineNo">439</span><a name="line.439"></a>
-<span class="sourceLineNo">440</span>      if (line.hasOption('i')) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>        fsInputBufferSize = Integer.parseInt(line.getOptionValue('i'));<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 (line.hasOption('o')) {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>        fsOutputBufferSize = Integer.parseInt(line.getOptionValue('o'));<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      }<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>      if (line.hasOption('n')) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>        seekCount = Integer.parseInt(line.getOptionValue('n'));<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>      if (line.hasOption('t')) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>        trialCount = Integer.parseInt(line.getOptionValue('t'));<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>      if (line.hasOption('k')) {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>        IntegerRange ir = IntegerRange.parse(line.getOptionValue('k'));<a name="line.457"></a>
-<span class="sourceLineNo">458</span>        minKeyLen = ir.from();<a name="line.458"></a>
-<span class="sourceLineNo">459</span>        maxKeyLen = ir.to();<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      }<a name="line.460"></a>
-<span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>      if (line.hasOption('v')) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>        IntegerRange ir = IntegerRange.parse(line.getOptionValue('v'));<a name="line.463"></a>
-<span class="sourceLineNo">464</span>        minValLength = ir.from();<a name="line.464"></a>
-<span class="sourceLineNo">465</span>        maxValLength = ir.to();<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>      if (line.hasOption('b')) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>        minBlockSize = Integer.parseInt(line.getOptionValue('b')) * 1024;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      }<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>      if (line.hasOption('r')) {<a name="line.472"></a>
-<span class="sourceLineNo">473</span>        rootDir = line.getOptionValue('r');<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      }<a name="line.474"></a>
-<span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>      if (line.hasOption('f')) {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>        file = line.getOptionValue('f');<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      }<a name="line.478"></a>
-<span class="sourceLineNo">479</span><a name="line.479"></a>
-<span class="sourceLineNo">480</span>      if (line.hasOption('S')) {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>        seed = Long.parseLong(line.getOptionValue('S'));<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      }<a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>      if (line.hasOption('x')) {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>        String strOp = line.getOptionValue('x');<a name="line.485"></a>
-<span class="sourceLineNo">486</span>        if (strOp.equals("r")) {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>          op = OP_READ;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>        }<a name="line.488"></a>
-<span class="sourceLineNo">489</span>        else if (strOp.equals("w")) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>          op = OP_CREATE;<a name="line.490"></a>
-<span class="sourceLineNo">491</span>        }<a name="line.491"></a>
-<span class="sourceLineNo">492</span>        else if (strOp.equals("rw")) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>          op = OP_CREATE | OP_READ;<a name="line.493"></a>
-<span class="sourceLineNo">494</span>        }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>        else {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>          throw new ParseException("Unknown action specifier: " + strOp);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>        }<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      }<a name="line.498"></a>
-<span class="sourceLineNo">499</span><a name="line.499"></a>
-<span class="sourceLineNo">500</span>      useRawFs = line.hasOption("rawfs");<a name="line.500"></a>
-<span class="sourceLineNo">501</span><a name="line.501"></a>
-<span class="sourceLineNo">502</span>      proceed = true;<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>    private void validateOptions() throws ParseException {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>      if (!compress.equals("none") &amp;&amp; !compress.equals("lzo")<a name="line.506"></a>
-<span class="sourceLineNo">507</span>          &amp;&amp; !compress.equals("gz") &amp;&amp; !compress.equals("snappy")) {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>        throw new ParseException("Unknown compression scheme: " + compress);<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>      if (minKeyLen &gt;= maxKeyLen) {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>        throw new ParseException(<a name="line.512"></a>
-<span class="sourceLineNo">513</span>            "Max key length must be greater than min key length.");<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      }<a name="line.514"></a>
-<span class="sourceLineNo">515</span><a name="line.515"></a>
-<span class="sourceLineNo">516</span>      if (minValLength &gt;= maxValLength) {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>        throw new ParseException(<a name="line.517"></a>
-<span class="sourceLineNo">518</span>            "Max value length must be greater than min value length.");<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 (minWordLen &gt;= maxWordLen) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>        throw new ParseException(<a name="line.522"></a>
-<span class="sourceLineNo">523</span>            "Max word length must be greater than min word length.");<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      }<a name="line.524"></a>
-<span class="sourceLineNo">525</span>      return;<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>    private void setStopProceed() {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>      proceed = false;<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    }<a name="line.530"></a>
-<span class="sourceLineNo">531</span><a name="line.531"></a>
-<span class="sourceLineNo">532</span>    public boolean doCreate() {<a name="line.532"></a>
-<span class="sourceLineNo">533</span>      return (op &amp; OP_CREATE) != 0;<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    }<a name="line.534"></a>
-<span class="sourceLineNo">535</span><a name="line.535"></a>
-<span class="sourceLineNo">536</span>    public boolean doRead() {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      return (op &amp; OP_READ) != 0;<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    }<a name="line.538"></a>
-<span class="sourceLineNo">539</span>  }<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>  public static void main(String[] argv) throws IOException {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    TestHFileSeek testCase = new TestHFileSeek();<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    MyOptions options = new MyOptions(argv);<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>    if (options.proceed == false) {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>      return;<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    }<a name="line.547"></a>
-<span class="sourceLineNo">548</span><a name="line.548"></a>
-<span class="sourceLineNo">549</span>    testCase.options = options;<a name="line.549"></a>
-<span class="sourceLineNo">550</span>    for (int i = 0; i &lt; options.trialCount; i++) {<a name="line.550"></a>
-<span class="sourceLineNo">551</span>      LOG.info("Beginning trial " + (i+1));<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      testCase.setUp();<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      testCase.testSeeks();<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      testCase.tearDown();<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    }<a name="line.555"></a>
-<span class="sourceLineNo">556</span>  }<a name="line.556"></a>
-<span class="sourceLineNo">557</span><a name="line.557"></a>
-<span class="sourceLineNo">558</span>}<a name="line.558"></a>
-<span class="sourceLineNo">559</span><a name="line.559"></a>
+<span class="sourceLineNo">210</span>      } else {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        ++miss;<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>    timer.stop();<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    System.out.printf(<a name="line.215"></a>
+<span class="sourceLineNo">216</span>        "time: %s...avg seek: %s...%d hit...%d miss...avg I/O size: %.2fKB\n",<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        timer.toString(), NanoTimer.nanoTimeToString(timer.read()<a name="line.217"></a>
+<span class="sourceLineNo">218</span>            / options.seekCount), options.seekCount - miss, miss,<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        (double) totalBytes / 1024 / (options.seekCount - miss));<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>  public void testSeeks() throws IOException {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    if (options.doCreate()) {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      createTFile();<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>    if (options.doRead()) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      seekTFile();<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    }<a name="line.230"></a>
+<span class="sourceLineNo">231</span><a name="line.231"></a>
+<span class="sourceLineNo">232</span>    if (options.doCreate()) {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      fs.delete(path, true);<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    }<a name="line.234"></a>
+<span class="sourceLineNo">235</span>  }<a name="line.235"></a>
+<span class="sourceLineNo">236</span><a name="line.236"></a>
+<span class="sourceLineNo">237</span>  private static class IntegerRange {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    private final int from, to;<a name="line.238"></a>
+<span class="sourceLineNo">239</span><a name="line.239"></a>
+<span class="sourceLineNo">240</span>    public IntegerRange(int from, int to) {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      this.from = from;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      this.to = to;<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>    public static IntegerRange parse(String s) throws ParseException {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      StringTokenizer st = new StringTokenizer(s, " \t,");<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      if (st.countTokens() != 2) {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        throw new ParseException("Bad integer specification: " + s);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      }<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      int from = Integer.parseInt(st.nextToken());<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      int to = Integer.parseInt(st.nextToken());<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      return new IntegerRange(from, to);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    }<a name="line.253"></a>
+<span class="sourceLineNo">254</span><a name="line.254"></a>
+<span class="sourceLineNo">255</span>    public int from() {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      return from;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>    public int to() {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      return to;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    }<a name="line.261"></a>
+<span class="sourceLineNo">262</span>  }<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span>  private static class MyOptions {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    // hard coded constants<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    int dictSize = 1000;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    int minWordLen = 5;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    int maxWordLen = 20;<a name="line.268"></a>
+<span class="sourceLineNo">269</span><a name="line.269"></a>
+<span class="sourceLineNo">270</span>    private HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    String rootDir =<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      TEST_UTIL.getDataTestDir("TestTFileSeek").toString();<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    String file = "TestTFileSeek";<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    // String compress = "lzo"; DISABLED<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    String compress = "none";<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    int minKeyLen = 10;<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    int maxKeyLen = 50;<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    int minValLength = 1024;<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    int maxValLength = 2 * 1024;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    int minBlockSize = 1 * 1024 * 1024;<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    int fsOutputBufferSize = 1;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    int fsInputBufferSize = 0;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    // Default writing 10MB.<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    long fileSize = 10 * 1024 * 1024;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    long seekCount = 1000;<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    long trialCount = 1;<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    long seed;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    boolean useRawFs = false;<a name="line.288"></a>
+<span class="sourceLineNo">289</span><a name="line.289"></a>
+<span class="sourceLineNo">290</span>    static final int OP_CREATE = 1;<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    static final int OP_READ = 2;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    int op = OP_CREATE | OP_READ;<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>    boolean proceed = false;<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>    public MyOptions(String[] args) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      seed = System.nanoTime();<a name="line.297"></a>
+<span class="sourceLineNo">298</span><a name="line.298"></a>
+<span class="sourceLineNo">299</span>      try {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        Options opts = buildOptions();<a name="line.300"></a>
+<span class="sourceLineNo">301</span>        CommandLineParser parser = new GnuParser();<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        CommandLine line = parser.parse(opts, args, true);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        processOptions(line, opts);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>        validateOptions();<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      }<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      catch (ParseException e) {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        System.out.println(e.getMessage());<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        System.out.println("Try \"--help\" option for details.");<a name="line.308"></a>
+<span class="sourceLineNo">309</span>        setStopProceed();<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>    public boolean proceed() {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      return proceed;<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    }<a name="line.315"></a>
+<span class="sourceLineNo">316</span><a name="line.316"></a>
+<span class="sourceLineNo">317</span>    private Options buildOptions() {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      Option compress =<a name="line.318"></a>
+<span class="sourceLineNo">319</span>          OptionBuilder.withLongOpt("compress").withArgName("[none|lzo|gz|snappy]")<a name="line.319"></a>
+<span class="sourceLineNo">320</span>              .hasArg().withDescription("compression scheme").create('c');<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>      Option fileSize =<a name="line.322"></a>
+<span class="sourceLineNo">323</span>          OptionBuilder.withLongOpt("file-size").withArgName("size-in-MB")<a name="line.323"></a>
+<span class="sourceLineNo">324</span>              .hasArg().withDescription("target size of the file (in MB).")<a name="line.324"></a>
+<span class="sourceLineNo">325</span>              .create('s');<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>      Option fsInputBufferSz =<a name="line.327"></a>
+<span class="sourceLineNo">328</span>          OptionBuilder.withLongOpt("fs-input-buffer").withArgName("size")<a name="line.328"></a>
+<span class="sourceLineNo">329</span>              .hasArg().withDescription(<a name="line.329"></a>
+<span class="sourceLineNo">330</span>                  "size of the file system input buffer (in bytes).").create(<a name="line.330"></a>
+<span class="sourceLineNo">331</span>                  'i');<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>      Option fsOutputBufferSize =<a name="line.333"></a>
+<span class="sourceLineNo">334</span>          OptionBuilder.withLongOpt("fs-output-buffer").withArgName("size")<a name="line.334"></a>
+<span class="sourceLineNo">335</span>              .hasArg().withDescription(<a name="line.335"></a>
+<span class="sourceLineNo">336</span>                  "size of the file system output buffer (in bytes).").create(<a name="line.336"></a>
+<span class="sourceLineNo">337</span>                  'o');<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>      Option keyLen =<a name="line.339"></a>
+<span class="sourceLineNo">340</span>          OptionBuilder<a name="line.340"></a>
+<span class="sourceLineNo">341</span>              .withLongOpt("key-length")<a name="line.341"></a>
+<span class="sourceLineNo">342</span>              .withArgName("min,max")<a name="line.342"></a>
+<span class="sourceLineNo">343</span>              .hasArg()<a name="line.343"></a>
+<span class="sourceLineNo">344</span>              .withDescription(<a name="line.344"></a>
+<span class="sourceLineNo">345</span>                  "the length range of the key (in bytes)")<a name="line.345"></a>
+<span class="sourceLineNo">346</span>              .create('k');<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>      Option valueLen =<a name="line.348"></a>
+<span class="sourceLineNo">349</span>          OptionBuilder<a name="line.349"></a>
+<span class="sourceLineNo">350</span>              .withLongOpt("value-length")<a name="line.350"></a>
+<span class="sourceLineNo">351</span>              .withArgName("min,max")<a name="line.351"></a>
+<span class="sourceLineNo">352</span>              .hasArg()<a name="line.352"></a>
+<span class="sourceLineNo">353</span>              .withDescription(<a name="line.353"></a>
+<span class="sourceLineNo">354</span>                  "the length range of the value (in bytes)")<a name="line.354"></a>
+<span class="sourceLineNo">355</span>              .create('v');<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>      Option blockSz =<a name="line.357"></a>
+<span class="sourceLineNo">358</span>          OptionBuilder.withLongOpt("block").withArgName("size-in-KB").hasArg()<a name="line.358"></a>
+<span class="sourceLineNo">359</span>              .withDescription("minimum block size (in KB)").create('b');<a name="line.359"></a>
+<span class="sourceLineNo">360</span><a name="line.360"></a>
+<span class="sourceLineNo">361</span>      Option operation =<a name="line.361"></a>
+<span class="sourceLineNo">362</span>          OptionBuilder.withLongOpt("operation").withArgName("r|w|rw").hasArg()<a name="line.362"></a>
+<span class="sourceLineNo">363</span>              .withDescription(<a name="line.363"></a>
+<span class="sourceLineNo">364</span>                  "action: seek-only, create-only, seek-after-create").create(<a name="line.364"></a>
+<span class="sourceLineNo">365</span>                  'x');<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>      Option rootDir =<a name="line.367"></a>
+<span class="sourceLineNo">368</span>          OptionBuilder.withLongOpt("root-dir").withArgName("path").hasArg()<a name="line.368"></a>
+<span class="sourceLineNo">369</span>              .withDescription(<a name="line.369"></a>
+<span class="sourceLineNo">370</span>                  "specify root directory where files will be created.")<a name="line.370"></a>
+<span class="sourceLineNo">371</span>              .create('r');<a name="line.371"></a>
+<span class="sourceLineNo">372</span><a name="line.372"></a>
+<span class="sourceLineNo">373</span>      Option file =<a name="line.373"></a>
+<span class="sourceLineNo">374</span>          OptionBuilder.withLongOpt("file").withArgName("name").hasArg()<a name="line.374"></a>
+<span class="sourceLineNo">375</span>              .withDescription("specify the file name to be created or read.")<a name="line.375"></a>
+<span class="sourceLineNo">376</span>              .create('f');<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>      Option seekCount =<a name="line.378"></a>
+<span class="sourceLineNo">379</span>          OptionBuilder<a name="line.379"></a>
+<span class="sourceLineNo">380</span>              .withLongOpt("seek")<a name="line.380"></a>
+<span class="sourceLineNo">381</span>              .withArgName("count")<a name="line.381"></a>
+<span class="sourceLineNo">382</span>              .hasArg()<a name="line.382"></a>
+<span class="sourceLineNo">383</span>              .withDescription(<a name="line.383"></a>
+<span class="sourceLineNo">384</span>                  "specify how many seek operations we perform (requires -x r or -x rw.")<a name="line.384"></a>
+<span class="sourceLineNo">385</span>              .create('n');<a name="line.385"></a>
+<span class="sourceLineNo">386</span><a name="line.386"></a>
+<span class="sourceLineNo">387</span>      Option trialCount =<a name="line.387"></a>
+<span class="sourceLineNo">388</span>          OptionBuilder<a name="line.388"></a>
+<span class="sourceLineNo">389</span>              .withLongOpt("trials")<a name="line.389"></a>
+<span class="sourceLineNo">390</span>              .withArgName("n")<a name="line.390"></a>
+<span class="sourceLineNo">391</span>              .hasArg()<a name="line.391"></a>
+<span class="sourceLineNo">392</span>              .withDescription(<a name="line.392"></a>
+<span class="sourceLineNo">393</span>                  "specify how many times to run the whole benchmark")<a name="line.393"></a>
+<span class="sourceLineNo">394</span>              .create('t');<a name="line.394"></a>
+<span class="sourceLineNo">395</span><a name="line.395"></a>
+<span class="sourceLineNo">396</span>      Option useRawFs =<a name="line.396"></a>
+<span class="sourceLineNo">397</span>          OptionBuilder<a name="line.397"></a>
+<span class="sourceLineNo">398</span>            .withLongOpt("rawfs")<a name="line.398"></a>
+<span class="sourceLineNo">399</span>            .withDescription("use raw instead of checksummed file system")<a name="line.399"></a>
+<span class="sourceLineNo">400</span>            .create();<a name="line.400"></a>
+<span class="sourceLineNo">401</span><a name="line.401"></a>
+<span class="sourceLineNo">402</span>      Option help =<a name="line.402"></a>
+<span class="sourceLineNo">403</span>          OptionBuilder.withLongOpt("help").hasArg(false).withDescription(<a name="line.403"></a>
+<span class="sourceLineNo">404</span>              "show this screen").create("h");<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>      return new Options().addOption(compress).addOption(fileSize).addOption(<a name="line.406"></a>
+<span class="sourceLineNo">407</span>          fsInputBufferSz).addOption(fsOutputBufferSize).addOption(keyLen)<a name="line.407"></a>
+<span class="sourceLineNo">408</span>          .addOption(blockSz).addOption(rootDir).addOption(valueLen)<a name="line.408"></a>
+<span class="sourceLineNo">409</span>          .addOption(operation).addOption(seekCount).addOption(file)<a name="line.409"></a>
+<span class="sourceLineNo">410</span>          .addOption(trialCount).addOption(useRawFs).addOption(help);<a name="line.410"></a>
+<span class="sourceLineNo">411</span><a name="line.411"></a>
+<span class="sourceLineNo">412</span>    }<a name="line.412"></a>
+<span class="sourceLineNo">413</span><a name="line.413"></a>
+<span class="sourceLineNo">414</span>    private void processOptions(CommandLine line, Options opts)<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        throws ParseException {<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      // --help -h and --version -V must be processed first.<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      if (line.hasOption('h')) {<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        HelpFormatter formatter = new HelpFormatter();<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        System.out.println("TFile and SeqFile benchmark.");<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        System.out.println();<a name="line.420"></a>
+<span class="sourceLineNo">421</span>        formatter.printHelp(100,<a name="line.421"></a>
+<span class="sourceLineNo">422</span>            "java ... TestTFileSeqFileComparison [options]",<a name="line.422"></a>
+<span class="sourceLineNo">423</span>            "\nSupported options:", opts, "");<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        return;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      }<a name="line.425"></a>
+<span class="sourceLineNo">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>      if (line.hasOption('c')) {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        compress = line.getOptionValue('c');<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>      if (line.hasOption('d')) {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>        dictSize = Integer.parseInt(line.getOptionValue('d'));<a name="line.432"></a>
+<span class="sourceLineNo">433</span>      }<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</span>      if (line.hasOption('s')) {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>        fileSize = Long.parseLong(line.getOptionValue('s')) * 1024 * 1024;<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      }<a name="line.437"></a>
+<span class="sourceLineNo">438</span><a name="line.438"></a>
+<span class="sourceLineNo">439</span>      if (line.hasOption('i')) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>        fsInputBufferSize = Integer.parseInt(line.getOptionValue('i'));<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>      if (line.hasOption('o')) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>        fsOutputBufferSize = Integer.parseInt(line.getOptionValue('o'));<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      }<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>      if (line.hasOption('n')) {<a name="line.447"></a>
+<span class="sourceLineNo">448</span>        seekCount = Integer.parseInt(line.getOptionValue('n'));<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>      if (line.hasOption('t')) {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>        trialCount = Integer.parseInt(line.getOptionValue('t'));<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      }<a name="line.453"></a>
+<span class="sourceLineNo">454</span><a name="line.454"></a>
+<span class="sourceLineNo">455</span>      if (line.hasOption('k')) {<a name="line.455"></a>
+<span class="sourceLineNo">456</span>        IntegerRange ir = IntegerRange.parse(line.getOptionValue('k'));<a name="line.456"></a>
+<span class="sourceLineNo">457</span>        minKeyLen = ir.from();<a name="line.457"></a>
+<span class="sourceLineNo">458</span>        maxKeyLen = ir.to();<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      }<a name="line.459"></a>
+<span class="sourceLineNo">460</span><a name="li

<TRUNCATED>

[14/29] hbase-site git commit: Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
index 530289c..3fc5c45 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
@@ -1718,1082 +1718,1081 @@
 <span class="sourceLineNo">1710</span><a name="line.1710"></a>
 <span class="sourceLineNo">1711</span>  @Override<a name="line.1711"></a>
 <span class="sourceLineNo">1712</span>  public boolean hasReferences() {<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span>    List&lt;HStoreFile&gt; reloadedStoreFiles = null;<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span>    // Grab the read lock here, because we need to ensure that: only when the atomic<a name="line.1714"></a>
-<span class="sourceLineNo">1715</span>    // replaceStoreFiles(..) finished, we can get all the complete store file list.<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span>    this.lock.readLock().lock();<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span>    try {<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span>      // Merge the current store files with compacted files here due to HBASE-20940.<a name="line.1718"></a>
-<span class="sourceLineNo">1719</span>      Collection&lt;HStoreFile&gt; allStoreFiles = new ArrayList&lt;&gt;(getStorefiles());<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span>      allStoreFiles.addAll(getCompactedFiles());<a name="line.1720"></a>
-<span class="sourceLineNo">1721</span>      return StoreUtils.hasReferences(allStoreFiles);<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span>    } finally {<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span>      this.lock.readLock().unlock();<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span>    }<a name="line.1724"></a>
-<span class="sourceLineNo">1725</span>  }<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span><a name="line.1726"></a>
-<span class="sourceLineNo">1727</span>  /**<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span>   * getter for CompactionProgress object<a name="line.1728"></a>
-<span class="sourceLineNo">1729</span>   * @return CompactionProgress object; can be null<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span>   */<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span>  public CompactionProgress getCompactionProgress() {<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span>    return this.storeEngine.getCompactor().getProgress();<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span>  }<a name="line.1733"></a>
-<span class="sourceLineNo">1734</span><a name="line.1734"></a>
-<span class="sourceLineNo">1735</span>  @Override<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span>  public boolean shouldPerformMajorCompaction() throws IOException {<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span>    for (HStoreFile sf : this.storeEngine.getStoreFileManager().getStorefiles()) {<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span>      // TODO: what are these reader checks all over the place?<a name="line.1738"></a>
-<span class="sourceLineNo">1739</span>      if (sf.getReader() == null) {<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span>        LOG.debug("StoreFile {} has null Reader", sf);<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span>        return false;<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span>      }<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span>    }<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span>    return storeEngine.getCompactionPolicy().shouldPerformMajorCompaction(<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span>        this.storeEngine.getStoreFileManager().getStorefiles());<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span>  }<a name="line.1746"></a>
-<span class="sourceLineNo">1747</span><a name="line.1747"></a>
-<span class="sourceLineNo">1748</span>  public Optional&lt;CompactionContext&gt; requestCompaction() throws IOException {<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span>    return requestCompaction(NO_PRIORITY, CompactionLifeCycleTracker.DUMMY, null);<a name="line.1749"></a>
-<span class="sourceLineNo">1750</span>  }<a name="line.1750"></a>
-<span class="sourceLineNo">1751</span><a name="line.1751"></a>
-<span class="sourceLineNo">1752</span>  public Optional&lt;CompactionContext&gt; requestCompaction(int priority,<a name="line.1752"></a>
-<span class="sourceLineNo">1753</span>      CompactionLifeCycleTracker tracker, User user) throws IOException {<a name="line.1753"></a>
-<span class="sourceLineNo">1754</span>    // don't even select for compaction if writes are disabled<a name="line.1754"></a>
-<span class="sourceLineNo">1755</span>    if (!this.areWritesEnabled()) {<a name="line.1755"></a>
-<span class="sourceLineNo">1756</span>      return Optional.empty();<a name="line.1756"></a>
-<span class="sourceLineNo">1757</span>    }<a name="line.1757"></a>
-<span class="sourceLineNo">1758</span>    // Before we do compaction, try to get rid of unneeded files to simplify things.<a name="line.1758"></a>
-<span class="sourceLineNo">1759</span>    removeUnneededFiles();<a name="line.1759"></a>
-<span class="sourceLineNo">1760</span><a name="line.1760"></a>
-<span class="sourceLineNo">1761</span>    final CompactionContext compaction = storeEngine.createCompaction();<a name="line.1761"></a>
-<span class="sourceLineNo">1762</span>    CompactionRequestImpl request = null;<a name="line.1762"></a>
-<span class="sourceLineNo">1763</span>    this.lock.readLock().lock();<a name="line.1763"></a>
-<span class="sourceLineNo">1764</span>    try {<a name="line.1764"></a>
-<span class="sourceLineNo">1765</span>      synchronized (filesCompacting) {<a name="line.1765"></a>
-<span class="sourceLineNo">1766</span>        // First, see if coprocessor would want to override selection.<a name="line.1766"></a>
-<span class="sourceLineNo">1767</span>        if (this.getCoprocessorHost() != null) {<a name="line.1767"></a>
-<span class="sourceLineNo">1768</span>          final List&lt;HStoreFile&gt; candidatesForCoproc = compaction.preSelect(this.filesCompacting);<a name="line.1768"></a>
-<span class="sourceLineNo">1769</span>          boolean override = getCoprocessorHost().preCompactSelection(this,<a name="line.1769"></a>
-<span class="sourceLineNo">1770</span>              candidatesForCoproc, tracker, user);<a name="line.1770"></a>
-<span class="sourceLineNo">1771</span>          if (override) {<a name="line.1771"></a>
-<span class="sourceLineNo">1772</span>            // Coprocessor is overriding normal file selection.<a name="line.1772"></a>
-<span class="sourceLineNo">1773</span>            compaction.forceSelect(new CompactionRequestImpl(candidatesForCoproc));<a name="line.1773"></a>
-<span class="sourceLineNo">1774</span>          }<a name="line.1774"></a>
-<span class="sourceLineNo">1775</span>        }<a name="line.1775"></a>
-<span class="sourceLineNo">1776</span><a name="line.1776"></a>
-<span class="sourceLineNo">1777</span>        // Normal case - coprocessor is not overriding file selection.<a name="line.1777"></a>
-<span class="sourceLineNo">1778</span>        if (!compaction.hasSelection()) {<a name="line.1778"></a>
-<span class="sourceLineNo">1779</span>          boolean isUserCompaction = priority == Store.PRIORITY_USER;<a name="line.1779"></a>
-<span class="sourceLineNo">1780</span>          boolean mayUseOffPeak = offPeakHours.isOffPeakHour() &amp;&amp;<a name="line.1780"></a>
-<span class="sourceLineNo">1781</span>              offPeakCompactionTracker.compareAndSet(false, true);<a name="line.1781"></a>
-<span class="sourceLineNo">1782</span>          try {<a name="line.1782"></a>
-<span class="sourceLineNo">1783</span>            compaction.select(this.filesCompacting, isUserCompaction,<a name="line.1783"></a>
-<span class="sourceLineNo">1784</span>              mayUseOffPeak, forceMajor &amp;&amp; filesCompacting.isEmpty());<a name="line.1784"></a>
-<span class="sourceLineNo">1785</span>          } catch (IOException e) {<a name="line.1785"></a>
-<span class="sourceLineNo">1786</span>            if (mayUseOffPeak) {<a name="line.1786"></a>
-<span class="sourceLineNo">1787</span>              offPeakCompactionTracker.set(false);<a name="line.1787"></a>
-<span class="sourceLineNo">1788</span>            }<a name="line.1788"></a>
-<span class="sourceLineNo">1789</span>            throw e;<a name="line.1789"></a>
-<span class="sourceLineNo">1790</span>          }<a name="line.1790"></a>
-<span class="sourceLineNo">1791</span>          assert compaction.hasSelection();<a name="line.1791"></a>
-<span class="sourceLineNo">1792</span>          if (mayUseOffPeak &amp;&amp; !compaction.getRequest().isOffPeak()) {<a name="line.1792"></a>
-<span class="sourceLineNo">1793</span>            // Compaction policy doesn't want to take advantage of off-peak.<a name="line.1793"></a>
-<span class="sourceLineNo">1794</span>            offPeakCompactionTracker.set(false);<a name="line.1794"></a>
-<span class="sourceLineNo">1795</span>          }<a name="line.1795"></a>
-<span class="sourceLineNo">1796</span>        }<a name="line.1796"></a>
-<span class="sourceLineNo">1797</span>        if (this.getCoprocessorHost() != null) {<a name="line.1797"></a>
-<span class="sourceLineNo">1798</span>          this.getCoprocessorHost().postCompactSelection(<a name="line.1798"></a>
-<span class="sourceLineNo">1799</span>              this, ImmutableList.copyOf(compaction.getRequest().getFiles()), tracker,<a name="line.1799"></a>
-<span class="sourceLineNo">1800</span>              compaction.getRequest(), user);<a name="line.1800"></a>
-<span class="sourceLineNo">1801</span>        }<a name="line.1801"></a>
-<span class="sourceLineNo">1802</span>        // Finally, we have the resulting files list. Check if we have any files at all.<a name="line.1802"></a>
-<span class="sourceLineNo">1803</span>        request = compaction.getRequest();<a name="line.1803"></a>
-<span class="sourceLineNo">1804</span>        Collection&lt;HStoreFile&gt; selectedFiles = request.getFiles();<a name="line.1804"></a>
-<span class="sourceLineNo">1805</span>        if (selectedFiles.isEmpty()) {<a name="line.1805"></a>
-<span class="sourceLineNo">1806</span>          return Optional.empty();<a name="line.1806"></a>
-<span class="sourceLineNo">1807</span>        }<a name="line.1807"></a>
-<span class="sourceLineNo">1808</span><a name="line.1808"></a>
-<span class="sourceLineNo">1809</span>        addToCompactingFiles(selectedFiles);<a name="line.1809"></a>
-<span class="sourceLineNo">1810</span><a name="line.1810"></a>
-<span class="sourceLineNo">1811</span>        // If we're enqueuing a major, clear the force flag.<a name="line.1811"></a>
-<span class="sourceLineNo">1812</span>        this.forceMajor = this.forceMajor &amp;&amp; !request.isMajor();<a name="line.1812"></a>
-<span class="sourceLineNo">1813</span><a name="line.1813"></a>
-<span class="sourceLineNo">1814</span>        // Set common request properties.<a name="line.1814"></a>
-<span class="sourceLineNo">1815</span>        // Set priority, either override value supplied by caller or from store.<a name="line.1815"></a>
-<span class="sourceLineNo">1816</span>        request.setPriority((priority != Store.NO_PRIORITY) ? priority : getCompactPriority());<a name="line.1816"></a>
-<span class="sourceLineNo">1817</span>        request.setDescription(getRegionInfo().getRegionNameAsString(), getColumnFamilyName());<a name="line.1817"></a>
-<span class="sourceLineNo">1818</span>        request.setTracker(tracker);<a name="line.1818"></a>
-<span class="sourceLineNo">1819</span>      }<a name="line.1819"></a>
-<span class="sourceLineNo">1820</span>    } finally {<a name="line.1820"></a>
-<span class="sourceLineNo">1821</span>      this.lock.readLock().unlock();<a name="line.1821"></a>
-<span class="sourceLineNo">1822</span>    }<a name="line.1822"></a>
-<span class="sourceLineNo">1823</span><a name="line.1823"></a>
-<span class="sourceLineNo">1824</span>    if (LOG.isDebugEnabled()) {<a name="line.1824"></a>
-<span class="sourceLineNo">1825</span>      LOG.debug(getRegionInfo().getEncodedName() + " - " + getColumnFamilyName()<a name="line.1825"></a>
-<span class="sourceLineNo">1826</span>          + ": Initiating " + (request.isMajor() ? "major" : "minor") + " compaction"<a name="line.1826"></a>
-<span class="sourceLineNo">1827</span>          + (request.isAllFiles() ? " (all files)" : ""));<a name="line.1827"></a>
-<span class="sourceLineNo">1828</span>    }<a name="line.1828"></a>
-<span class="sourceLineNo">1829</span>    this.region.reportCompactionRequestStart(request.isMajor());<a name="line.1829"></a>
-<span class="sourceLineNo">1830</span>    return Optional.of(compaction);<a name="line.1830"></a>
-<span class="sourceLineNo">1831</span>  }<a name="line.1831"></a>
-<span class="sourceLineNo">1832</span><a name="line.1832"></a>
-<span class="sourceLineNo">1833</span>  /** Adds the files to compacting files. filesCompacting must be locked. */<a name="line.1833"></a>
-<span class="sourceLineNo">1834</span>  private void addToCompactingFiles(Collection&lt;HStoreFile&gt; filesToAdd) {<a name="line.1834"></a>
-<span class="sourceLineNo">1835</span>    if (CollectionUtils.isEmpty(filesToAdd)) {<a name="line.1835"></a>
-<span class="sourceLineNo">1836</span>      return;<a name="line.1836"></a>
-<span class="sourceLineNo">1837</span>    }<a name="line.1837"></a>
-<span class="sourceLineNo">1838</span>    // Check that we do not try to compact the same StoreFile twice.<a name="line.1838"></a>
-<span class="sourceLineNo">1839</span>    if (!Collections.disjoint(filesCompacting, filesToAdd)) {<a name="line.1839"></a>
-<span class="sourceLineNo">1840</span>      Preconditions.checkArgument(false, "%s overlaps with %s", filesToAdd, filesCompacting);<a name="line.1840"></a>
-<span class="sourceLineNo">1841</span>    }<a name="line.1841"></a>
-<span class="sourceLineNo">1842</span>    filesCompacting.addAll(filesToAdd);<a name="line.1842"></a>
-<span class="sourceLineNo">1843</span>    Collections.sort(filesCompacting, storeEngine.getStoreFileManager().getStoreFileComparator());<a name="line.1843"></a>
-<span class="sourceLineNo">1844</span>  }<a name="line.1844"></a>
-<span class="sourceLineNo">1845</span><a name="line.1845"></a>
-<span class="sourceLineNo">1846</span>  private void removeUnneededFiles() throws IOException {<a name="line.1846"></a>
-<span class="sourceLineNo">1847</span>    if (!conf.getBoolean("hbase.store.delete.expired.storefile", true)) return;<a name="line.1847"></a>
-<span class="sourceLineNo">1848</span>    if (getColumnFamilyDescriptor().getMinVersions() &gt; 0) {<a name="line.1848"></a>
-<span class="sourceLineNo">1849</span>      LOG.debug("Skipping expired store file removal due to min version being {}",<a name="line.1849"></a>
-<span class="sourceLineNo">1850</span>          getColumnFamilyDescriptor().getMinVersions());<a name="line.1850"></a>
-<span class="sourceLineNo">1851</span>      return;<a name="line.1851"></a>
-<span class="sourceLineNo">1852</span>    }<a name="line.1852"></a>
-<span class="sourceLineNo">1853</span>    this.lock.readLock().lock();<a name="line.1853"></a>
-<span class="sourceLineNo">1854</span>    Collection&lt;HStoreFile&gt; delSfs = null;<a name="line.1854"></a>
-<span class="sourceLineNo">1855</span>    try {<a name="line.1855"></a>
-<span class="sourceLineNo">1856</span>      synchronized (filesCompacting) {<a name="line.1856"></a>
-<span class="sourceLineNo">1857</span>        long cfTtl = getStoreFileTtl();<a name="line.1857"></a>
-<span class="sourceLineNo">1858</span>        if (cfTtl != Long.MAX_VALUE) {<a name="line.1858"></a>
-<span class="sourceLineNo">1859</span>          delSfs = storeEngine.getStoreFileManager().getUnneededFiles(<a name="line.1859"></a>
-<span class="sourceLineNo">1860</span>              EnvironmentEdgeManager.currentTime() - cfTtl, filesCompacting);<a name="line.1860"></a>
-<span class="sourceLineNo">1861</span>          addToCompactingFiles(delSfs);<a name="line.1861"></a>
-<span class="sourceLineNo">1862</span>        }<a name="line.1862"></a>
-<span class="sourceLineNo">1863</span>      }<a name="line.1863"></a>
-<span class="sourceLineNo">1864</span>    } finally {<a name="line.1864"></a>
-<span class="sourceLineNo">1865</span>      this.lock.readLock().unlock();<a name="line.1865"></a>
-<span class="sourceLineNo">1866</span>    }<a name="line.1866"></a>
-<span class="sourceLineNo">1867</span><a name="line.1867"></a>
-<span class="sourceLineNo">1868</span>    if (CollectionUtils.isEmpty(delSfs)) {<a name="line.1868"></a>
-<span class="sourceLineNo">1869</span>      return;<a name="line.1869"></a>
-<span class="sourceLineNo">1870</span>    }<a name="line.1870"></a>
-<span class="sourceLineNo">1871</span><a name="line.1871"></a>
-<span class="sourceLineNo">1872</span>    Collection&lt;HStoreFile&gt; newFiles = Collections.emptyList(); // No new files.<a name="line.1872"></a>
-<span class="sourceLineNo">1873</span>    writeCompactionWalRecord(delSfs, newFiles);<a name="line.1873"></a>
-<span class="sourceLineNo">1874</span>    replaceStoreFiles(delSfs, newFiles);<a name="line.1874"></a>
-<span class="sourceLineNo">1875</span>    completeCompaction(delSfs);<a name="line.1875"></a>
-<span class="sourceLineNo">1876</span>    LOG.info("Completed removal of " + delSfs.size() + " unnecessary (expired) file(s) in "<a name="line.1876"></a>
-<span class="sourceLineNo">1877</span>        + this + " of " + this.getRegionInfo().getRegionNameAsString()<a name="line.1877"></a>
-<span class="sourceLineNo">1878</span>        + "; total size for store is "<a name="line.1878"></a>
-<span class="sourceLineNo">1879</span>        + TraditionalBinaryPrefix.long2String(storeSize.get(), "", 1));<a name="line.1879"></a>
-<span class="sourceLineNo">1880</span>  }<a name="line.1880"></a>
-<span class="sourceLineNo">1881</span><a name="line.1881"></a>
-<span class="sourceLineNo">1882</span>  public void cancelRequestedCompaction(CompactionContext compaction) {<a name="line.1882"></a>
-<span class="sourceLineNo">1883</span>    finishCompactionRequest(compaction.getRequest());<a name="line.1883"></a>
-<span class="sourceLineNo">1884</span>  }<a name="line.1884"></a>
-<span class="sourceLineNo">1885</span><a name="line.1885"></a>
-<span class="sourceLineNo">1886</span>  private void finishCompactionRequest(CompactionRequestImpl cr) {<a name="line.1886"></a>
-<span class="sourceLineNo">1887</span>    this.region.reportCompactionRequestEnd(cr.isMajor(), cr.getFiles().size(), cr.getSize());<a name="line.1887"></a>
-<span class="sourceLineNo">1888</span>    if (cr.isOffPeak()) {<a name="line.1888"></a>
-<span class="sourceLineNo">1889</span>      offPeakCompactionTracker.set(false);<a name="line.1889"></a>
-<span class="sourceLineNo">1890</span>      cr.setOffPeak(false);<a name="line.1890"></a>
-<span class="sourceLineNo">1891</span>    }<a name="line.1891"></a>
-<span class="sourceLineNo">1892</span>    synchronized (filesCompacting) {<a name="line.1892"></a>
-<span class="sourceLineNo">1893</span>      filesCompacting.removeAll(cr.getFiles());<a name="line.1893"></a>
-<span class="sourceLineNo">1894</span>    }<a name="line.1894"></a>
-<span class="sourceLineNo">1895</span>  }<a name="line.1895"></a>
-<span class="sourceLineNo">1896</span><a name="line.1896"></a>
-<span class="sourceLineNo">1897</span>  /**<a name="line.1897"></a>
-<span class="sourceLineNo">1898</span>   * Validates a store file by opening and closing it. In HFileV2 this should not be an expensive<a name="line.1898"></a>
-<span class="sourceLineNo">1899</span>   * operation.<a name="line.1899"></a>
-<span class="sourceLineNo">1900</span>   * @param path the path to the store file<a name="line.1900"></a>
-<span class="sourceLineNo">1901</span>   */<a name="line.1901"></a>
-<span class="sourceLineNo">1902</span>  private void validateStoreFile(Path path) throws IOException {<a name="line.1902"></a>
-<span class="sourceLineNo">1903</span>    HStoreFile storeFile = null;<a name="line.1903"></a>
-<span class="sourceLineNo">1904</span>    try {<a name="line.1904"></a>
-<span class="sourceLineNo">1905</span>      storeFile = createStoreFileAndReader(path);<a name="line.1905"></a>
-<span class="sourceLineNo">1906</span>    } catch (IOException e) {<a name="line.1906"></a>
-<span class="sourceLineNo">1907</span>      LOG.error("Failed to open store file : {}, keeping it in tmp location", path, e);<a name="line.1907"></a>
-<span class="sourceLineNo">1908</span>      throw e;<a name="line.1908"></a>
-<span class="sourceLineNo">1909</span>    } finally {<a name="line.1909"></a>
-<span class="sourceLineNo">1910</span>      if (storeFile != null) {<a name="line.1910"></a>
-<span class="sourceLineNo">1911</span>        storeFile.closeStoreFile(false);<a name="line.1911"></a>
-<span class="sourceLineNo">1912</span>      }<a name="line.1912"></a>
-<span class="sourceLineNo">1913</span>    }<a name="line.1913"></a>
-<span class="sourceLineNo">1914</span>  }<a name="line.1914"></a>
-<span class="sourceLineNo">1915</span><a name="line.1915"></a>
-<span class="sourceLineNo">1916</span>  /**<a name="line.1916"></a>
-<span class="sourceLineNo">1917</span>   * &lt;p&gt;It works by processing a compaction that's been written to disk.<a name="line.1917"></a>
-<span class="sourceLineNo">1918</span>   *<a name="line.1918"></a>
-<span class="sourceLineNo">1919</span>   * &lt;p&gt;It is usually invoked at the end of a compaction, but might also be<a name="line.1919"></a>
-<span class="sourceLineNo">1920</span>   * invoked at HStore startup, if the prior execution died midway through.<a name="line.1920"></a>
-<span class="sourceLineNo">1921</span>   *<a name="line.1921"></a>
-<span class="sourceLineNo">1922</span>   * &lt;p&gt;Moving the compacted TreeMap into place means:<a name="line.1922"></a>
-<span class="sourceLineNo">1923</span>   * &lt;pre&gt;<a name="line.1923"></a>
-<span class="sourceLineNo">1924</span>   * 1) Unload all replaced StoreFile, close and collect list to delete.<a name="line.1924"></a>
-<span class="sourceLineNo">1925</span>   * 2) Compute new store size<a name="line.1925"></a>
-<span class="sourceLineNo">1926</span>   * &lt;/pre&gt;<a name="line.1926"></a>
-<span class="sourceLineNo">1927</span>   *<a name="line.1927"></a>
-<span class="sourceLineNo">1928</span>   * @param compactedFiles list of files that were compacted<a name="line.1928"></a>
-<span class="sourceLineNo">1929</span>   */<a name="line.1929"></a>
-<span class="sourceLineNo">1930</span>  @VisibleForTesting<a name="line.1930"></a>
-<span class="sourceLineNo">1931</span>  protected void completeCompaction(Collection&lt;HStoreFile&gt; compactedFiles)<a name="line.1931"></a>
-<span class="sourceLineNo">1932</span>    throws IOException {<a name="line.1932"></a>
-<span class="sourceLineNo">1933</span>    this.storeSize.set(0L);<a name="line.1933"></a>
-<span class="sourceLineNo">1934</span>    this.totalUncompressedBytes.set(0L);<a name="line.1934"></a>
-<span class="sourceLineNo">1935</span>    for (HStoreFile hsf : this.storeEngine.getStoreFileManager().getStorefiles()) {<a name="line.1935"></a>
-<span class="sourceLineNo">1936</span>      StoreFileReader r = hsf.getReader();<a name="line.1936"></a>
-<span class="sourceLineNo">1937</span>      if (r == null) {<a name="line.1937"></a>
-<span class="sourceLineNo">1938</span>        LOG.warn("StoreFile {} has a null Reader", hsf);<a name="line.1938"></a>
-<span class="sourceLineNo">1939</span>        continue;<a name="line.1939"></a>
-<span class="sourceLineNo">1940</span>      }<a name="line.1940"></a>
-<span class="sourceLineNo">1941</span>      this.storeSize.addAndGet(r.length());<a name="line.1941"></a>
-<span class="sourceLineNo">1942</span>      this.totalUncompressedBytes.addAndGet(r.getTotalUncompressedBytes());<a name="line.1942"></a>
-<span class="sourceLineNo">1943</span>    }<a name="line.1943"></a>
-<span class="sourceLineNo">1944</span>  }<a name="line.1944"></a>
-<span class="sourceLineNo">1945</span><a name="line.1945"></a>
-<span class="sourceLineNo">1946</span>  /*<a name="line.1946"></a>
-<span class="sourceLineNo">1947</span>   * @param wantedVersions How many versions were asked for.<a name="line.1947"></a>
-<span class="sourceLineNo">1948</span>   * @return wantedVersions or this families' {@link HConstants#VERSIONS}.<a name="line.1948"></a>
-<span class="sourceLineNo">1949</span>   */<a name="line.1949"></a>
-<span class="sourceLineNo">1950</span>  int versionsToReturn(final int wantedVersions) {<a name="line.1950"></a>
-<span class="sourceLineNo">1951</span>    if (wantedVersions &lt;= 0) {<a name="line.1951"></a>
-<span class="sourceLineNo">1952</span>      throw new IllegalArgumentException("Number of versions must be &gt; 0");<a name="line.1952"></a>
-<span class="sourceLineNo">1953</span>    }<a name="line.1953"></a>
-<span class="sourceLineNo">1954</span>    // Make sure we do not return more than maximum versions for this store.<a name="line.1954"></a>
-<span class="sourceLineNo">1955</span>    int maxVersions = this.family.getMaxVersions();<a name="line.1955"></a>
-<span class="sourceLineNo">1956</span>    return wantedVersions &gt; maxVersions ? maxVersions: wantedVersions;<a name="line.1956"></a>
-<span class="sourceLineNo">1957</span>  }<a name="line.1957"></a>
-<span class="sourceLineNo">1958</span><a name="line.1958"></a>
-<span class="sourceLineNo">1959</span>  @Override<a name="line.1959"></a>
-<span class="sourceLineNo">1960</span>  public boolean canSplit() {<a name="line.1960"></a>
-<span class="sourceLineNo">1961</span>    this.lock.readLock().lock();<a name="line.1961"></a>
-<span class="sourceLineNo">1962</span>    try {<a name="line.1962"></a>
-<span class="sourceLineNo">1963</span>      // Not split-able if we find a reference store file present in the store.<a name="line.1963"></a>
-<span class="sourceLineNo">1964</span>      boolean result = !hasReferences();<a name="line.1964"></a>
-<span class="sourceLineNo">1965</span>      if (!result) {<a name="line.1965"></a>
-<span class="sourceLineNo">1966</span>        LOG.trace("Not splittable; has references: {}", this);<a name="line.1966"></a>
-<span class="sourceLineNo">1967</span>      }<a name="line.1967"></a>
-<span class="sourceLineNo">1968</span>      return result;<a name="line.1968"></a>
-<span class="sourceLineNo">1969</span>    } finally {<a name="line.1969"></a>
-<span class="sourceLineNo">1970</span>      this.lock.readLock().unlock();<a name="line.1970"></a>
-<span class="sourceLineNo">1971</span>    }<a name="line.1971"></a>
-<span class="sourceLineNo">1972</span>  }<a name="line.1972"></a>
-<span class="sourceLineNo">1973</span><a name="line.1973"></a>
-<span class="sourceLineNo">1974</span>  /**<a name="line.1974"></a>
-<span class="sourceLineNo">1975</span>   * Determines if Store should be split.<a name="line.1975"></a>
-<span class="sourceLineNo">1976</span>   */<a name="line.1976"></a>
-<span class="sourceLineNo">1977</span>  public Optional&lt;byte[]&gt; getSplitPoint() {<a name="line.1977"></a>
-<span class="sourceLineNo">1978</span>    this.lock.readLock().lock();<a name="line.1978"></a>
-<span class="sourceLineNo">1979</span>    try {<a name="line.1979"></a>
-<span class="sourceLineNo">1980</span>      // Should already be enforced by the split policy!<a name="line.1980"></a>
-<span class="sourceLineNo">1981</span>      assert !this.getRegionInfo().isMetaRegion();<a name="line.1981"></a>
-<span class="sourceLineNo">1982</span>      // Not split-able if we find a reference store file present in the store.<a name="line.1982"></a>
-<span class="sourceLineNo">1983</span>      if (hasReferences()) {<a name="line.1983"></a>
-<span class="sourceLineNo">1984</span>        LOG.trace("Not splittable; has references: {}", this);<a name="line.1984"></a>
-<span class="sourceLineNo">1985</span>        return Optional.empty();<a name="line.1985"></a>
-<span class="sourceLineNo">1986</span>      }<a name="line.1986"></a>
-<span class="sourceLineNo">1987</span>      return this.storeEngine.getStoreFileManager().getSplitPoint();<a name="line.1987"></a>
-<span class="sourceLineNo">1988</span>    } catch(IOException e) {<a name="line.1988"></a>
-<span class="sourceLineNo">1989</span>      LOG.warn("Failed getting store size for {}", this, e);<a name="line.1989"></a>
-<span class="sourceLineNo">1990</span>    } finally {<a name="line.1990"></a>
-<span class="sourceLineNo">1991</span>      this.lock.readLock().unlock();<a name="line.1991"></a>
-<span class="sourceLineNo">1992</span>    }<a name="line.1992"></a>
-<span class="sourceLineNo">1993</span>    return Optional.empty();<a name="line.1993"></a>
-<span class="sourceLineNo">1994</span>  }<a name="line.1994"></a>
-<span class="sourceLineNo">1995</span><a name="line.1995"></a>
-<span class="sourceLineNo">1996</span>  @Override<a name="line.1996"></a>
-<span class="sourceLineNo">1997</span>  public long getLastCompactSize() {<a name="line.1997"></a>
-<span class="sourceLineNo">1998</span>    return this.lastCompactSize;<a name="line.1998"></a>
-<span class="sourceLineNo">1999</span>  }<a name="line.1999"></a>
-<span class="sourceLineNo">2000</span><a name="line.2000"></a>
-<span class="sourceLineNo">2001</span>  @Override<a name="line.2001"></a>
-<span class="sourceLineNo">2002</span>  public long getSize() {<a name="line.2002"></a>
-<span class="sourceLineNo">2003</span>    return storeSize.get();<a name="line.2003"></a>
-<span class="sourceLineNo">2004</span>  }<a name="line.2004"></a>
-<span class="sourceLineNo">2005</span><a name="line.2005"></a>
-<span class="sourceLineNo">2006</span>  public void triggerMajorCompaction() {<a name="line.2006"></a>
-<span class="sourceLineNo">2007</span>    this.forceMajor = true;<a name="line.2007"></a>
-<span class="sourceLineNo">2008</span>  }<a name="line.2008"></a>
-<span class="sourceLineNo">2009</span><a name="line.2009"></a>
-<span class="sourceLineNo">2010</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2010"></a>
-<span class="sourceLineNo">2011</span>  // File administration<a name="line.2011"></a>
-<span class="sourceLineNo">2012</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2012"></a>
-<span class="sourceLineNo">2013</span><a name="line.2013"></a>
-<span class="sourceLineNo">2014</span>  /**<a name="line.2014"></a>
-<span class="sourceLineNo">2015</span>   * Return a scanner for both the memstore and the HStore files. Assumes we are not in a<a name="line.2015"></a>
-<span class="sourceLineNo">2016</span>   * compaction.<a name="line.2016"></a>
-<span class="sourceLineNo">2017</span>   * @param scan Scan to apply when scanning the stores<a name="line.2017"></a>
-<span class="sourceLineNo">2018</span>   * @param targetCols columns to scan<a name="line.2018"></a>
-<span class="sourceLineNo">2019</span>   * @return a scanner over the current key values<a name="line.2019"></a>
-<span class="sourceLineNo">2020</span>   * @throws IOException on failure<a name="line.2020"></a>
-<span class="sourceLineNo">2021</span>   */<a name="line.2021"></a>
-<span class="sourceLineNo">2022</span>  public KeyValueScanner getScanner(Scan scan, final NavigableSet&lt;byte[]&gt; targetCols, long readPt)<a name="line.2022"></a>
-<span class="sourceLineNo">2023</span>      throws IOException {<a name="line.2023"></a>
-<span class="sourceLineNo">2024</span>    lock.readLock().lock();<a name="line.2024"></a>
-<span class="sourceLineNo">2025</span>    try {<a name="line.2025"></a>
-<span class="sourceLineNo">2026</span>      ScanInfo scanInfo;<a name="line.2026"></a>
-<span class="sourceLineNo">2027</span>      if (this.getCoprocessorHost() != null) {<a name="line.2027"></a>
-<span class="sourceLineNo">2028</span>        scanInfo = this.getCoprocessorHost().preStoreScannerOpen(this);<a name="line.2028"></a>
-<span class="sourceLineNo">2029</span>      } else {<a name="line.2029"></a>
-<span class="sourceLineNo">2030</span>        scanInfo = getScanInfo();<a name="line.2030"></a>
-<span class="sourceLineNo">2031</span>      }<a name="line.2031"></a>
-<span class="sourceLineNo">2032</span>      return createScanner(scan, scanInfo, targetCols, readPt);<a name="line.2032"></a>
-<span class="sourceLineNo">2033</span>    } finally {<a name="line.2033"></a>
-<span class="sourceLineNo">2034</span>      lock.readLock().unlock();<a name="line.2034"></a>
-<span class="sourceLineNo">2035</span>    }<a name="line.2035"></a>
-<span class="sourceLineNo">2036</span>  }<a name="line.2036"></a>
-<span class="sourceLineNo">2037</span><a name="line.2037"></a>
-<span class="sourceLineNo">2038</span>  // HMobStore will override this method to return its own implementation.<a name="line.2038"></a>
-<span class="sourceLineNo">2039</span>  protected KeyValueScanner createScanner(Scan scan, ScanInfo scanInfo,<a name="line.2039"></a>
-<span class="sourceLineNo">2040</span>      NavigableSet&lt;byte[]&gt; targetCols, long readPt) throws IOException {<a name="line.2040"></a>
-<span class="sourceLineNo">2041</span>    return scan.isReversed() ? new ReversedStoreScanner(this, scanInfo, scan, targetCols, readPt)<a name="line.2041"></a>
-<span class="sourceLineNo">2042</span>        : new StoreScanner(this, scanInfo, scan, targetCols, readPt);<a name="line.2042"></a>
-<span class="sourceLineNo">2043</span>  }<a name="line.2043"></a>
-<span class="sourceLineNo">2044</span><a name="line.2044"></a>
-<span class="sourceLineNo">2045</span>  /**<a name="line.2045"></a>
-<span class="sourceLineNo">2046</span>   * Recreates the scanners on the current list of active store file scanners<a name="line.2046"></a>
-<span class="sourceLineNo">2047</span>   * @param currentFileScanners the current set of active store file scanners<a name="line.2047"></a>
-<span class="sourceLineNo">2048</span>   * @param cacheBlocks cache the blocks or not<a name="line.2048"></a>
-<span class="sourceLineNo">2049</span>   * @param usePread use pread or not<a name="line.2049"></a>
-<span class="sourceLineNo">2050</span>   * @param isCompaction is the scanner for compaction<a name="line.2050"></a>
-<span class="sourceLineNo">2051</span>   * @param matcher the scan query matcher<a name="line.2051"></a>
-<span class="sourceLineNo">2052</span>   * @param startRow the scan's start row<a name="line.2052"></a>
-<span class="sourceLineNo">2053</span>   * @param includeStartRow should the scan include the start row<a name="line.2053"></a>
-<span class="sourceLineNo">2054</span>   * @param stopRow the scan's stop row<a name="line.2054"></a>
-<span class="sourceLineNo">2055</span>   * @param includeStopRow should the scan include the stop row<a name="line.2055"></a>
-<span class="sourceLineNo">2056</span>   * @param readPt the read point of the current scane<a name="line.2056"></a>
-<span class="sourceLineNo">2057</span>   * @param includeMemstoreScanner whether the current scanner should include memstorescanner<a name="line.2057"></a>
-<span class="sourceLineNo">2058</span>   * @return list of scanners recreated on the current Scanners<a name="line.2058"></a>
-<span class="sourceLineNo">2059</span>   * @throws IOException<a name="line.2059"></a>
-<span class="sourceLineNo">2060</span>   */<a name="line.2060"></a>
-<span class="sourceLineNo">2061</span>  public List&lt;KeyValueScanner&gt; recreateScanners(List&lt;KeyValueScanner&gt; currentFileScanners,<a name="line.2061"></a>
-<span class="sourceLineNo">2062</span>      boolean cacheBlocks, boolean usePread, boolean isCompaction, ScanQueryMatcher matcher,<a name="line.2062"></a>
-<span class="sourceLineNo">2063</span>      byte[] startRow, boolean includeStartRow, byte[] stopRow, boolean includeStopRow, long readPt,<a name="line.2063"></a>
-<span class="sourceLineNo">2064</span>      boolean includeMemstoreScanner) throws IOException {<a name="line.2064"></a>
-<span class="sourceLineNo">2065</span>    this.lock.readLock().lock();<a name="line.2065"></a>
-<span class="sourceLineNo">2066</span>    try {<a name="line.2066"></a>
-<span class="sourceLineNo">2067</span>      Map&lt;String, HStoreFile&gt; name2File =<a name="line.2067"></a>
-<span class="sourceLineNo">2068</span>          new HashMap&lt;&gt;(getStorefilesCount() + getCompactedFilesCount());<a name="line.2068"></a>
-<span class="sourceLineNo">2069</span>      for (HStoreFile file : getStorefiles()) {<a name="line.2069"></a>
-<span class="sourceLineNo">2070</span>        name2File.put(file.getFileInfo().getActiveFileName(), file);<a name="line.2070"></a>
-<span class="sourceLineNo">2071</span>      }<a name="line.2071"></a>
-<span class="sourceLineNo">2072</span>      Collection&lt;HStoreFile&gt; compactedFiles = getCompactedFiles();<a name="line.2072"></a>
-<span class="sourceLineNo">2073</span>      for (HStoreFile file : IterableUtils.emptyIfNull(compactedFiles)) {<a name="line.2073"></a>
-<span class="sourceLineNo">2074</span>        name2File.put(file.getFileInfo().getActiveFileName(), file);<a name="line.2074"></a>
-<span class="sourceLineNo">2075</span>      }<a name="line.2075"></a>
-<span class="sourceLineNo">2076</span>      List&lt;HStoreFile&gt; filesToReopen = new ArrayList&lt;&gt;();<a name="line.2076"></a>
-<span class="sourceLineNo">2077</span>      for (KeyValueScanner kvs : currentFileScanners) {<a name="line.2077"></a>
-<span class="sourceLineNo">2078</span>        assert kvs.isFileScanner();<a name="line.2078"></a>
-<span class="sourceLineNo">2079</span>        if (kvs.peek() == null) {<a name="line.2079"></a>
-<span class="sourceLineNo">2080</span>          continue;<a name="line.2080"></a>
-<span class="sourceLineNo">2081</span>        }<a name="line.2081"></a>
-<span class="sourceLineNo">2082</span>        filesToReopen.add(name2File.get(kvs.getFilePath().getName()));<a name="line.2082"></a>
-<span class="sourceLineNo">2083</span>      }<a name="line.2083"></a>
-<span class="sourceLineNo">2084</span>      if (filesToReopen.isEmpty()) {<a name="line.2084"></a>
-<span class="sourceLineNo">2085</span>        return null;<a name="line.2085"></a>
-<span class="sourceLineNo">2086</span>      }<a name="line.2086"></a>
-<span class="sourceLineNo">2087</span>      return getScanners(filesToReopen, cacheBlocks, false, false, matcher, startRow,<a name="line.2087"></a>
-<span class="sourceLineNo">2088</span>        includeStartRow, stopRow, includeStopRow, readPt, false);<a name="line.2088"></a>
-<span class="sourceLineNo">2089</span>    } finally {<a name="line.2089"></a>
-<span class="sourceLineNo">2090</span>      this.lock.readLock().unlock();<a name="line.2090"></a>
-<span class="sourceLineNo">2091</span>    }<a name="line.2091"></a>
-<span class="sourceLineNo">2092</span>  }<a name="line.2092"></a>
-<span class="sourceLineNo">2093</span><a name="line.2093"></a>
-<span class="sourceLineNo">2094</span>  @Override<a name="line.2094"></a>
-<span class="sourceLineNo">2095</span>  public String toString() {<a name="line.2095"></a>
-<span class="sourceLineNo">2096</span>    return this.getColumnFamilyName();<a name="line.2096"></a>
-<span class="sourceLineNo">2097</span>  }<a name="line.2097"></a>
-<span class="sourceLineNo">2098</span><a name="line.2098"></a>
-<span class="sourceLineNo">2099</span>  @Override<a name="line.2099"></a>
-<span class="sourceLineNo">2100</span>  public int getStorefilesCount() {<a name="line.2100"></a>
-<span class="sourceLineNo">2101</span>    return this.storeEngine.getStoreFileManager().getStorefileCount();<a name="line.2101"></a>
-<span class="sourceLineNo">2102</span>  }<a name="line.2102"></a>
-<span class="sourceLineNo">2103</span><a name="line.2103"></a>
-<span class="sourceLineNo">2104</span>  @Override<a name="line.2104"></a>
-<span class="sourceLineNo">2105</span>  public int getCompactedFilesCount() {<a name="line.2105"></a>
-<span class="sourceLineNo">2106</span>    return this.storeEngine.getStoreFileManager().getCompactedFilesCount();<a name="line.2106"></a>
-<span class="sourceLineNo">2107</span>  }<a name="line.2107"></a>
-<span class="sourceLineNo">2108</span><a name="line.2108"></a>
-<span class="sourceLineNo">2109</span>  private LongStream getStoreFileAgeStream() {<a name="line.2109"></a>
-<span class="sourceLineNo">2110</span>    return this.storeEngine.getStoreFileManager().getStorefiles().stream().filter(sf -&gt; {<a name="line.2110"></a>
-<span class="sourceLineNo">2111</span>      if (sf.getReader() == null) {<a name="line.2111"></a>
-<span class="sourceLineNo">2112</span>        LOG.warn("StoreFile {} has a null Reader", sf);<a name="line.2112"></a>
-<span class="sourceLineNo">2113</span>        return false;<a name="line.2113"></a>
-<span class="sourceLineNo">2114</span>      } else {<a name="line.2114"></a>
-<span class="sourceLineNo">2115</span>        return true;<a name="line.2115"></a>
-<span class="sourceLineNo">2116</span>      }<a name="line.2116"></a>
-<span class="sourceLineNo">2117</span>    }).filter(HStoreFile::isHFile).mapToLong(sf -&gt; sf.getFileInfo().getCreatedTimestamp())<a name="line.2117"></a>
-<span class="sourceLineNo">2118</span>        .map(t -&gt; EnvironmentEdgeManager.currentTime() - t);<a name="line.2118"></a>
-<span class="sourceLineNo">2119</span>  }<a name="line.2119"></a>
-<span class="sourceLineNo">2120</span><a name="line.2120"></a>
-<span class="sourceLineNo">2121</span>  @Override<a name="line.2121"></a>
-<span class="sourceLineNo">2122</span>  public OptionalLong getMaxStoreFileAge() {<a name="line.2122"></a>
-<span class="sourceLineNo">2123</span>    return getStoreFileAgeStream().max();<a name="line.2123"></a>
-<span class="sourceLineNo">2124</span>  }<a name="line.2124"></a>
-<span class="sourceLineNo">2125</span><a name="line.2125"></a>
-<span class="sourceLineNo">2126</span>  @Override<a name="line.2126"></a>
-<span class="sourceLineNo">2127</span>  public OptionalLong getMinStoreFileAge() {<a name="line.2127"></a>
-<span class="sourceLineNo">2128</span>    return getStoreFileAgeStream().min();<a name="line.2128"></a>
-<span class="sourceLineNo">2129</span>  }<a name="line.2129"></a>
-<span class="sourceLineNo">2130</span><a name="line.2130"></a>
-<span class="sourceLineNo">2131</span>  @Override<a name="line.2131"></a>
-<span class="sourceLineNo">2132</span>  public OptionalDouble getAvgStoreFileAge() {<a name="line.2132"></a>
-<span class="sourceLineNo">2133</span>    return getStoreFileAgeStream().average();<a name="line.2133"></a>
-<span class="sourceLineNo">2134</span>  }<a name="line.2134"></a>
-<span class="sourceLineNo">2135</span><a name="line.2135"></a>
-<span class="sourceLineNo">2136</span>  @Override<a name="line.2136"></a>
-<span class="sourceLineNo">2137</span>  public long getNumReferenceFiles() {<a name="line.2137"></a>
-<span class="sourceLineNo">2138</span>    return this.storeEngine.getStoreFileManager().getStorefiles().stream()<a name="line.2138"></a>
-<span class="sourceLineNo">2139</span>        .filter(HStoreFile::isReference).count();<a name="line.2139"></a>
-<span class="sourceLineNo">2140</span>  }<a name="line.2140"></a>
-<span class="sourceLineNo">2141</span><a name="line.2141"></a>
-<span class="sourceLineNo">2142</span>  @Override<a name="line.2142"></a>
-<span class="sourceLineNo">2143</span>  public long getNumHFiles() {<a name="line.2143"></a>
-<span class="sourceLineNo">2144</span>    return this.storeEngine.getStoreFileManager().getStorefiles().stream()<a name="line.2144"></a>
-<span class="sourceLineNo">2145</span>        .filter(HStoreFile::isHFile).count();<a name="line.2145"></a>
-<span class="sourceLineNo">2146</span>  }<a name="line.2146"></a>
-<span class="sourceLineNo">2147</span><a name="line.2147"></a>
-<span class="sourceLineNo">2148</span>  @Override<a name="line.2148"></a>
-<span class="sourceLineNo">2149</span>  public long getStoreSizeUncompressed() {<a name="line.2149"></a>
-<span class="sourceLineNo">2150</span>    return this.totalUncompressedBytes.get();<a name="line.2150"></a>
-<span class="sourceLineNo">2151</span>  }<a name="line.2151"></a>
-<span class="sourceLineNo">2152</span><a name="line.2152"></a>
-<span class="sourceLineNo">2153</span>  @Override<a name="line.2153"></a>
-<span class="sourceLineNo">2154</span>  public long getStorefilesSize() {<a name="line.2154"></a>
-<span class="sourceLineNo">2155</span>    // Include all StoreFiles<a name="line.2155"></a>
-<span class="sourceLineNo">2156</span>    return getStorefilesSize(this.storeEngine.getStoreFileManager().getStorefiles(), sf -&gt; true);<a name="line.2156"></a>
-<span class="sourceLineNo">2157</span>  }<a name="line.2157"></a>
-<span class="sourceLineNo">2158</span><a name="line.2158"></a>
-<span class="sourceLineNo">2159</span>  @Override<a name="line.2159"></a>
-<span class="sourceLineNo">2160</span>  public long getHFilesSize() {<a name="line.2160"></a>
-<span class="sourceLineNo">2161</span>    // Include only StoreFiles which are HFiles<a name="line.2161"></a>
-<span class="sourceLineNo">2162</span>    return getStorefilesSize(this.storeEngine.getStoreFileManager().getStorefiles(),<a name="line.2162"></a>
-<span class="sourceLineNo">2163</span>      HStoreFile::isHFile);<a name="line.2163"></a>
-<span class="sourceLineNo">2164</span>  }<a name="line.2164"></a>
-<span class="sourceLineNo">2165</span><a name="line.2165"></a>
-<span class="sourceLineNo">2166</span>  private long getTotalUmcompressedBytes(List&lt;HStoreFile&gt; files) {<a name="line.2166"></a>
-<span class="sourceLineNo">2167</span>    return files.stream().filter(f -&gt; f != null &amp;&amp; f.getReader() != null)<a name="line.2167"></a>
-<span class="sourceLineNo">2168</span>        .mapToLong(f -&gt; f.getReader().getTotalUncompressedBytes()).sum();<a name="line.2168"></a>
-<span class="sourceLineNo">2169</span>  }<a name="line.2169"></a>
-<span class="sourceLineNo">2170</span><a name="line.2170"></a>
-<span class="sourceLineNo">2171</span>  private long getStorefilesSize(Collection&lt;HStoreFile&gt; files, Predicate&lt;HStoreFile&gt; predicate) {<a name="line.2171"></a>
-<span class="sourceLineNo">2172</span>    return files.stream().filter(f -&gt; f != null &amp;&amp; f.getReader() != null).filter(predicate)<a name="line.2172"></a>
-<span class="sourceLineNo">2173</span>        .mapToLong(f -&gt; f.getReader().length()).sum();<a name="line.2173"></a>
-<span class="sourceLineNo">2174</span>  }<a name="line.2174"></a>
-<span class="sourceLineNo">2175</span><a name="line.2175"></a>
-<span class="sourceLineNo">2176</span>  private long getStoreFileFieldSize(ToLongFunction&lt;StoreFileReader&gt; f) {<a name="line.2176"></a>
-<span class="sourceLineNo">2177</span>    return this.storeEngine.getStoreFileManager().getStorefiles().stream().filter(sf -&gt; {<a name="line.2177"></a>
-<span class="sourceLineNo">2178</span>      if (sf.getReader() == null) {<a name="line.2178"></a>
-<span class="sourceLineNo">2179</span>        LOG.warn("StoreFile {} has a null Reader", sf);<a name="line.2179"></a>
-<span class="sourceLineNo">2180</span>        return false;<a name="line.2180"></a>
-<span class="sourceLineNo">2181</span>      } else {<a name="line.2181"></a>
-<span class="sourceLineNo">2182</span>        return true;<a name="line.2182"></a>
-<span class="sourceLineNo">2183</span>      }<a name="line.2183"></a>
-<span class="sourceLineNo">2184</span>    }).map(HStoreFile::getReader).mapToLong(f).sum();<a name="line.2184"></a>
-<span class="sourceLineNo">2185</span>  }<a name="line.2185"></a>
-<span class="sourceLineNo">2186</span><a name="line.2186"></a>
-<span class="sourceLineNo">2187</span>  @Override<a name="line.2187"></a>
-<span class="sourceLineNo">2188</span>  public long getStorefilesRootLevelIndexSize() {<a name="line.2188"></a>
-<span class="sourceLineNo">2189</span>    return getStoreFileFieldSize(StoreFileReader::indexSize);<a name="line.2189"></a>
-<span class="sourceLineNo">2190</span>  }<a name="line.2190"></a>
-<span class="sourceLineNo">2191</span><a name="line.2191"></a>
-<span class="sourceLineNo">2192</span>  @Override<a name="line.2192"></a>
-<span class="sourceLineNo">2193</span>  public long getTotalStaticIndexSize() {<a name="line.2193"></a>
-<span class="sourceLineNo">2194</span>    return getStoreFileFieldSize(StoreFileReader::getUncompressedDataIndexSize);<a name="line.2194"></a>
-<span class="sourceLineNo">2195</span>  }<a name="line.2195"></a>
-<span class="sourceLineNo">2196</span><a name="line.2196"></a>
-<span class="sourceLineNo">2197</span>  @Override<a name="line.2197"></a>
-<span class="sourceLineNo">2198</span>  public long getTotalStaticBloomSize() {<a name="line.2198"></a>
-<span class="sourceLineNo">2199</span>    return getStoreFileFieldSize(StoreFileReader::getTotalBloomSize);<a name="line.2199"></a>
-<span class="sourceLineNo">2200</span>  }<a name="line.2200"></a>
-<span class="sourceLineNo">2201</span><a name="line.2201"></a>
-<span class="sourceLineNo">2202</span>  @Override<a name="line.2202"></a>
-<span class="sourceLineNo">2203</span>  public MemStoreSize getMemStoreSize() {<a name="line.2203"></a>
-<span class="sourceLineNo">2204</span>    return this.memstore.size();<a name="line.2204"></a>
-<span class="sourceLineNo">2205</span>  }<a name="line.2205"></a>
-<span class="sourceLineNo">2206</span><a name="line.2206"></a>
-<span class="sourceLineNo">2207</span>  @Override<a name="line.2207"></a>
-<span class="sourceLineNo">2208</span>  public int getCompactPriority() {<a name="line.2208"></a>
-<span class="sourceLineNo">2209</span>    int priority = this.storeEngine.getStoreFileManager().getStoreCompactionPriority();<a name="line.2209"></a>
-<span class="sourceLineNo">2210</span>    if (priority == PRIORITY_USER) {<a name="line.2210"></a>
-<span class="sourceLineNo">2211</span>      LOG.warn("Compaction priority is USER despite there being no user compaction");<a name="line.2211"></a>
-<span class="sourceLineNo">2212</span>    }<a name="line.2212"></a>
-<span class="sourceLineNo">2213</span>    return priority;<a name="line.2213"></a>
-<span class="sourceLineNo">2214</span>  }<a name="line.2214"></a>
-<span class="sourceLineNo">2215</span><a name="line.2215"></a>
-<span class="sourceLineNo">2216</span>  public boolean throttleCompaction(long compactionSize) {<a name="line.2216"></a>
-<span class="sourceLineNo">2217</span>    return storeEngine.getCompactionPolicy().throttleCompaction(compactionSize);<a name="line.2217"></a>
-<span class="sourceLineNo">2218</span>  }<a name="line.2218"></a>
-<span class="sourceLineNo">2219</span><a name="line.2219"></a>
-<span class="sourceLineNo">2220</span>  public HRegion getHRegion() {<a name="line.2220"></a>
-<span class="sourceLineNo">2221</span>    return this.region;<a name="line.2221"></a>
-<span class="sourceLineNo">2222</span>  }<a name="line.2222"></a>
-<span class="sourceLineNo">2223</span><a name="line.2223"></a>
-<span class="sourceLineNo">2224</span>  public RegionCoprocessorHost getCoprocessorHost() {<a name="line.2224"></a>
-<span class="sourceLineNo">2225</span>    return this.region.getCoprocessorHost();<a name="line.2225"></a>
-<span class="sourceLineNo">2226</span>  }<a name="line.2226"></a>
-<span class="sourceLineNo">2227</span><a name="line.2227"></a>
-<span class="sourceLineNo">2228</span>  @Override<a name="line.2228"></a>
-<span class="sourceLineNo">2229</span>  public RegionInfo getRegionInfo() {<a name="line.2229"></a>
-<span class="sourceLineNo">2230</span>    return this.fs.getRegionInfo();<a name="line.2230"></a>
-<span class="sourceLineNo">2231</span>  }<a name="line.2231"></a>
-<span class="sourceLineNo">2232</span><a name="line.2232"></a>
-<span class="sourceLineNo">2233</span>  @Override<a name="line.2233"></a>
-<span class="sourceLineNo">2234</span>  public boolean areWritesEnabled() {<a name="line.2234"></a>
-<span class="sourceLineNo">2235</span>    return this.region.areWritesEnabled();<a name="line.2235"></a>
-<span class="sourceLineNo">2236</span>  }<a name="line.2236"></a>
-<span class="sourceLineNo">2237</span><a name="line.2237"></a>
-<span class="sourceLineNo">2238</span>  @Override<a name="line.2238"></a>
-<span class="sourceLineNo">2239</span>  public long getSmallestReadPoint() {<a name="line.2239"></a>
-<span class="sourceLineNo">2240</span>    return this.region.getSmallestReadPoint();<a name="line.2240"></a>
-<span class="sourceLineNo">2241</span>  }<a name="line.2241"></a>
-<span class="sourceLineNo">2242</span><a name="line.2242"></a>
-<span class="sourceLineNo">2243</span>  /**<a name="line.2243"></a>
-<span class="sourceLineNo">2244</span>   * Adds or replaces the specified KeyValues.<a name="line.2244"></a>
-<span class="sourceLineNo">2245</span>   * &lt;p&gt;<a name="line.2245"></a>
-<span class="sourceLineNo">2246</span>   * For each KeyValue specified, if a cell with the same row, family, and qualifier exists in<a name="line.2246"></a>
-<span class="sourceLineNo">2247</span>   * MemStore, it will be replaced. Otherwise, it will just be inserted to MemStore.<a name="line.2247"></a>
-<span class="sourceLineNo">2248</span>   * &lt;p&gt;<a name="line.2248"></a>
-<span class="sourceLineNo">2249</span>   * This operation is atomic on each KeyValue (row/family/qualifier) but not necessarily atomic<a name="line.2249"></a>
-<span class="sourceLineNo">2250</span>   * across all of them.<a name="line.2250"></a>
-<span class="sourceLineNo">2251</span>   * @param readpoint readpoint below which we can safely remove duplicate KVs<a name="line.2251"></a>
-<span class="sourceLineNo">2252</span>   * @throws IOException<a name="line.2252"></a>
-<span class="sourceLineNo">2253</span>   */<a name="line.2253"></a>
-<span class="sourceLineNo">2254</span>  public void upsert(Iterable&lt;Cell&gt; cells, long readpoint, MemStoreSizing memstoreSizing)<a name="line.2254"></a>
-<span class="sourceLineNo">2255</span>      throws IOException {<a name="line.2255"></a>
-<span class="sourceLineNo">2256</span>    this.lock.readLock().lock();<a name="line.2256"></a>
-<span class="sourceLineNo">2257</span>    try {<a name="line.2257"></a>
-<span class="sourceLineNo">2258</span>      this.memstore.upsert(cells, readpoint, memstoreSizing);<a name="line.2258"></a>
-<span class="sourceLineNo">2259</span>    } finally {<a name="line.2259"></a>
-<span class="sourceLineNo">2260</span>      this.lock.readLock().unlock();<a name="line.2260"></a>
-<span class="sourceLineNo">2261</span>    }<a name="line.2261"></a>
-<span class="sourceLineNo">2262</span>  }<a name="line.2262"></a>
-<span class="sourceLineNo">2263</span><a name="line.2263"></a>
-<span class="sourceLineNo">2264</span>  public StoreFlushContext createFlushContext(long cacheFlushId, FlushLifeCycleTracker tracker) {<a name="line.2264"></a>
-<span class="sourceLineNo">2265</span>    return new StoreFlusherImpl(cacheFlushId, tracker);<a name="line.2265"></a>
-<span class="sourceLineNo">2266</span>  }<a name="line.2266"></a>
-<span class="sourceLineNo">2267</span><a name="line.2267"></a>
-<span class="sourceLineNo">2268</span>  private final class StoreFlusherImpl implements StoreFlushContext {<a name="line.2268"></a>
-<span class="sourceLineNo">2269</span><a name="line.2269"></a>
-<span class="sourceLineNo">2270</span>    private final FlushLifeCycleTracker tracker;<a name="line.2270"></a>
-<span class="sourceLineNo">2271</span>    private final long cacheFlushSeqNum;<a name="line.2271"></a>
-<span class="sourceLineNo">2272</span>    private MemStoreSnapshot snapshot;<a name="line.2272"></a>
-<span class="sourceLineNo">2273</span>    private List&lt;Path&gt; tempFiles;<a name="line.2273"></a>
-<span class="sourceLineNo">2274</span>    private List&lt;Path&gt; committedFiles;<a name="line.2274"></a>
-<span class="sourceLineNo">2275</span>    private long cacheFlushCount;<a name="line.2275"></a>
-<span class="sourceLineNo">2276</span>    private long cacheFlushSize;<a name="line.2276"></a>
-<span class="sourceLineNo">2277</span>    private long outputFileSize;<a name="line.2277"></a>
-<span class="sourceLineNo">2278</span><a name="line.2278"></a>
-<span class="sourceLineNo">2279</span>    private StoreFlusherImpl(long cacheFlushSeqNum, FlushLifeCycleTracker tracker) {<a name="line.2279"></a>
-<span class="sourceLineNo">2280</span>      this.cacheFlushSeqNum = cacheFlushSeqNum;<a name="line.2280"></a>
-<span class="sourceLineNo">2281</span>      this.tracker = tracker;<a name="line.2281"></a>
-<span class="sourceLineNo">2282</span>    }<a name="line.2282"></a>
-<span class="sourceLineNo">2283</span><a name="line.2283"></a>
-<span class="sourceLineNo">2284</span>    /**<a name="line.2284"></a>
-<span class="sourceLineNo">2285</span>     * This is not thread safe. The caller should have a lock on the region or the store.<a name="line.2285"></a>
-<span class="sourceLineNo">2286</span>     * If necessary, the lock can be added with the patch provided in HBASE-10087<a name="line.2286"></a>
-<span class="sourceLineNo">2287</span>     */<a name="line.2287"></a>
-<span class="sourceLineNo">2288</span>    @Override<a name="line.2288"></a>
-<span class="sourceLineNo">2289</span>    public MemStoreSize prepare() {<a name="line.2289"></a>
-<span class="sourceLineNo">2290</span>      // passing the current sequence number of the wal - to allow bookkeeping in the memstore<a name="line.2290"></a>
-<span class="sourceLineNo">2291</span>      this.snapshot = memstore.snapshot();<a name="line.2291"></a>
-<span class="sourceLineNo">2292</span>      this.cacheFlushCount = snapshot.getCellsCount();<a name="line.2292"></a>
-<span class="sourceLineNo">2293</span>      this.cacheFlushSize = snapshot.getDataSize();<a name="line.2293"></a>
-<span class="sourceLineNo">2294</span>      committedFiles = new ArrayList&lt;&gt;(1);<a name="line.2294"></a>
-<span class="sourceLineNo">2295</span>      return snapshot.getMemStoreSize();<a name="line.2295"></a>
-<span class="sourceLineNo">2296</span>    }<a name="line.2296"></a>
-<span class="sourceLineNo">2297</span><a name="line.2297"></a>
-<span class="sourceLineNo">2298</span>    @Override<a name="line.2298"></a>
-<span class="sourceLineNo">2299</span>    public void flushCache(MonitoredTask status) throws IOException {<a name="line.2299"></a>
-<span class="sourceLineNo">2300</span>      RegionServerServices rsService = region.getRegionServerServices();<a name="line.2300"></a>
-<span class="sourceLineNo">2301</span>      ThroughputController throughputController =<a name="line.2301"></a>
-<span class="sourceLineNo">2302</span>          rsService == null ? null : rsService.getFlushThroughputController();<a name="line.2302"></a>
-<span class="sourceLineNo">2303</span>      tempFiles =<a name="line.2303"></a>
-<span class="sourceLineNo">2304</span>          HStore.this.flushCache(cacheFlushSeqNum, snapshot, status, throughputController, tracker);<a name="line.2304"></a>
-<span class="sourceLineNo">2305</span>    }<a name="line.2305"></a>
-<span class="sourceLineNo">2306</span><a name="line.2306"></a>
-<span class="sourceLineNo">2307</span>    @Override<a name="line.2307"></a>
-<span class="sourceLineNo">2308</span>    public boolean commit(MonitoredTask status) throws IOException {<a name="line.2308"></a>
-<span class="sourceLineNo">2309</span>      if (CollectionUtils.isEmpty(this.tempFiles)) {<a name="line.2309"></a>
-<span class="sourceLineNo">2310</span>        return false;<a name="line.2310"></a>
-<span class="sourceLineNo">2311</span>      }<a name="line.2311"></a>
-<span class="sourceLineNo">2312</span>      List&lt;HStoreFile&gt; storeFiles = new ArrayList&lt;&gt;(this.tempFiles.size());<a name="line.2312"></a>
-<span class="sourceLineNo">2313</span>      for (Path storeFilePath : tempFiles) {<a name="line.2313"></a>
-<span class="sourceLineNo">2314</span>        try {<a name="line.2314"></a>
-<span class="sourceLineNo">2315</span>          HStoreFile sf = HStore.this.commitFile(storeFilePath, cacheFlushSeqNum, status);<a name="line.2315"></a>
-<span class="sourceLineNo">2316</span>          outputFileSize += sf.getReader().length();<a name="line.2316"></a>
-<span class="sourceLineNo">2317</span>          storeFiles.add(sf);<a name="line.2317"></a>
-<span class="sourceLineNo">2318</span>        } catch (IOException ex) {<a name="line.2318"></a>
-<span class="sourceLineNo">2319</span>          LOG.error("Failed to commit store file {}", storeFilePath, ex);<a name="line.2319"></a>
-<span class="sourceLineNo">2320</span>          // Try to delete the files we have committed before.<a name="line.2320"></a>
-<span class="sourceLineNo">2321</span>          for (HStoreFile sf : storeFiles) {<a name="line.2321"></a>
-<span class="sourceLineNo">2322</span>            Path pathToDelete = sf.getPath();<a name="line.2322"></a>
-<span class="sourceLineNo">2323</span>            try {<a name="line.2323"></a>
-<span class="sourceLineNo">2324</span>              sf.deleteStoreFile();<a name="line.2324"></a>
-<span class="sourceLineNo">2325</span>            } catch (IOException deleteEx) {<a name="line.2325"></a>
-<span class="sourceLineNo">2326</span>              LOG.error(HBaseMarkers.FATAL, "Failed to delete store file we committed, "<a name="line.2326"></a>
-<span class="sourceLineNo">2327</span>                  + "halting {}", pathToDelete, ex);<a name="line.2327"></a>
-<span class="sourceLineNo">2328</span>              Runtime.getRuntime().halt(1);<a name="line.2328"></a>
-<span class="sourceLineNo">2329</span>            }<a name="line.2329"></a>
-<span class="sourceLineNo">2330</span>          }<a name="line.2330"></a>
-<span class="sourceLineNo">2331</span>          throw new IOException("Failed to commit the flush", ex);<a name="line.2331"></a>
-<span class="sourceLineNo">2332</span>        }<a name="line.2332"></a>
-<span class="sourceLineNo">2333</span>      }<a name="line.2333"></a>
-<span class="sourceLineNo">2334</span><a name="line.2334"></a>
-<span class="sourceLineNo">2335</span>      for (HStoreFile sf : storeFiles) {<a name="line.2335"></a>
-<span class="sourceLineNo">2336</span>        if (HStore.this.getCoprocessorHost() != null) {<a name="line.2336"></a>
-<span class="sourceLineNo">2337</span>          HStore.this.getCoprocessorHost().postFlush(HStore.this, sf, tracker);<a name="line.2337"></a>
-<span class="sourceLineNo">2338</span>        }<a name="line.2338"></a>
-<span class="sourceLineNo">2339</span>        committedFiles.add(sf.getPath());<a name="line.2339"></a>
-<span class="sourceLineNo">2340</span>      }<a name="line.2340"></a>
-<span class="sourceLineNo">2341</span><a name="line.2341"></a>
-<span class="sourceLineNo">2342</span>      HStore.this.flushedCellsCount.addAndGet(cacheFlushCount);<a name="line.2342"></a>
-<span class="sourceLineNo">2343</span>      HStore.this.flushedCellsSize.addAndGet(cacheFlushSize);<a name="line.2343"></a>
-<span class="sourceLineNo">2344</span>      HStore.this.flushedOutputFileSize.addAndGet(outputFileSize);<a name="line.2344"></a>
-<span class="sourceLineNo">2345</span><a name="line.2345"></a>
-<span class="sourceLineNo">2346</span>      // Add new file to store files.  Clear snapshot too while we have the Store write lock.<a name="line.2346"></a>
-<span class="sourceLineNo">2347</span>      return HStore.this.updateStorefiles(storeFiles, snapshot.getId());<a name="line.2347"></a>
-<span class="sourceLineNo">2348</span>    }<a name="line.2348"></a>
-<span class="sourceLineNo">2349</span><a name="line.2349"></a>
-<span class="sourceLineNo">2350</span>    @Override<a name="line.2350"></a>
-<span class="sourceLineNo">2351</span>    public long getOutputFileSize() {<a name="line.2351"></a>
-<span class="sourceLineNo">2352</span>      return outputFileSize;<a name="line.2352"></a>
-<span class="sourceLineNo">2353</span>    }<a name="line.2353"></a>
-<span class="sourceLineNo">2354</span><a name="line.2354"></a>
-<span class="sourceLineNo">2355</span>    @Override<a name="line.2355"></a>
-<span class="sourceLineNo">2356</span>    public List&lt;Path&gt; getCommittedFiles() {<a name="line.2356"></a>
-<span class="sourceLineNo">2357</span>      return committedFiles;<a name="line.2357"></a>
-<span class="sourceLineNo">2358</span>    }<a name="line.2358"></a>
-<span class="sourceLineNo">2359</span><a name="line.2359"></a>
-<span class="sourceLineNo">2360</span>    /**<a name="line.2360"></a>
-<span class="sourceLineNo">2361</span>     * Similar to commit, but called in secondary region replicas for replaying the<a name="line.2361"></a>
-<span class="sourceLineNo">2362</span>     * flush cache from primary region. Adds the new files to the store, and drops the<a name="line.2362"></a>
-<span class="sourceLineNo">2363</span>     * snapshot depending on dropMemstoreSnapshot argument.<a name="line.2363"></a>
-<span class="sourceLineNo">2364</span>     * @param fileNames names of the flushed files<a name="line.2364"></a>
-<span class="sourceLineNo">2365</span>     * @param dropMemstoreSnapshot whether to drop the prepared memstore snapshot<a name="line.2365"></a>
-<span class="sourceLineNo">2366</span>     * @throws IOException<a name="line.2366"></a>
-<span class="sourceLineNo">2367</span>     */<a name="line.2367"></a>
-<span class="sourceLineNo">2368</span>    @Override<a name="line.2368"></a>
-<span class="sourceLineNo">2369</span>    public void replayFlush(List&lt;String&gt; fileNames, boolean dropMemstoreSnapshot)<a name="line.2369"></a>
-<span class="sourceLineNo">2370</span>        throws IOException {<a name="line.2370"></a>
-<span class="sourceLineNo">2371</span>      List&lt;HStoreFile&gt; storeFiles = new ArrayList&lt;&gt;(fileNames.size());<a name="line.2371"></a>
-<span class="sourceLineNo">2372</span>      for (String file : fileNames) {<a name="line.2372"></a>
-<span class="sourceLineNo">2373</span>        // open the file as a store file (hfile link, etc)<a name="line.2373"></a>
-<span class="sourceLineNo">2374</span>        StoreFileInfo storeFileInfo = fs.getStoreFileInfo(getColumnFamilyName(), file);<a name="line.2374"></a>
-<span class="sourceLineNo">2375</span>        HStoreFile storeFile = createStoreFileAndReader(storeFileInfo);<a name="line.2375"></a>
-<span class="sourceLineNo">2376</span>        storeFiles.add(storeFile);<a name="line.2376"></a>
-<span class="sourceLineNo">2377</span>        HStore.this.storeSize.addAndGet(storeFile.getReader().length());<a name="line.2377"></a>
-<span class="sourceLineNo">2378</span>        HStore.this.totalUncompressedBytes<a name="line.2378"></a>
-<span class="sourceLineNo">2379</span>            .addAndGet(storeFile.getReader().getTotalUncompressedBytes());<a name="line.2379"></a>
-<span class="sourceLineNo">2380</span>        if (LOG.isInfoEnabled()) {<a name="line.2380"></a>
-<span class="sourceLineNo">2381</span>          LOG.info("Region: " + HStore.this.getRegionInfo().getEncodedName() +<a name="line.2381"></a>
-<span class="sourceLineNo">2382</span>            " added " + storeFile + ", entries=" + storeFile.getReader().getEntries() +<a name="line.2382"></a>
-<span class="sourceLineNo">2383</span>              ", sequenceid=" + +storeFile.getReader().getSequenceID() + ", filesize="<a name="line.2383"></a>
-<span class="sourceLineNo">2384</span>              + TraditionalBinaryPrefix.long2String(storeFile.getReader().length(), "", 1));<a name="line.2384"></a>
-<span class="sourceLineNo">2385</span>        }<a name="line.2385"></a>
-<span class="sourceLineNo">2386</span>      }<a name="line.2386"></a>
-<span class="sourceLineNo">2387</span><a name="line.2387"></a>
-<span class="sourceLineNo">2388</span>      long snapshotId = -1; // -1 means do not drop<a name="line.2388"></a>
-<span class="sourceLineNo">2389</span>      if (dropMemstoreSnapshot &amp;&amp; snapshot != null) {<a name="line.2389"></a>
-<span class="sourceLineNo">2390</span>        snapshotId = snapshot.getId();<a name="line.2390"></a>
-<span class="sourceLineNo">2391</span>        snapshot.close();<a name="line.2391"></a>
-<span class="sourceLineNo">2392</span>      }<a name="line.2392"></a>
-<span class="sourceLineNo">2393</span>      HStore.this.updateStorefiles(storeFiles, snapshotId);<a name="line.2393"></a>
-<span class="sourceLineNo">2394</span>    }<a name="line.2394"></a>
-<span class="sourceLineNo">2395</span><a name="line.2395"></a>
-<span class="sourceLineNo">2396</span>    /**<a name="line.2396"></a>
-<span class="sourceLineNo">2397</span>     * Abort the snapshot preparation. Drops the snapshot if any.<a name="line.2397"></a>
-<span class="sourceLineNo">2398</span>     * @throws IOException<a name="line.2398"></a>
-<span class="sourceLineNo">2399</span>     */<a name="line.2399"></a>
-<span class="sourceLineNo">2400</span>    @Override<a name="line.2400"></a>
-<span class="sourceLineNo">2401</span>    public void abort() throws IOException {<a name="line.2401"></a>
-<span class="sourceLineNo">2402</span>      if (snapshot != null) {<a name="line.2402"></a>
-<span class="sourceLineNo">2403</span>        //We need to close the snapshot when aborting, otherwise, the segment scanner<a name="line.2403"></a>
-<span class="sourceLineNo">2404</span>        //won't be closed. If we are using MSLAB, the chunk referenced by those scanners<a name="line.2404"></a>
-<span class="sourceLineNo">2405</span>        //can't be released, thus memory leak<a name="line.2405"></a>
-<span class="sourceLineNo">2406</span>        snapshot.close();<a name="line.2406"></a>
-<span class="sourceLineNo">2407</span>        HStore.this.updateStorefiles(Collections.emptyList(), snapshot.getId());<a name="line.2407"></a>
-<span class="sourceLineNo">2408</span>      }<a name="line.2408"></a>
-<span class="sourceLineNo">2409</span>    }<a name="line.2409"></a>
-<span class="sourceLineNo">2410</span>  }<a name="line.2410"></a>
-<span class="sourceLineNo">2411</span><a name="line.2411"></a>
-<span class="sourceLineNo">2412</span>  @Override<a name="line.2412"></a>
-<span class="sourceLineNo">2413</span>  public boolean needsCompaction() {<a name="line.2413"></a>
-<span class="sourceLineNo">2414</span>    List&lt;HStoreFile&gt; filesCompactingClone = null;<a name="line.2414"></a>
-<span class="sourceLineNo">2415</span>    synchronized (filesCompacting) {<a name="line.2415"></a>
-<span class="sourceLineNo">2416</span>      filesCompactingClone = Lists.newArrayList(filesCompacting);<a name="line.2416"></a>
-<span class="sourceLineNo">2417</span>    }<a name="line.2417"></a>
-<span class="sourceLineNo">2418</span>    return this.storeEngine.needsCompaction(filesCompactingClone);<a name="line.2418"></a>
-<span class="sourceLineNo">2419</span>  }<a name="line.2419"></a>
-<span class="sourceLineNo">2420</span><a name="line.2420"></a>
-<span class="sourceLineNo">2421</span>  /**<a name="line.2421"></a>
-<span class="sourceLineNo">2422</span>   * Used for tests.<a name="line.2422"></a>
-<span class="sourceLineNo">2423</span>   * @return cache configuration for this Store.<a name="line.2423"></a>
-<span class="sourceLineNo">2424</span>   */<a name="line.2424"></a>
-<span class="sourceLineNo">2425</span>  @VisibleForTesting<a name="line.2425"></a>
-<span class="sourceLineNo">2426</span>  public CacheConfig getCacheConfig() {<a name="line.2426"></a>
-<span class="sourceLineNo">2427</span>    return this.cacheConf;<a name="line.2427"></a>
-<span class="sourceLineNo">2428</span>  }<a name="line.2428"></a>
-<span class="sourceLineNo">2429</span><a name="line.2429"></a>
-<span class="sourceLineNo">2430</span>  public static final long FIXED_OVERHEAD =<a name="line.2430"></a>
-<span class="sourceLineNo">2431</span>      ClassSize.align(ClassSize.OBJECT + (27 * ClassSize.REFERENCE) + (2 * Bytes.SIZEOF_LONG)<a name="line.2431"></a>
-<span class="sourceLineNo">2432</span>              + (6 * Bytes.SIZEOF_INT) + (2 * Bytes.SIZEOF_BOOLEAN));<a name="line.2432"></a>
-<span class="sourceLineNo">2433</span><a name="line.2433"></a>
-<span class="sourceLineNo">2434</span>  public static final long DEEP_OVERHEAD = ClassSize.align(FIXED_OVERHEAD<a name="line.2434"></a>
-<span class="sourceLineNo">2435</span>      + ClassSize.OBJECT + ClassSize.REENTRANT_LOCK<a name="line.2435"></a>
-<span class="sourceLineNo">2436</span>      + ClassSize.CONCURRENT_SKIPLISTMAP<a name="line.2436"></a>
-<span class="sourceLineNo">2437</span>      + ClassSize.CONCURRENT_SKIPLISTMAP_ENTRY + ClassSize.OBJECT<a name="line.2437"></a>
-<span class="sourceLineNo">2438</span>      + ScanInfo.FIXED_OVERHEAD);<a name="line.2438"></a>
-<span class="sourceLineNo">2439</span><a name="line.2439"></a>
-<span class="sourceLineNo">2440</span>  @Override<a name="line.2440"></a>
-<span class="sourceLineNo">2441</span>  public long heapSize() {<a name="line.2441"></a>
-<span class="sourceLineNo">2442</span>    MemStoreSize memstoreSize = this.memstore.size();<a name="line.2442"></a>
-<span class="sourceLineNo">2443</span>    return DEEP_OVERHEAD + memstoreSize.getHeapSize();<a name="line.2443"></a>
-<span class="sourceLineNo">2444</span>  }<a name="line.2444"></a>
-<span class="sourceLineNo">2445</span><a name="line.2445"></a>
-<span class="sourceLineNo">2446</span>  @Override<a name="line.2446"></a>
-<span class="sourceLineNo">2447</span>  public CellComparator getComparator() {<a name="line.2447"></a>
-<span class="sourceLineNo">2448</span>    return comparator;<a name="line.2448"></a>
-<span class="sourceLineNo">2449</span>  }<a name="line.2449"></a>
-<span class="sourceLineNo">2450</span><a name="line.2450"></a>
-<span class="sourceLineNo">2451</span>  public ScanInfo getScanInfo() {<a name="line.2451"></a>
-<span class="sourceLineNo">2452</span>    return scanInfo;<a name="line.2452"></a>
-<span class="sourceLineNo">2453</span>  }<a name="line.2453"></a>
-<span class="sourceLineNo">2454</span><a name="line.2454"></a>
-<span class="sourceLineNo">2455</span>  /**<a name="line.2455"></a>
-<span class="sourceLineNo">2456</span>   * Set scan info, used by test<a name="line.2456"></a>
-<span class="sourceLineNo">2457</span>   * @param scanInfo new scan info to use for test<a name="line.2457"></a>
-<span class="sourceLineNo">2458</span>   */<a name="line.2458"></a>
-<span class="sourceLineNo">2459</span>  void setScanInfo(ScanInfo scanInfo) {<a name="line.2459"></a>
-<span class="sourceLineNo">2460</span>    this.scanInfo = scanInfo;<a name="line.2460"></a>
-<span class="sourceLineNo">2461</span>  }<a name="line.2461"></a>
-<span class="sourceLineNo">2462</span><a name="line.2462"></a>
-<span class="sourceLineNo">2463</span>  @Override<a name="line.2463"></a>
-<span class="sourceLineNo">2464</span>  public boolean hasTooManyStoreFiles() {<a name="line.2464"></a>
-<span class="sourceLineNo">2465</span>    return getStorefilesCount() &gt; this.blockingFileCount;<a name="line.2465"></a>
-<span class="sourceLineNo">2466</span>  }<a name="line.2466"></a>
-<span class="sourceLineNo">2467</span><a name="line.2467"></a>
-<span class="sourceLineNo">2468</span>  @Override<a name="line.2468"></a>
-<span class="sourceLineNo">2469</span>  public long getFlushedCellsCount() {<a name="line.2469"></a>
-<span class="sourceLineNo">2470</span>    return flushedCellsCount.get();<a name="line.2470"></a>
-<span class="sourceLineNo">2471</span>  }<a name="line.2471"></a>
-<span class="sourceLineNo">2472</span><a name="line.2472"></a>
-<span class="sourceLineNo">2473</span>  @Override<a name="line.2473"></a>
-<span class="sourceLineNo">2474</span>  public long getFlushedCellsSize() {<a name="line.2474"></a>
-<span class="sourceLineNo">2475</span>    return flushedCellsSize.get();<a name="line.2475"></a>
-<span class="sourceLineNo">2476</span>  }<a name="line.2476"></a>
-<span class="sourceLineNo">2477</span><a name="line.2477"></a>
-<span class="sourceLineNo">2478</span>  @Override<a name="line.2478"></a>
-<span class="sourceLineNo">2479</span>  public long getFlushedOutputFileSize() {<a name="line.2479"></a>
-<span class="sourceLineNo">2480</span>    return flushedOutputFileSize.get();<a name="line.2480"></a>
-<span class="sourceLineNo">2481</span>  }<a name="line.2481"></a>
-<span class="sourceLineNo">2482</span><a name="line.2482"></a>
-<span class="sourceLineNo">2483</span>  @Override<a name="line.2483"></a>
-<span class="sourceLineNo">2484</span>  public long getCompactedCellsCount() {<a name="line.2484"></a>
-<span class="sourceLineNo">2485</span>    return compactedCellsCount.get();<a name="line.2485"></a>
-<span class="sourceLineNo">2486</span>  }<a name="line.2486"></a>
-<span class="sourceLineNo">2487</span><a name="line.2487"></a>
-<span class="sourceLineNo">2488</span>  @Override<a name="line.2488"></a>
-<span class="sourceLineNo">2489</span>  public long getCompactedCellsSize() {<a name="line.2489"></a>
-<span class="sourceLineNo">2490</span>    return compactedCellsSize.get();<a name="line.2490"></a>
-<span class="sourceLineNo">2491</span>  }<a name="line.2491"></a>
-<span class="sourceLineNo">2492</span><a name="line.2492"></a>
-<span class="sourceLineNo">2493</span>  @Override<a name="line.2493"></a>
-<span class="sourceLineNo">2494</span>  public long getMajorCompactedCellsCount() {<a name="line.2494"></a>
-<span class="sourceLineNo">2495</span>    return majorCompactedCellsCount.get();<a name="line.2495"></a>
-<span class="sourceLineNo">2496</span>  }<a name="line.2496"></a>
-<span class="sourceLineNo">2497</span><a name="line.2497"></a>
-<span class="sourceLineNo">2498</span>  @Override<a name="line.2498"></a>
-<span class="sourceLineNo">2499</span>  public long getMajorCompactedCellsSize() {<a name="line.2499"></a>
-<span class="sourceLineNo">2500</span>    return majorCompactedCellsSize.get();<a name="line.2500"></a>
-<span class="sourceLineNo">2501</span>  }<a name="line.2501"></a>
-<span class="sourceLineNo">2502</span><a name="line.2502"></a>
-<span class="sourceLineNo">2503</span>  /**<a name="line.2503"></a>
-<span class="sourceLineNo">2504</span>   * Returns the StoreEngine that is backing this concrete implementation of Store.<a name="line.2504"></a>
-<span class="sourceLineNo">2505</span>   * @return Returns the {@link StoreEngine} object used internally inside this HStore object.<a name="line.2505"></a>
-<span class="sourceLineNo">2506</span>   */<a name="line.2506"></a>
-<span class="sourceLineNo">2507</span>  @VisibleForTesting<a name="line.2507"></a>
-<span class="sourceLineNo">2508</span>  public StoreEngine&lt;?, ?, ?, ?&gt; getStoreEngine() {<a name="line.2508"></a>
-<span class="sourceLineNo">2509</span>    return this.storeEngine;<a name="line.2509"></a>
-<span class="sourceLineNo">2510</span>  }<a name="line.2510"></a>
-<span class="sourceLineNo">2511</span><a name="line.2511"></a>
-<span class="sourceLineNo">2512</span>  protected OffPeakHours getOffPeakHours() {<a name="line.2512"></a>
-<span class="sourceLineNo">2513</span>    return this.offPeakHours;<a name="line.2513"></a>
-<span class="sourceLineNo">2514</span>  }<a name="line.2514"></a>
-<span class="sourceLineNo">2515</span><a name="line.2515"></a>
-<span class="sourceLineNo">2516</span>  /**<a name="line.2516"></a>
-<span class="sourceLineNo">2517</span>   * {@inheritDoc}<a name="line.2517"></a>
-<span class="sourceLineNo">2518</span>   */<a name="line.2518"></a>
-<span class="sourceLineNo">2519</span>  @Override<a name="line.2519"></a>
-<span class="sourceLineNo">2520</span>  public void onConfigurationChange(Configuration conf) {<a name="line.2520"></a>
-<span class="sourceLineNo">2521</span>    this.conf = new CompoundConfiguration()<a name="line.2521"></a>
-<span class="sourceLineNo">2522</span>            .add(conf)<a name="line.2522"></a>
-<span class="sourceLineNo">2523</span>            .addBytesMap(family.getValues());<a name="line.2523"></a>
-<span class="sourceLineNo">2524</span>    this.storeEngine.compactionPolicy.setConf(conf);<a name="line.2524"></a>
-<span class="sourceLineNo">2525</span>    this.offPeakHours = OffPeakHours.getInstance(conf);<a name="line.2525"></a>
-<span class="sourceLineNo">2526</span>  }<a name="line.2526"></a>
-<span class="sourceLineNo">2527</span><a name="line.2527"></a>
-<span class="sourceLineNo">2528</span>  /**<a name="line.2528"></a>
-<span class="sourceLineNo">2529</span>   * {@inheritDoc}<a name="line.2529"></a>
-<span class="sourceLineNo">2530</span>   */<a name="line.2530"></a>
-<span class="sourceLineNo">2531</span>  @Override<a name="line.2531"></a>
-<span class="sourceLineNo">2532</span>  public void registerChildren(ConfigurationManager manager) {<a name="line.2532"></a>
-<span class="sourceLineNo">2533</span>    // No children to register<a name="line.2533"></a>
-<span class="sourceLineNo">2534</span>  }<a name="line.2534"></a>
-<span class="sourceLineNo">2535</span><a name="line.2535"></a>
-<span class="sourceLineNo">2536</span>  /**<a name="line.2536"></a>
-<span class="sourceLineNo">2537</span>   * {@inheritDoc}<a name="line.2537"></a>
-<span class="sourceLineNo">2538</span>   */<a name="line.2538"></a>
-<span class="sourceLineNo">2539</span>  @Override<a name="line.2539"></a>
-<span class="sourceLineNo">2540</span>  public void deregisterChildren(ConfigurationManager manager) {<a name="line.2540"></a>
-<span class="sourceLineNo">2541</span>    // No children to deregister<a name="line.2541"></a>
-<span class="sourceLineNo">2542</span>  }<a name="line.2542"></a>
-<span class="sourceLineNo">2543</span><a name="line.2543"></a>
-<span class="sourceLineNo">2544</span>  @Override<a name="line.2544"></a>
-<span class="sourceLineNo">2545</span>  public double getCompactionPressure() {<a name="line.2545"></a>
-<span class="sourceLineNo">2546</span>    return storeEngine.getStoreFileManager().getCompactionPressure();<a name="line.2546"></a>
-<span class="sourceLineNo">2547</span>  }<a name="line.2547"></a>
-<span class="sourceLineNo">2548</span><a name="line.2548"></a>
-<span class="sourceLineNo">2549</span>  @Override<a name="line.2549"></a>
-<span class="sourceLineNo">2550</span>  public boolean isPrimaryReplicaStore() {<a name="line.2550"></a>
-<span class="sourceLineNo">2551</span>    return getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID;<a name="line.2551"></a>
-<span class="sourceLineNo">2552</span>  }<a name="line.2552"></a>
-<span class="sourceLineNo">2553</span><a name="line.2553"></a>
-<span class="sourceLineNo">2554</span>  /**<a name="line.2554"></a>
-<span class="sourceLineNo">2555</span>   * Sets the store up for a region level snapshot operation.<a name="line.2555"></a>
-<span class="sourceLineNo">2556</span>   * @see #postSnapshotOperation()<a name="line.2556"></a>
-<span class="sourceLineNo">2557</span>   */<a name="line.2557"></a>
-<span class="sourceLineNo">2558</span>  public void preSnapshotOperation() {<a name="line.2558"></a>
-<span class="sourceLineNo">2559</span>    archiveLock.lock();<a name="line.2559"></a>
-<span class="sourceLineNo">2560</span>  }<a name="line.2560"></a>
-<span class="sourceLineNo">2561</span><a name="line.2561"></a>
-<span class="sourceLineNo">2562</span>  /**<a name="line.2562"></a>
-<span class="sourceLineNo">2563</span>   * Perform tasks needed after the completion of snapshot operation.<a name="line.2563"></a>
-<span class="sourceLineNo">2564</span>   * @see #preSnapshotOperation()<a name="line.2564"></a>
-<span class="sourceLineNo">2565</span>   */<a name="line.2565"></a>
-<span class="sourceLineNo">2566</span>  public void postSnapshotOperation() {<a name="line.2566"></a>
-<span class="sourceLineNo">2567</span>    archiveLock.unlock();<a name="line.2567"></a>
-<span class="sourceLineNo">2568</span>  }<a name="line.2568"></a>
-<span class="sourceLineNo">2569</span><a name="line.2569"></a>
-<span class="sourceLineNo">2570</span>  /**<a name="line.2570"></a>
-<span class="sourceLineNo">2571</span>   * Closes and archives the compacted files under this store<a name="line.2571"></a>
-<span class="sourceLineNo">2572</span>   */<a name="line.2572"></a>
-<span class="sourceLineNo">2573</span>  public synchronized void closeAndArchiveCompactedFiles() throws IOException {<a name="line.2573"></a>
-<span class="sourceLineNo">2574</span>    closeAndArchiveCompactedFiles(false);<a name="line.2574"></a>
-<span class="sourceLineNo">2575</span>  }<a name="line.2575"></a>
-<span class="sourceLineNo">2576</span><a name="line.2576"></a>
-<span class="sourceLineNo">2577</span>  @VisibleForTesting<a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>  public synchronized void closeAndArchiveCompactedFiles(boolean storeClosing) throws IOException {<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>    // ensure other threads do not attempt to archive the same files on close()<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>    archiveLock.lock();<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>    try {<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>      lock.readLock().lock();<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span>      Collection&lt;HStoreFile&gt; copyCompactedfiles = null;<a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>      try {<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span>        Collection&lt;HStoreFile&gt; compactedfiles =<a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>            this.getStoreEngine().getStoreFileManager().getCompactedfiles();<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span>        if (CollectionUtils.isNotEmpty(compactedfiles)) {<a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>          // Do a copy under read lock<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span>          copyCompactedfiles = new ArrayList&lt;&gt;(compactedfiles);<a name="line.2589"></a>
-<span class="sourceLineNo">2590</span>        } else {<a name="line.2590"></a>
-<span class="sourceLineNo">2591</span>          LOG.trace("No compacted files to archive");<a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>        }<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>      } finally {<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>        lock.readLock().unlock();<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span>      }<a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>      if (CollectionUtils.isNotEmpty(copyCompactedfiles)) {<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>        removeCompactedfiles(copyCompactedfiles, storeClosing);<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>      }<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span>    } finally {<a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>      archiveLock.unlock();<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span>    }<a name="line.2601"></a>
-<span class="sourceLineNo">2602</span>  }<a name="line.2602"></a>
-<span class="sourceLineNo">2603</span><a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>  /**<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span>   * Archives and removes the compacted files<a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>   * @param compactedfiles The compacted files in this store that are not active in reads<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>   */<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>  private void removeCompactedfiles(Collection&lt;HStoreFile&gt; compactedfiles, boolean storeClosing)<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span>      throws IOException {<a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>    final List&lt;HStoreFile&gt; filesToRemove = new ArrayList&lt;&gt;(compactedfiles.size());<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>    final List&lt;Long&gt; storeFileSizes = new ArrayList&lt;&gt;(compactedfiles.size());<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>    for (final HStoreFile file : compactedfiles) {<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span>      synchronized (file) {<a name="line.2613"></a>
-<span class="sourceLineNo">2614</span>        try {<a name="line.2614"></a>
-<span class="sourceLineNo">2615</span>          StoreFileReader r = file.getReader();<a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>          if (r == null) {<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>            LOG.debug("The file {} was closed but still not archived", file);<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>            // HACK: Temporarily re-open the reader so we can get the size of the file. Ideally,<a name="line.2618">

<TRUNCATED>

[28/29] hbase-site git commit: Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 1ec2306..d53a6ab 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="20181220" />
+    <meta name="Date-Revision-yyyymmdd" content="20181221" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -294,7 +294,7 @@
 <td>3823</td>
 <td>0</td>
 <td>0</td>
-<td>14663</td></tr></table></div>
+<td>14668</td></tr></table></div>
 <div class="section">
 <h2><a name="Files"></a>Files</h2>
 <table border="0" class="table table-striped">
@@ -567,7 +567,7 @@
 <td><a href="#org.apache.hadoop.hbase.KeyValueUtil.java">org/apache/hadoop/hbase/KeyValueUtil.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>29</td></tr>
+<td>28</td></tr>
 <tr class="a">
 <td><a href="#org.apache.hadoop.hbase.LocalHBaseCluster.java">org/apache/hadoop/hbase/LocalHBaseCluster.java</a></td>
 <td>0</td>
@@ -807,7 +807,7 @@
 <td><a href="#org.apache.hadoop.hbase.TestKeyValue.java">org/apache/hadoop/hbase/TestKeyValue.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>3</td></tr>
+<td>9</td></tr>
 <tr class="a">
 <td><a href="#org.apache.hadoop.hbase.TestLocalHBaseCluster.java">org/apache/hadoop/hbase/TestLocalHBaseCluster.java</a></td>
 <td>0</td>
@@ -9744,7 +9744,7 @@
 <li>caseIndent: <tt>&quot;2&quot;</tt></li>
 <li>basicOffset: <tt>&quot;2&quot;</tt></li>
 <li>lineWrappingIndentation: <tt>&quot;2&quot;</tt></li></ul></td>
-<td>4608</td>
+<td>4614</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="b">
 <td>javadoc</td>
@@ -9756,7 +9756,7 @@
 <tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#NonEmptyAtclauseDescription">NonEmptyAtclauseDescription</a></td>
-<td>3408</td>
+<td>3407</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="b">
 <td>misc</td>
@@ -14486,691 +14486,691 @@
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>257</td></tr>
+<td>266</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>347</td></tr>
+<td>357</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>359</td></tr>
+<td>369</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>368</td></tr>
+<td>378</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>405</td></tr>
+<td>415</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>419</td></tr>
+<td>429</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>434</td></tr>
+<td>444</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>450</td></tr>
+<td>460</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>470</td></tr>
+<td>480</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>489</td></tr>
+<td>499</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>506</td></tr>
+<td>516</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>527</td></tr>
+<td>537</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>539</td></tr>
+<td>549</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>540</td></tr>
+<td>550</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>541</td></tr>
+<td>551</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>542</td></tr>
+<td>552</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>543</td></tr>
+<td>553</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>544</td></tr>
+<td>554</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>545</td></tr>
+<td>555</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>546</td></tr>
+<td>556</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>547</td></tr>
+<td>557</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>548</td></tr>
+<td>558</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>549</td></tr>
+<td>559</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>565</td></tr>
+<td>575</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>600</td></tr>
+<td>610</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'ctor def' child has incorrect indentation level 5, expected level should be 4.</td>
-<td>609</td></tr>
+<td>619</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'ctor def' child has incorrect indentation level 5, expected level should be 4.</td>
-<td>610</td></tr>
+<td>620</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'ctor def' child has incorrect indentation level 5, expected level should be 4.</td>
-<td>614</td></tr>
+<td>624</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'ctor def rcurly' has incorrect indentation level 3, expected level should be 2.</td>
-<td>615</td></tr>
+<td>625</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>636</td></tr>
+<td>646</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>652</td></tr>
+<td>662</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>653</td></tr>
+<td>663</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>654</td></tr>
+<td>664</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>655</td></tr>
+<td>665</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>656</td></tr>
+<td>666</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>657</td></tr>
+<td>667</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>658</td></tr>
+<td>668</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>659</td></tr>
+<td>669</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>660</td></tr>
+<td>670</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>661</td></tr>
+<td>671</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>662</td></tr>
+<td>672</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>663</td></tr>
+<td>673</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>664</td></tr>
+<td>674</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>665</td></tr>
+<td>675</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>666</td></tr>
+<td>676</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>692</td></tr>
+<td>702</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>713</td></tr>
+<td>723</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>714</td></tr>
+<td>724</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>750</td></tr>
+<td>760</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>751</td></tr>
+<td>761</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>752</td></tr>
+<td>762</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>753</td></tr>
+<td>763</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>754</td></tr>
+<td>764</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>755</td></tr>
+<td>765</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>870</td></tr>
+<td>880</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1096</td></tr>
+<td>1106</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>1184</td></tr>
+<td>1194</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1555</td></tr>
+<td>1565</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1556</td></tr>
+<td>1566</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>1558</td></tr>
+<td>1568</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1577</td></tr>
+<td>1587</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1578</td></tr>
+<td>1588</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 121).</td>
-<td>1599</td></tr>
+<td>1609</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1737</td></tr>
+<td>1747</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1738</td></tr>
+<td>1748</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1748</td></tr>
+<td>1758</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1749</td></tr>
+<td>1759</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1750</td></tr>
+<td>1760</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1751</td></tr>
+<td>1761</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1752</td></tr>
+<td>1762</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1753</td></tr>
+<td>1763</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1849</td></tr>
+<td>1859</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1850</td></tr>
+<td>1860</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1860</td></tr>
+<td>1870</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1861</td></tr>
+<td>1871</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1862</td></tr>
+<td>1872</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1863</td></tr>
+<td>1873</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1864</td></tr>
+<td>1874</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1865</td></tr>
+<td>1875</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def rcurly' has incorrect indentation level 6, expected level should be 4.</td>
-<td>1891</td></tr>
+<td>1901</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1908</td></tr>
+<td>1918</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1909</td></tr>
+<td>1919</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1910</td></tr>
+<td>1920</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1911</td></tr>
+<td>1921</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1912</td></tr>
+<td>1922</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1913</td></tr>
+<td>1923</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>1914</td></tr>
+<td>1924</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2055</td></tr>
+<td>2065</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2056</td></tr>
+<td>2066</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2093</td></tr>
+<td>2103</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2094</td></tr>
+<td>2104</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2104</td></tr>
+<td>2114</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2105</td></tr>
+<td>2115</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2106</td></tr>
+<td>2116</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2107</td></tr>
+<td>2117</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2151</td></tr>
+<td>2161</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2152</td></tr>
+<td>2162</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>2231</td></tr>
+<td>2241</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>2233</td></tr>
+<td>2243</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2234</td></tr>
+<td>2244</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2242</td></tr>
+<td>2252</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2243</td></tr>
+<td>2253</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
-<td>2245</td></tr>
+<td>2255</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2246</td></tr>
+<td>2256</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>2251</td></tr>
+<td>2261</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2263</td></tr>
+<td>2273</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2264</td></tr>
+<td>2274</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2266</td></tr>
+<td>2276</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2282</td></tr>
+<td>2292</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2283</td></tr>
+<td>2293</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2284</td></tr>
+<td>2294</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2286</td></tr>
+<td>2296</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2398</td></tr>
+<td>2408</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2399</td></tr>
+<td>2409</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>2400</td></tr></table></div>
+<td>2410</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.KeyValueTestUtil.java">org/apache/hadoop/hbase/KeyValueTestUtil.java</h3>
 <table border="0" class="table table-striped">
@@ -15344,269 +15344,263 @@
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>525</td></tr>
+<td>656</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>529</td></tr>
+<td>679</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>555</td></tr>
+<td>688</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>564</td></tr>
+<td>697</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>573</td></tr>
+<td>698</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>574</td></tr>
+<td>699</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>575</td></tr>
+<td>718</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>594</td></tr>
+<td>727</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>603</td></tr>
+<td>728</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>604</td></tr>
+<td>731</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
-<td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
-<td>At-clause should have a non-empty description.</td>
-<td>607</td></tr>
-<tr class="a">
-<td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>612</td></tr></table></div>
+<td>736</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.LocalHBaseCluster.java">org/apache/hadoop/hbase/LocalHBaseCluster.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.conf.Configuration' import.</td>
 <td>30</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'java.util.concurrent.CopyOnWriteArrayList' import.</td>
 <td>39</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
 <td>63</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>77</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>78</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>81</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>88</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>90</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>93</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>101</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>104</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>108</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 105).</td>
 <td>114</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>128</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>131</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>132</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>133</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>139</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>194</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>208</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>223</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>235</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>246</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>262</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>263</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>269</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'else' construct must use '{}'s.</td>
 <td>270</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>341</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>342</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 104).</td>
 <td>431</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>437</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -15615,31 +15609,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.MetaMockingUtil.java">org/apache/hadoop/hbase/MetaMockingUtil.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
 <td>Utility classes should not have a public or default constructor.</td>
 <td>32</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>39</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>52</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -15648,13 +15642,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.MetaMutationAnnotation.java">org/apache/hadoop/hbase/MetaMutationAnnotation.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
@@ -15663,403 +15657,403 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.MetaTableAccessor.java">org/apache/hadoop/hbase/MetaTableAccessor.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
 <td>Utility classes should not have a public or default constructor.</td>
 <td>140</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>169</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>262</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>277</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def rcurly' has incorrect indentation level 1, expected level should be 2.</td>
 <td>389</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>400</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>435</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>445</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>476</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>477</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>478</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>479</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>480</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>481</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>482</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>483</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>484</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>485</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>499</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>500</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>501</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>502</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>503</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>504</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>505</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>506</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>507</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 4, expected level should be 6.</td>
 <td>508</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>509</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>510</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>511</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 6, expected level should be 8.</td>
 <td>512</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
 <td>526</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>560</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>574</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>596</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>624</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>625</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'getServerUserRegions' has incorrect indentation level 2, expected level should be 4.</td>
 <td>628</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>636</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>638</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>657</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>664</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>767</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>769</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>770</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>944</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>949</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>967</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>974</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>978</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>980</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>988</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>996</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>1054</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>1064</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>1078</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1092</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1110</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>1119</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1132</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>1168</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>1196</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1445</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1534</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -16068,157 +16062,157 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.MiniHBaseCluster.java">org/apache/hadoop/hbase/MiniHBaseCluster.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>66</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>69</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>78</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>103</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>104</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>235</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>401</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>475</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>476</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>477</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>492</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>584</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>585</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>586</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>601</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>614</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>InnerAssignment</td>
 <td>Inner assignments should be avoided.</td>
 <td>620</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>721</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>734</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>749</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>764</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>797</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>807</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>828</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -16227,25 +16221,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.MultithreadedTestUtil.java">org/apache/hadoop/hbase/MultithreadedTestUtil.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>70</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>84</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -16254,25 +16248,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.NamespaceDescriptor.java">org/apache/hadoop/hbase/NamespaceDescriptor.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>FinalClass</td>
 <td>Class NamespaceDescriptor should be declared as final.</td>
 <td>39</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>FinalClass</td>
 <td>Class Builder should be declared as final.</td>
 <td>162</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -16281,13 +16275,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.NotAllMetaRegionsOnlineException.java">org/apache/hadoop/hbase/NotAllMetaRegionsOnlineException.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -16296,13 +16290,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.NotServingRegionException.java">org/apache/hadoop/hbase/NotServingRegionException.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -16311,241 +16305,241 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.PerformanceEvaluation.java">org/apache/hadoop/hbase/PerformanceEvaluation.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>259</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child has incorrect indentation level 11, expected level should be one of the following: 10, 12.</td>
 <td>307</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 105).</td>
 <td>323</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>428</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>481</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method call rparen' has incorrect indentation level 6, expected level should be 4.</td>
 <td>571</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>596</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>UpperEll</td>
 <td>Should use uppercase 'L'.</td>
 <td>711</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>UpperEll</td>
 <td>Should use uppercase 'L'.</td>
 <td>711</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>UpperEll</td>
 <td>Should use uppercase 'L'.</td>
 <td>711</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>1173</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
 <td>1174</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>1178</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>1187</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>1192</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 103).</td>
 <td>1247</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 106).</td>
 <td>1250</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>1341</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>1343</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td>1349</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>1478</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 102).</td>
 <td>1484</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>InnerAssignment</td>
 <td>Inner assignments should be avoided.</td>
 <td>1742</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>InnerAssignment</td>
 <td>Inner assignments should be avoided.</td>
 <td>1790</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>1900</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>UpperEll</td>
 <td>Should use uppercase 'L'.</td>
 <td>2032</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>2169</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>InnerAssignment</td>
 <td>Inner assignments should be avoided.</td>
 <td>2228</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 110).</td>
 <td>2270</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>2385</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>2386</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
 <td>2418</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 103).</td>
 <td>2471</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 106).</td>
 <td>2485</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 118).</td>
 <td>2489</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 116).</td>
 <td>2493</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method length is 305 lines (max allowed is 150).</td>
 <td>2522</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>2688</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
@@ -16554,13 +16548,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.PerformanceEvaluationCommons.java">org/apache/hadoop/hbase/PerformanceEvaluationCommons.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
@@ -16569,409 +16563,409 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.PrivateCellUtil.java">org/apache/hadoop/hbase/PrivateCellUtil.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>843</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>844</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>845</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>863</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>864</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>865</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>984</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>985</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>986</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>987</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>988</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1010</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1203</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1204</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1214</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1215</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1228</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1229</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1243</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1244</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1281</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>1282</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>2140</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>2141</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>2142</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>2175</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>2190</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>2266</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>2267</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>2281</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>2282</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>2296</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>2312</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>2313</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>2328</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>2346</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>2362</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>2378</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>2395</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>2415</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>2431</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>2448</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>2452</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>2455</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>2459</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'else' construct must use '{}'s.</td>
 <td>2460</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>2465</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>2478</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>2491</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>2504</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>2517</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>2596</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>2735</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>2753</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>2761</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>2776</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>2787</td><

<TRUNCATED>

[16/29] hbase-site git commit: Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.html b/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.html
index 6428b67..65c197f 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.html
@@ -260,2307 +260,2317 @@
 <span class="sourceLineNo">252</span>    }<a name="line.252"></a>
 <span class="sourceLineNo">253</span><a name="line.253"></a>
 <span class="sourceLineNo">254</span>    /**<a name="line.254"></a>
-<span class="sourceLineNo">255</span>     * Cannot rely on enum ordinals . They change if item is removed or moved.<a name="line.255"></a>
-<span class="sourceLineNo">256</span>     * Do our own codes.<a name="line.256"></a>
-<span class="sourceLineNo">257</span>     * @param b<a name="line.257"></a>
-<span class="sourceLineNo">258</span>     * @return Type associated with passed code.<a name="line.258"></a>
-<span class="sourceLineNo">259</span>     */<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    public static Type codeToType(final byte b) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      Type t = codeArray[b &amp; 0xff];<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      if (t != null) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        return t;<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      }<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      throw new RuntimeException("Unknown code " + b);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span>  }<a name="line.267"></a>
-<span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>  /**<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   * Lowest possible key.<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   * Makes a Key with highest possible Timestamp, empty row and column.  No<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   * key can be equal or lower than this one in memstore or in store file.<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   */<a name="line.273"></a>
-<span class="sourceLineNo">274</span>  public static final KeyValue LOWESTKEY =<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    new KeyValue(HConstants.EMPTY_BYTE_ARRAY, HConstants.LATEST_TIMESTAMP);<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>  ////<a name="line.277"></a>
-<span class="sourceLineNo">278</span>  // KeyValue core instance fields.<a name="line.278"></a>
-<span class="sourceLineNo">279</span>  protected byte [] bytes = null;  // an immutable byte array that contains the KV<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  protected int offset = 0;  // offset into bytes buffer KV starts at<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  protected int length = 0;  // length of the KV starting from offset.<a name="line.281"></a>
-<span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  /** Here be dragons **/<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>  /**<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   * used to achieve atomic operations in the memstore.<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   */<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  @Override<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  public long getSequenceId() {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    return seqId;<a name="line.290"></a>
-<span class="sourceLineNo">291</span>  }<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>  @Override<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  public void setSequenceId(long seqId) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    this.seqId = seqId;<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  }<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>  // multi-version concurrency control version.  default value is 0, aka do not care.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>  private long seqId = 0;<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>  /** Dragon time over, return to normal business */<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>  /** Writable Constructor -- DO NOT USE */<a name="line.304"></a>
-<span class="sourceLineNo">305</span>  public KeyValue() {}<a name="line.305"></a>
+<span class="sourceLineNo">255</span>     * True to indicate that the byte b is a valid type.<a name="line.255"></a>
+<span class="sourceLineNo">256</span>     * @param b byte to check<a name="line.256"></a>
+<span class="sourceLineNo">257</span>     * @return true or false<a name="line.257"></a>
+<span class="sourceLineNo">258</span>     */<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    static boolean isValidType(byte b) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      return codeArray[b &amp; 0xff] != null;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    }<a name="line.261"></a>
+<span class="sourceLineNo">262</span><a name="line.262"></a>
+<span class="sourceLineNo">263</span>    /**<a name="line.263"></a>
+<span class="sourceLineNo">264</span>     * Cannot rely on enum ordinals . They change if item is removed or moved.<a name="line.264"></a>
+<span class="sourceLineNo">265</span>     * Do our own codes.<a name="line.265"></a>
+<span class="sourceLineNo">266</span>     * @param b<a name="line.266"></a>
+<span class="sourceLineNo">267</span>     * @return Type associated with passed code.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>     */<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    public static Type codeToType(final byte b) {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      Type t = codeArray[b &amp; 0xff];<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      if (t != null) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        return t;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      throw new RuntimeException("Unknown code " + b);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  }<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>  /**<a name="line.278"></a>
+<span class="sourceLineNo">279</span>   * Lowest possible key.<a name="line.279"></a>
+<span class="sourceLineNo">280</span>   * Makes a Key with highest possible Timestamp, empty row and column.  No<a name="line.280"></a>
+<span class="sourceLineNo">281</span>   * key can be equal or lower than this one in memstore or in store file.<a name="line.281"></a>
+<span class="sourceLineNo">282</span>   */<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  public static final KeyValue LOWESTKEY =<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    new KeyValue(HConstants.EMPTY_BYTE_ARRAY, HConstants.LATEST_TIMESTAMP);<a name="line.284"></a>
+<span class="sourceLineNo">285</span><a name="line.285"></a>
+<span class="sourceLineNo">286</span>  ////<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  // KeyValue core instance fields.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  protected byte [] bytes = null;  // an immutable byte array that contains the KV<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  protected int offset = 0;  // offset into bytes buffer KV starts at<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  protected int length = 0;  // length of the KV starting from offset.<a name="line.290"></a>
+<span class="sourceLineNo">291</span><a name="line.291"></a>
+<span class="sourceLineNo">292</span>  /** Here be dragons **/<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>  /**<a name="line.294"></a>
+<span class="sourceLineNo">295</span>   * used to achieve atomic operations in the memstore.<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   */<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  @Override<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  public long getSequenceId() {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    return seqId;<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>
+<span class="sourceLineNo">303</span>  public void setSequenceId(long seqId) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    this.seqId = seqId;<a name="line.304"></a>
+<span class="sourceLineNo">305</span>  }<a name="line.305"></a>
 <span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>  /**<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * Creates a KeyValue from the start of the specified byte array.<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * Presumes &lt;code&gt;bytes&lt;/code&gt; content is formatted as a KeyValue blob.<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * @param bytes byte array<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   */<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  public KeyValue(final byte [] bytes) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    this(bytes, 0);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
+<span class="sourceLineNo">307</span>  // multi-version concurrency control version.  default value is 0, aka do not care.<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  private long seqId = 0;<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>  /** Dragon time over, return to normal business */<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>  /** Writable Constructor -- DO NOT USE */<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  public KeyValue() {}<a name="line.314"></a>
 <span class="sourceLineNo">315</span><a name="line.315"></a>
 <span class="sourceLineNo">316</span>  /**<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * Creates a KeyValue from the specified byte array and offset.<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * Presumes &lt;code&gt;bytes&lt;/code&gt; content starting at &lt;code&gt;offset&lt;/code&gt; is<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * formatted as a KeyValue blob.<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   * @param bytes byte array<a name="line.320"></a>
-<span class="sourceLineNo">321</span>   * @param offset offset to start of KeyValue<a name="line.321"></a>
-<span class="sourceLineNo">322</span>   */<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  public KeyValue(final byte [] bytes, final int offset) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    this(bytes, offset, getLength(bytes, offset));<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  }<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>  /**<a name="line.327"></a>
-<span class="sourceLineNo">328</span>   * Creates a KeyValue from the specified byte array, starting at offset, and<a name="line.328"></a>
-<span class="sourceLineNo">329</span>   * for length &lt;code&gt;length&lt;/code&gt;.<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   * @param bytes byte array<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   * @param offset offset to start of the KeyValue<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   * @param length length of the KeyValue<a name="line.332"></a>
-<span class="sourceLineNo">333</span>   */<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  public KeyValue(final byte [] bytes, final int offset, final int length) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    this.bytes = bytes;<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    this.offset = offset;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    this.length = length;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  }<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>  /**<a name="line.340"></a>
-<span class="sourceLineNo">341</span>   * Creates a KeyValue from the specified byte array, starting at offset, and<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   * for length &lt;code&gt;length&lt;/code&gt;.<a name="line.342"></a>
-<span class="sourceLineNo">343</span>   *<a name="line.343"></a>
-<span class="sourceLineNo">344</span>   * @param bytes  byte array<a name="line.344"></a>
-<span class="sourceLineNo">345</span>   * @param offset offset to start of the KeyValue<a name="line.345"></a>
-<span class="sourceLineNo">346</span>   * @param length length of the KeyValue<a name="line.346"></a>
-<span class="sourceLineNo">347</span>   * @param ts<a name="line.347"></a>
-<span class="sourceLineNo">348</span>   */<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  public KeyValue(final byte[] bytes, final int offset, final int length, long ts) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    this(bytes, offset, length, null, 0, 0, null, 0, 0, ts, Type.Maximum, null, 0, 0, null);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  /** Constructors that build a new backing byte array from fields */<a name="line.353"></a>
-<span class="sourceLineNo">354</span><a name="line.354"></a>
-<span class="sourceLineNo">355</span>  /**<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   * Constructs KeyValue structure filled with null value.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   * Sets type to {@link KeyValue.Type#Maximum}<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   * @param row - row key (arbitrary byte array)<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   * @param timestamp<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   */<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  public KeyValue(final byte [] row, final long timestamp) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    this(row, null, null, timestamp, Type.Maximum, null);<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  }<a name="line.363"></a>
+<span class="sourceLineNo">317</span>   * Creates a KeyValue from the start of the specified byte array.<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * Presumes &lt;code&gt;bytes&lt;/code&gt; content is formatted as a KeyValue blob.<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * @param bytes byte array<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   */<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  public KeyValue(final byte [] bytes) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    this(bytes, 0);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  }<a name="line.323"></a>
+<span class="sourceLineNo">324</span><a name="line.324"></a>
+<span class="sourceLineNo">325</span>  /**<a name="line.325"></a>
+<span class="sourceLineNo">326</span>   * Creates a KeyValue from the specified byte array and offset.<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   * Presumes &lt;code&gt;bytes&lt;/code&gt; content starting at &lt;code&gt;offset&lt;/code&gt; is<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   * formatted as a KeyValue blob.<a name="line.328"></a>
+<span class="sourceLineNo">329</span>   * @param bytes byte array<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   * @param offset offset to start of KeyValue<a name="line.330"></a>
+<span class="sourceLineNo">331</span>   */<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  public KeyValue(final byte [] bytes, final int offset) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    this(bytes, offset, getLength(bytes, offset));<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  }<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>  /**<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   * Creates a KeyValue from the specified byte array, starting at offset, and<a name="line.337"></a>
+<span class="sourceLineNo">338</span>   * for length &lt;code&gt;length&lt;/code&gt;.<a name="line.338"></a>
+<span class="sourceLineNo">339</span>   * @param bytes byte array<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   * @param offset offset to start of the KeyValue<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * @param length length of the KeyValue<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   */<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  public KeyValue(final byte[] bytes, final int offset, final int length) {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    KeyValueUtil.checkKeyValueBytes(bytes, offset, length, true);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    this.bytes = bytes;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    this.offset = offset;<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    this.length = length;<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>  /**<a name="line.350"></a>
+<span class="sourceLineNo">351</span>   * Creates a KeyValue from the specified byte array, starting at offset, and<a name="line.351"></a>
+<span class="sourceLineNo">352</span>   * for length &lt;code&gt;length&lt;/code&gt;.<a name="line.352"></a>
+<span class="sourceLineNo">353</span>   *<a name="line.353"></a>
+<span class="sourceLineNo">354</span>   * @param bytes  byte array<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * @param offset offset to start of the KeyValue<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * @param length length of the KeyValue<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * @param ts<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   */<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  public KeyValue(final byte[] bytes, final int offset, final int length, long ts) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    this(bytes, offset, length, null, 0, 0, null, 0, 0, ts, Type.Maximum, null, 0, 0, null);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  }<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>  /** Constructors that build a new backing byte array from fields */<a name="line.363"></a>
 <span class="sourceLineNo">364</span><a name="line.364"></a>
 <span class="sourceLineNo">365</span>  /**<a name="line.365"></a>
 <span class="sourceLineNo">366</span>   * Constructs KeyValue structure filled with null value.<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   * @param row - row key (arbitrary byte array)<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   * @param timestamp<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   */<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public KeyValue(final byte [] row, final long timestamp, Type type) {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    this(row, null, null, timestamp, type, null);<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  /**<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   * Constructs KeyValue structure filled with null value.<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   * Sets type to {@link KeyValue.Type#Maximum}<a name="line.376"></a>
+<span class="sourceLineNo">367</span>   * Sets type to {@link KeyValue.Type#Maximum}<a name="line.367"></a>
+<span class="sourceLineNo">368</span>   * @param row - row key (arbitrary byte array)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>   * @param timestamp<a name="line.369"></a>
+<span class="sourceLineNo">370</span>   */<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  public KeyValue(final byte [] row, final long timestamp) {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    this(row, null, null, timestamp, Type.Maximum, null);<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>   * Constructs KeyValue structure filled with null value.<a name="line.376"></a>
 <span class="sourceLineNo">377</span>   * @param row - row key (arbitrary byte array)<a name="line.377"></a>
-<span class="sourceLineNo">378</span>   * @param family family name<a name="line.378"></a>
-<span class="sourceLineNo">379</span>   * @param qualifier column qualifier<a name="line.379"></a>
-<span class="sourceLineNo">380</span>   */<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  public KeyValue(final byte [] row, final byte [] family,<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      final byte [] qualifier) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    this(row, family, qualifier, HConstants.LATEST_TIMESTAMP, Type.Maximum);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  }<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span>  /**<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   * Constructs KeyValue structure as a put filled with specified values and<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * LATEST_TIMESTAMP.<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * @param row - row key (arbitrary byte array)<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   * @param family family name<a name="line.390"></a>
-<span class="sourceLineNo">391</span>   * @param qualifier column qualifier<a name="line.391"></a>
-<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  public KeyValue(final byte [] row, final byte [] family,<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      final byte [] qualifier, final byte [] value) {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    this(row, family, qualifier, HConstants.LATEST_TIMESTAMP, Type.Put, value);<a name="line.395"></a>
-<span class="sourceLineNo">396</span>  }<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>  /**<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * Constructs KeyValue structure filled with specified values.<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * @param row row key<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * @param family family name<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @param qualifier column qualifier<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * @param timestamp version timestamp<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * @param type key type<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   * @throws IllegalArgumentException<a name="line.405"></a>
-<span class="sourceLineNo">406</span>   */<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      final byte[] qualifier, final long timestamp, Type type) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    this(row, family, qualifier, timestamp, type, null);<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>   * Constructs KeyValue structure filled with specified values.<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * @param row row key<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * @param family family name<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * @param qualifier column qualifier<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @param timestamp version timestamp<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @param value column value<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * @throws IllegalArgumentException<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   */<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      final byte[] qualifier, final long timestamp, final byte[] value) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    this(row, family, qualifier, timestamp, Type.Put, value);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>  }<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span>  /**<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * Constructs KeyValue structure filled with specified values.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * @param row row key<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * @param family family name<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   * @param qualifier column qualifier<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   * @param timestamp version timestamp<a name="line.431"></a>
-<span class="sourceLineNo">432</span>   * @param value column value<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   * @param tags tags<a name="line.433"></a>
-<span class="sourceLineNo">434</span>   * @throws IllegalArgumentException<a name="line.434"></a>
-<span class="sourceLineNo">435</span>   */<a name="line.435"></a>
-<span class="sourceLineNo">436</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      final byte[] qualifier, final long timestamp, final byte[] value,<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      final Tag[] tags) {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    this(row, family, qualifier, timestamp, value, tags != null ? Arrays.asList(tags) : null);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>  }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * Constructs KeyValue structure filled with specified values.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * @param row row key<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   * @param family family name<a name="line.445"></a>
-<span class="sourceLineNo">446</span>   * @param qualifier column qualifier<a name="line.446"></a>
-<span class="sourceLineNo">447</span>   * @param timestamp version timestamp<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * @param value column value<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   * @param tags tags non-empty list of tags or null<a name="line.449"></a>
-<span class="sourceLineNo">450</span>   * @throws IllegalArgumentException<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   */<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      final byte[] qualifier, final long timestamp, final byte[] value,<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      final List&lt;Tag&gt; tags) {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.455"></a>
-<span class="sourceLineNo">456</span>      family, 0, family==null ? 0 : family.length,<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      timestamp, Type.Put,<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      value, 0, value==null ? 0 : value.length, tags);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>  }<a name="line.460"></a>
-<span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>  /**<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * Constructs KeyValue structure filled with specified values.<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * @param row row key<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   * @param family family name<a name="line.465"></a>
-<span class="sourceLineNo">466</span>   * @param qualifier column qualifier<a name="line.466"></a>
-<span class="sourceLineNo">467</span>   * @param timestamp version timestamp<a name="line.467"></a>
-<span class="sourceLineNo">468</span>   * @param type key type<a name="line.468"></a>
-<span class="sourceLineNo">469</span>   * @param value column value<a name="line.469"></a>
-<span class="sourceLineNo">470</span>   * @throws IllegalArgumentException<a name="line.470"></a>
-<span class="sourceLineNo">471</span>   */<a name="line.471"></a>
-<span class="sourceLineNo">472</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      final byte[] value) {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    this(row, 0, len(row),   family, 0, len(family),   qualifier, 0, len(qualifier),<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        timestamp, type,   value, 0, len(value));<a name="line.476"></a>
-<span class="sourceLineNo">477</span>  }<a name="line.477"></a>
-<span class="sourceLineNo">478</span><a name="line.478"></a>
-<span class="sourceLineNo">479</span>  /**<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * Constructs KeyValue structure filled with specified values.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * &lt;p&gt;<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * Column is split into two fields, family and qualifier.<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * @param row row key<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   * @param family family name<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   * @param qualifier column qualifier<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * @param timestamp version timestamp<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * @param type key type<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * @param value column value<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   * @throws IllegalArgumentException<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   */<a name="line.490"></a>
-<span class="sourceLineNo">491</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      final byte[] value, final List&lt;Tag&gt; tags) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    this(row, family, qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.494"></a>
-<span class="sourceLineNo">495</span>        timestamp, type, value, 0, value==null ? 0 : value.length, tags);<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>  /**<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   * Constructs KeyValue structure filled with specified values.<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   * @param row row key<a name="line.500"></a>
-<span class="sourceLineNo">501</span>   * @param family family name<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   * @param qualifier column qualifier<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   * @param timestamp version timestamp<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   * @param type key type<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @param value column value<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * @throws IllegalArgumentException<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   */<a name="line.507"></a>
-<span class="sourceLineNo">508</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      final byte[] value, final byte[] tags) {<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    this(row, family, qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.511"></a>
-<span class="sourceLineNo">512</span>        timestamp, type, value, 0, value==null ? 0 : value.length, tags);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>  }<a name="line.513"></a>
-<span class="sourceLineNo">514</span><a name="line.514"></a>
-<span class="sourceLineNo">515</span>  /**<a name="line.515"></a>
-<span class="sourceLineNo">516</span>   * Constructs KeyValue structure filled with specified values.<a name="line.516"></a>
-<span class="sourceLineNo">517</span>   * @param row row key<a name="line.517"></a>
-<span class="sourceLineNo">518</span>   * @param family family name<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * @param qualifier column qualifier<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   * @param qoffset qualifier offset<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * @param qlength qualifier length<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   * @param timestamp version timestamp<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   * @param type key type<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   * @param value column value<a name="line.524"></a>
-<span class="sourceLineNo">525</span>   * @param voffset value offset<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * @param vlength value length<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * @throws IllegalArgumentException<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   */<a name="line.528"></a>
-<span class="sourceLineNo">529</span>  public KeyValue(byte [] row, byte [] family,<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      byte [] qualifier, int qoffset, int qlength, long timestamp, Type type,<a name="line.530"></a>
-<span class="sourceLineNo">531</span>      byte [] value, int voffset, int vlength, List&lt;Tag&gt; tags) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.532"></a>
-<span class="sourceLineNo">533</span>        family, 0, family==null ? 0 : family.length,<a name="line.533"></a>
-<span class="sourceLineNo">534</span>        qualifier, qoffset, qlength, timestamp, type,<a name="line.534"></a>
-<span class="sourceLineNo">535</span>        value, voffset, vlength, tags);<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  }<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>  /**<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * @param row<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   * @param family<a name="line.540"></a>
-<span class="sourceLineNo">541</span>   * @param qualifier<a name="line.541"></a>
-<span class="sourceLineNo">542</span>   * @param qoffset<a name="line.542"></a>
-<span class="sourceLineNo">543</span>   * @param qlength<a name="line.543"></a>
-<span class="sourceLineNo">544</span>   * @param timestamp<a name="line.544"></a>
-<span class="sourceLineNo">545</span>   * @param type<a name="line.545"></a>
-<span class="sourceLineNo">546</span>   * @param value<a name="line.546"></a>
-<span class="sourceLineNo">547</span>   * @param voffset<a name="line.547"></a>
-<span class="sourceLineNo">548</span>   * @param vlength<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * @param tags<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   */<a name="line.550"></a>
-<span class="sourceLineNo">551</span>  public KeyValue(byte [] row, byte [] family,<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      byte [] qualifier, int qoffset, int qlength, long timestamp, Type type,<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      byte [] value, int voffset, int vlength, byte[] tags) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.554"></a>
-<span class="sourceLineNo">555</span>        family, 0, family==null ? 0 : family.length,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>        qualifier, qoffset, qlength, timestamp, type,<a name="line.556"></a>
-<span class="sourceLineNo">557</span>        value, voffset, vlength, tags, 0, tags==null ? 0 : tags.length);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>  }<a name="line.558"></a>
-<span class="sourceLineNo">559</span><a name="line.559"></a>
-<span class="sourceLineNo">560</span>  /**<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   * Constructs KeyValue structure filled with specified values.<a name="line.561"></a>
-<span class="sourceLineNo">562</span>   * &lt;p&gt;<a name="line.562"></a>
-<span class="sourceLineNo">563</span>   * Column is split into two fields, family and qualifier.<a name="line.563"></a>
-<span class="sourceLineNo">564</span>   * @param row row key<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   * @throws IllegalArgumentException<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   */<a name="line.566"></a>
-<span class="sourceLineNo">567</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      final byte [] family, final int foffset, final int flength,<a name="line.568"></a>
-<span class="sourceLineNo">569</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      final long timestamp, final Type type,<a name="line.570"></a>
-<span class="sourceLineNo">571</span>      final byte [] value, final int voffset, final int vlength) {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    this(row, roffset, rlength, family, foffset, flength, qualifier, qoffset,<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      qlength, timestamp, type, value, voffset, vlength, null);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>  }<a name="line.574"></a>
-<span class="sourceLineNo">575</span><a name="line.575"></a>
-<span class="sourceLineNo">576</span>  /**<a name="line.576"></a>
-<span class="sourceLineNo">577</span>   * Constructs KeyValue structure filled with specified values. Uses the provided buffer as the<a name="line.577"></a>
-<span class="sourceLineNo">578</span>   * data buffer.<a name="line.578"></a>
-<span class="sourceLineNo">579</span>   * &lt;p&gt;<a name="line.579"></a>
-<span class="sourceLineNo">580</span>   * Column is split into two fields, family and qualifier.<a name="line.580"></a>
-<span class="sourceLineNo">581</span>   *<a name="line.581"></a>
-<span class="sourceLineNo">582</span>   * @param buffer the bytes buffer to use<a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * @param boffset buffer offset<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   * @param row row key<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   * @param roffset row offset<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   * @param rlength row length<a name="line.586"></a>
-<span class="sourceLineNo">587</span>   * @param family family name<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   * @param foffset family offset<a name="line.588"></a>
-<span class="sourceLineNo">589</span>   * @param flength family length<a name="line.589"></a>
-<span class="sourceLineNo">590</span>   * @param qualifier column qualifier<a name="line.590"></a>
-<span class="sourceLineNo">591</span>   * @param qoffset qualifier offset<a name="line.591"></a>
-<span class="sourceLineNo">592</span>   * @param qlength qualifier length<a name="line.592"></a>
-<span class="sourceLineNo">593</span>   * @param timestamp version timestamp<a name="line.593"></a>
-<span class="sourceLineNo">594</span>   * @param type key type<a name="line.594"></a>
-<span class="sourceLineNo">595</span>   * @param value column value<a name="line.595"></a>
-<span class="sourceLineNo">596</span>   * @param voffset value offset<a name="line.596"></a>
-<span class="sourceLineNo">597</span>   * @param vlength value length<a name="line.597"></a>
-<span class="sourceLineNo">598</span>   * @param tags non-empty list of tags or null<a name="line.598"></a>
-<span class="sourceLineNo">599</span>   * @throws IllegalArgumentException an illegal value was passed or there is insufficient space<a name="line.599"></a>
-<span class="sourceLineNo">600</span>   * remaining in the buffer<a name="line.600"></a>
-<span class="sourceLineNo">601</span>   */<a name="line.601"></a>
-<span class="sourceLineNo">602</span>  public KeyValue(byte [] buffer, final int boffset,<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      final byte [] row, final int roffset, final int rlength,<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      final byte [] family, final int foffset, final int flength,<a name="line.604"></a>
-<span class="sourceLineNo">605</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.605"></a>
-<span class="sourceLineNo">606</span>      final long timestamp, final Type type,<a name="line.606"></a>
-<span class="sourceLineNo">607</span>      final byte [] value, final int voffset, final int vlength,<a name="line.607"></a>
-<span class="sourceLineNo">608</span>      final Tag[] tags) {<a name="line.608"></a>
-<span class="sourceLineNo">609</span>     this.bytes  = buffer;<a name="line.609"></a>
-<span class="sourceLineNo">610</span>     this.length = writeByteArray(buffer, boffset,<a name="line.610"></a>
-<span class="sourceLineNo">611</span>         row, roffset, rlength,<a name="line.611"></a>
-<span class="sourceLineNo">612</span>         family, foffset, flength, qualifier, qoffset, qlength,<a name="line.612"></a>
-<span class="sourceLineNo">613</span>        timestamp, type, value, voffset, vlength, tags);<a name="line.613"></a>
-<span class="sourceLineNo">614</span>     this.offset = boffset;<a name="line.614"></a>
-<span class="sourceLineNo">615</span>   }<a name="line.615"></a>
-<span class="sourceLineNo">616</span><a name="line.616"></a>
-<span class="sourceLineNo">617</span>  /**<a name="line.617"></a>
-<span class="sourceLineNo">618</span>   * Constructs KeyValue structure filled with specified values.<a name="line.618"></a>
-<span class="sourceLineNo">619</span>   * &lt;p&gt;<a name="line.619"></a>
-<span class="sourceLineNo">620</span>   * Column is split into two fields, family and qualifier.<a name="line.620"></a>
-<span class="sourceLineNo">621</span>   * @param row row key<a name="line.621"></a>
-<span class="sourceLineNo">622</span>   * @param roffset row offset<a name="line.622"></a>
-<span class="sourceLineNo">623</span>   * @param rlength row length<a name="line.623"></a>
-<span class="sourceLineNo">624</span>   * @param family family name<a name="line.624"></a>
-<span class="sourceLineNo">625</span>   * @param foffset family offset<a name="line.625"></a>
-<span class="sourceLineNo">626</span>   * @param flength family length<a name="line.626"></a>
-<span class="sourceLineNo">627</span>   * @param qualifier column qualifier<a name="line.627"></a>
-<span class="sourceLineNo">628</span>   * @param qoffset qualifier offset<a name="line.628"></a>
-<span class="sourceLineNo">629</span>   * @param qlength qualifier length<a name="line.629"></a>
-<span class="sourceLineNo">630</span>   * @param timestamp version timestamp<a name="line.630"></a>
-<span class="sourceLineNo">631</span>   * @param type key type<a name="line.631"></a>
-<span class="sourceLineNo">632</span>   * @param value column value<a name="line.632"></a>
-<span class="sourceLineNo">633</span>   * @param voffset value offset<a name="line.633"></a>
-<span class="sourceLineNo">634</span>   * @param vlength value length<a name="line.634"></a>
-<span class="sourceLineNo">635</span>   * @param tags tags<a name="line.635"></a>
-<span class="sourceLineNo">636</span>   * @throws IllegalArgumentException<a name="line.636"></a>
-<span class="sourceLineNo">637</span>   */<a name="line.637"></a>
-<span class="sourceLineNo">638</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      final byte [] family, final int foffset, final int flength,<a name="line.639"></a>
-<span class="sourceLineNo">640</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      final long timestamp, final Type type,<a name="line.641"></a>
-<span class="sourceLineNo">642</span>      final byte [] value, final int voffset, final int vlength,<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      final List&lt;Tag&gt; tags) {<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    this.bytes = createByteArray(row, roffset, rlength,<a name="line.644"></a>
-<span class="sourceLineNo">645</span>        family, foffset, flength, qualifier, qoffset, qlength,<a name="line.645"></a>
-<span class="sourceLineNo">646</span>        timestamp, type, value, voffset, vlength, tags);<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    this.length = bytes.length;<a name="line.647"></a>
-<span class="sourceLineNo">648</span>    this.offset = 0;<a name="line.648"></a>
-<span class="sourceLineNo">649</span>  }<a name="line.649"></a>
-<span class="sourceLineNo">650</span><a name="line.650"></a>
-<span class="sourceLineNo">651</span>  /**<a name="line.651"></a>
-<span class="sourceLineNo">652</span>   * @param row<a name="line.652"></a>
-<span class="sourceLineNo">653</span>   * @param roffset<a name="line.653"></a>
-<span class="sourceLineNo">654</span>   * @param rlength<a name="line.654"></a>
-<span class="sourceLineNo">655</span>   * @param family<a name="line.655"></a>
-<span class="sourceLineNo">656</span>   * @param foffset<a name="line.656"></a>
-<span class="sourceLineNo">657</span>   * @param flength<a name="line.657"></a>
-<span class="sourceLineNo">658</span>   * @param qualifier<a name="line.658"></a>
-<span class="sourceLineNo">659</span>   * @param qoffset<a name="line.659"></a>
-<span class="sourceLineNo">660</span>   * @param qlength<a name="line.660"></a>
-<span class="sourceLineNo">661</span>   * @param timestamp<a name="line.661"></a>
-<span class="sourceLineNo">662</span>   * @param type<a name="line.662"></a>
-<span class="sourceLineNo">663</span>   * @param value<a name="line.663"></a>
-<span class="sourceLineNo">664</span>   * @param voffset<a name="line.664"></a>
-<span class="sourceLineNo">665</span>   * @param vlength<a name="line.665"></a>
-<span class="sourceLineNo">666</span>   * @param tags<a name="line.666"></a>
-<span class="sourceLineNo">667</span>   */<a name="line.667"></a>
-<span class="sourceLineNo">668</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.668"></a>
-<span class="sourceLineNo">669</span>      final byte [] family, final int foffset, final int flength,<a name="line.669"></a>
-<span class="sourceLineNo">670</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.670"></a>
-<span class="sourceLineNo">671</span>      final long timestamp, final Type type,<a name="line.671"></a>
-<span class="sourceLineNo">672</span>      final byte [] value, final int voffset, final int vlength,<a name="line.672"></a>
-<span class="sourceLineNo">673</span>      final byte[] tags, final int tagsOffset, final int tagsLength) {<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    this.bytes = createByteArray(row, roffset, rlength,<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        family, foffset, flength, qualifier, qoffset, qlength,<a name="line.675"></a>
-<span class="sourceLineNo">676</span>        timestamp, type, value, voffset, vlength, tags, tagsOffset, tagsLength);<a name="line.676"></a>
-<span class="sourceLineNo">677</span>    this.length = bytes.length;<a name="line.677"></a>
-<span class="sourceLineNo">678</span>    this.offset = 0;<a name="line.678"></a>
-<span class="sourceLineNo">679</span>  }<a name="line.679"></a>
-<span class="sourceLineNo">680</span><a name="line.680"></a>
-<span class="sourceLineNo">681</span>  /**<a name="line.681"></a>
-<span class="sourceLineNo">682</span>   * Constructs an empty KeyValue structure, with specified sizes.<a name="line.682"></a>
-<span class="sourceLineNo">683</span>   * This can be used to partially fill up KeyValues.<a name="line.683"></a>
-<span class="sourceLineNo">684</span>   * &lt;p&gt;<a name="line.684"></a>
-<span class="sourceLineNo">685</span>   * Column is split into two fields, family and qualifier.<a name="line.685"></a>
-<span class="sourceLineNo">686</span>   * @param rlength row length<a name="line.686"></a>
-<span class="sourceLineNo">687</span>   * @param flength family length<a name="line.687"></a>
-<span class="sourceLineNo">688</span>   * @param qlength qualifier length<a name="line.688"></a>
-<span class="sourceLineNo">689</span>   * @param timestamp version timestamp<a name="line.689"></a>
-<span class="sourceLineNo">690</span>   * @param type key type<a name="line.690"></a>
-<span class="sourceLineNo">691</span>   * @param vlength value length<a name="line.691"></a>
-<span class="sourceLineNo">692</span>   * @throws IllegalArgumentException<a name="line.692"></a>
-<span class="sourceLineNo">693</span>   */<a name="line.693"></a>
-<span class="sourceLineNo">694</span>  public KeyValue(final int rlength,<a name="line.694"></a>
-<span class="sourceLineNo">695</span>      final int flength,<a name="line.695"></a>
-<span class="sourceLineNo">696</span>      final int qlength,<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      final long timestamp, final Type type,<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      final int vlength) {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>    this(rlength, flength, qlength, timestamp, type, vlength, 0);<a name="line.699"></a>
-<span class="sourceLineNo">700</span>  }<a name="line.700"></a>
-<span class="sourceLineNo">701</span><a name="line.701"></a>
-<span class="sourceLineNo">702</span>  /**<a name="line.702"></a>
-<span class="sourceLineNo">703</span>   * Constructs an empty KeyValue structure, with specified sizes.<a name="line.703"></a>
-<span class="sourceLineNo">704</span>   * This can be used to partially fill up KeyValues.<a name="line.704"></a>
-<span class="sourceLineNo">705</span>   * &lt;p&gt;<a name="line.705"></a>
-<span class="sourceLineNo">706</span>   * Column is split into two fields, family and qualifier.<a name="line.706"></a>
-<span class="sourceLineNo">707</span>   * @param rlength row length<a name="line.707"></a>
-<span class="sourceLineNo">708</span>   * @param flength family length<a name="line.708"></a>
-<span class="sourceLineNo">709</span>   * @param qlength qualifier length<a name="line.709"></a>
-<span class="sourceLineNo">710</span>   * @param timestamp version timestamp<a name="line.710"></a>
-<span class="sourceLineNo">711</span>   * @param type key type<a name="line.711"></a>
-<span class="sourceLineNo">712</span>   * @param vlength value length<a name="line.712"></a>
-<span class="sourceLineNo">713</span>   * @param tagsLength<a name="line.713"></a>
-<span class="sourceLineNo">714</span>   * @throws IllegalArgumentException<a name="line.714"></a>
-<span class="sourceLineNo">715</span>   */<a name="line.715"></a>
-<span class="sourceLineNo">716</span>  public KeyValue(final int rlength,<a name="line.716"></a>
-<span class="sourceLineNo">717</span>      final int flength,<a name="line.717"></a>
-<span class="sourceLineNo">718</span>      final int qlength,<a name="line.718"></a>
-<span class="sourceLineNo">719</span>      final long timestamp, final Type type,<a name="line.719"></a>
-<span class="sourceLineNo">720</span>      final int vlength, final int tagsLength) {<a name="line.720"></a>
-<span class="sourceLineNo">721</span>    this.bytes = createEmptyByteArray(rlength, flength, qlength, timestamp, type, vlength,<a name="line.721"></a>
-<span class="sourceLineNo">722</span>        tagsLength);<a name="line.722"></a>
-<span class="sourceLineNo">723</span>    this.length = bytes.length;<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    this.offset = 0;<a name="line.724"></a>
-<span class="sourceLineNo">725</span>  }<a name="line.725"></a>
-<span class="sourceLineNo">726</span><a name="line.726"></a>
-<span class="sourceLineNo">727</span><a name="line.727"></a>
-<span class="sourceLineNo">728</span>  public KeyValue(byte[] row, int roffset, int rlength,<a name="line.728"></a>
-<span class="sourceLineNo">729</span>                  byte[] family, int foffset, int flength,<a name="line.729"></a>
-<span class="sourceLineNo">730</span>                  ByteBuffer qualifier, long ts, Type type, ByteBuffer value, List&lt;Tag&gt; tags) {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    this.bytes = createByteArray(row, roffset, rlength, family, foffset, flength,<a name="line.731"></a>
-<span class="sourceLineNo">732</span>        qualifier, 0, qualifier == null ? 0 : qualifier.remaining(), ts, type,<a name="line.732"></a>
-<span class="sourceLineNo">733</span>        value, 0, value == null ? 0 : value.remaining(), tags);<a name="line.733"></a>
-<span class="sourceLineNo">734</span>    this.length = bytes.length;<a name="line.734"></a>
-<span class="sourceLineNo">735</span>    this.offset = 0;<a name="line.735"></a>
-<span class="sourceLineNo">736</span>  }<a name="line.736"></a>
+<span class="sourceLineNo">378</span>   * @param timestamp<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   */<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  public KeyValue(final byte [] row, final long timestamp, Type type) {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    this(row, null, null, timestamp, type, null);<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>
+<span class="sourceLineNo">385</span>   * Constructs KeyValue structure filled with null value.<a name="line.385"></a>
+<span class="sourceLineNo">386</span>   * Sets type to {@link KeyValue.Type#Maximum}<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * @param row - row key (arbitrary byte array)<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * @param family family name<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * @param qualifier column qualifier<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   */<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  public KeyValue(final byte [] row, final byte [] family,<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      final byte [] qualifier) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    this(row, family, qualifier, HConstants.LATEST_TIMESTAMP, Type.Maximum);<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>   * Constructs KeyValue structure as a put filled with specified values and<a name="line.397"></a>
+<span class="sourceLineNo">398</span>   * LATEST_TIMESTAMP.<a name="line.398"></a>
+<span class="sourceLineNo">399</span>   * @param row - row key (arbitrary byte array)<a name="line.399"></a>
+<span class="sourceLineNo">400</span>   * @param family family name<a name="line.400"></a>
+<span class="sourceLineNo">401</span>   * @param qualifier column qualifier<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
+<span class="sourceLineNo">403</span>  public KeyValue(final byte [] row, final byte [] family,<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      final byte [] qualifier, final byte [] value) {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    this(row, family, qualifier, HConstants.LATEST_TIMESTAMP, Type.Put, value);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  }<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>  /**<a name="line.408"></a>
+<span class="sourceLineNo">409</span>   * Constructs KeyValue structure filled with specified values.<a name="line.409"></a>
+<span class="sourceLineNo">410</span>   * @param row row key<a name="line.410"></a>
+<span class="sourceLineNo">411</span>   * @param family family name<a name="line.411"></a>
+<span class="sourceLineNo">412</span>   * @param qualifier column qualifier<a name="line.412"></a>
+<span class="sourceLineNo">413</span>   * @param timestamp version timestamp<a name="line.413"></a>
+<span class="sourceLineNo">414</span>   * @param type key type<a name="line.414"></a>
+<span class="sourceLineNo">415</span>   * @throws IllegalArgumentException<a name="line.415"></a>
+<span class="sourceLineNo">416</span>   */<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      final byte[] qualifier, final long timestamp, Type type) {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    this(row, family, qualifier, timestamp, type, null);<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>   * Constructs KeyValue structure filled with specified values.<a name="line.423"></a>
+<span class="sourceLineNo">424</span>   * @param row row key<a name="line.424"></a>
+<span class="sourceLineNo">425</span>   * @param family family name<a name="line.425"></a>
+<span class="sourceLineNo">426</span>   * @param qualifier column qualifier<a name="line.426"></a>
+<span class="sourceLineNo">427</span>   * @param timestamp version timestamp<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   * @param value column value<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * @throws IllegalArgumentException<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   */<a name="line.430"></a>
+<span class="sourceLineNo">431</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      final byte[] qualifier, final long timestamp, final byte[] value) {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    this(row, family, qualifier, timestamp, Type.Put, value);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  }<a name="line.434"></a>
+<span class="sourceLineNo">435</span><a name="line.435"></a>
+<span class="sourceLineNo">436</span>  /**<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   * Constructs KeyValue structure filled with specified values.<a name="line.437"></a>
+<span class="sourceLineNo">438</span>   * @param row row key<a name="line.438"></a>
+<span class="sourceLineNo">439</span>   * @param family family name<a name="line.439"></a>
+<span class="sourceLineNo">440</span>   * @param qualifier column qualifier<a name="line.440"></a>
+<span class="sourceLineNo">441</span>   * @param timestamp version timestamp<a name="line.441"></a>
+<span class="sourceLineNo">442</span>   * @param value column value<a name="line.442"></a>
+<span class="sourceLineNo">443</span>   * @param tags tags<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   * @throws IllegalArgumentException<a name="line.444"></a>
+<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
+<span class="sourceLineNo">446</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      final byte[] qualifier, final long timestamp, final byte[] value,<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      final Tag[] tags) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    this(row, family, qualifier, timestamp, value, tags != null ? Arrays.asList(tags) : null);<a name="line.449"></a>
+<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>  /**<a name="line.452"></a>
+<span class="sourceLineNo">453</span>   * Constructs KeyValue structure filled with specified values.<a name="line.453"></a>
+<span class="sourceLineNo">454</span>   * @param row row key<a name="line.454"></a>
+<span class="sourceLineNo">455</span>   * @param family family name<a name="line.455"></a>
+<span class="sourceLineNo">456</span>   * @param qualifier column qualifier<a name="line.456"></a>
+<span class="sourceLineNo">457</span>   * @param timestamp version timestamp<a name="line.457"></a>
+<span class="sourceLineNo">458</span>   * @param value column value<a name="line.458"></a>
+<span class="sourceLineNo">459</span>   * @param tags tags non-empty list of tags or null<a name="line.459"></a>
+<span class="sourceLineNo">460</span>   * @throws IllegalArgumentException<a name="line.460"></a>
+<span class="sourceLineNo">461</span>   */<a name="line.461"></a>
+<span class="sourceLineNo">462</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      final byte[] qualifier, final long timestamp, final byte[] value,<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      final List&lt;Tag&gt; tags) {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      family, 0, family==null ? 0 : family.length,<a name="line.466"></a>
+<span class="sourceLineNo">467</span>      qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      timestamp, Type.Put,<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      value, 0, value==null ? 0 : value.length, tags);<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  }<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
+<span class="sourceLineNo">472</span>  /**<a name="line.472"></a>
+<span class="sourceLineNo">473</span>   * Constructs KeyValue structure filled with specified values.<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   * @param row row key<a name="line.474"></a>
+<span class="sourceLineNo">475</span>   * @param family family name<a name="line.475"></a>
+<span class="sourceLineNo">476</span>   * @param qualifier column qualifier<a name="line.476"></a>
+<span class="sourceLineNo">477</span>   * @param timestamp version timestamp<a name="line.477"></a>
+<span class="sourceLineNo">478</span>   * @param type key type<a name="line.478"></a>
+<span class="sourceLineNo">479</span>   * @param value column value<a name="line.479"></a>
+<span class="sourceLineNo">480</span>   * @throws IllegalArgumentException<a name="line.480"></a>
+<span class="sourceLineNo">481</span>   */<a name="line.481"></a>
+<span class="sourceLineNo">482</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      final byte[] value) {<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    this(row, 0, len(row),   family, 0, len(family),   qualifier, 0, len(qualifier),<a name="line.485"></a>
+<span class="sourceLineNo">486</span>        timestamp, type,   value, 0, len(value));<a name="line.486"></a>
+<span class="sourceLineNo">487</span>  }<a name="line.487"></a>
+<span class="sourceLineNo">488</span><a name="line.488"></a>
+<span class="sourceLineNo">489</span>  /**<a name="line.489"></a>
+<span class="sourceLineNo">490</span>   * Constructs KeyValue structure filled with specified values.<a name="line.490"></a>
+<span class="sourceLineNo">491</span>   * &lt;p&gt;<a name="line.491"></a>
+<span class="sourceLineNo">492</span>   * Column is split into two fields, family and qualifier.<a name="line.492"></a>
+<span class="sourceLineNo">493</span>   * @param row row key<a name="line.493"></a>
+<span class="sourceLineNo">494</span>   * @param family family name<a name="line.494"></a>
+<span class="sourceLineNo">495</span>   * @param qualifier column qualifier<a name="line.495"></a>
+<span class="sourceLineNo">496</span>   * @param timestamp version timestamp<a name="line.496"></a>
+<span class="sourceLineNo">497</span>   * @param type key type<a name="line.497"></a>
+<span class="sourceLineNo">498</span>   * @param value column value<a name="line.498"></a>
+<span class="sourceLineNo">499</span>   * @throws IllegalArgumentException<a name="line.499"></a>
+<span class="sourceLineNo">500</span>   */<a name="line.500"></a>
+<span class="sourceLineNo">501</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.501"></a>
+<span class="sourceLineNo">502</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      final byte[] value, final List&lt;Tag&gt; tags) {<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    this(row, family, qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.504"></a>
+<span class="sourceLineNo">505</span>        timestamp, type, value, 0, value==null ? 0 : value.length, tags);<a name="line.505"></a>
+<span class="sourceLineNo">506</span>  }<a name="line.506"></a>
+<span class="sourceLineNo">507</span><a name="line.507"></a>
+<span class="sourceLineNo">508</span>  /**<a name="line.508"></a>
+<span class="sourceLineNo">509</span>   * Constructs KeyValue structure filled with specified values.<a name="line.509"></a>
+<span class="sourceLineNo">510</span>   * @param row row key<a name="line.510"></a>
+<span class="sourceLineNo">511</span>   * @param family family name<a name="line.511"></a>
+<span class="sourceLineNo">512</span>   * @param qualifier column qualifier<a name="line.512"></a>
+<span class="sourceLineNo">513</span>   * @param timestamp version timestamp<a name="line.513"></a>
+<span class="sourceLineNo">514</span>   * @param type key type<a name="line.514"></a>
+<span class="sourceLineNo">515</span>   * @param value column value<a name="line.515"></a>
+<span class="sourceLineNo">516</span>   * @throws IllegalArgumentException<a name="line.516"></a>
+<span class="sourceLineNo">517</span>   */<a name="line.517"></a>
+<span class="sourceLineNo">518</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.518"></a>
+<span class="sourceLineNo">519</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.519"></a>
+<span class="sourceLineNo">520</span>      final byte[] value, final byte[] tags) {<a name="line.520"></a>
+<span class="sourceLineNo">521</span>    this(row, family, qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.521"></a>
+<span class="sourceLineNo">522</span>        timestamp, type, value, 0, value==null ? 0 : value.length, tags);<a name="line.522"></a>
+<span class="sourceLineNo">523</span>  }<a name="line.523"></a>
+<span class="sourceLineNo">524</span><a name="line.524"></a>
+<span class="sourceLineNo">525</span>  /**<a name="line.525"></a>
+<span class="sourceLineNo">526</span>   * Constructs KeyValue structure filled with specified values.<a name="line.526"></a>
+<span class="sourceLineNo">527</span>   * @param row row key<a name="line.527"></a>
+<span class="sourceLineNo">528</span>   * @param family family name<a name="line.528"></a>
+<span class="sourceLineNo">529</span>   * @param qualifier column qualifier<a name="line.529"></a>
+<span class="sourceLineNo">530</span>   * @param qoffset qualifier offset<a name="line.530"></a>
+<span class="sourceLineNo">531</span>   * @param qlength qualifier length<a name="line.531"></a>
+<span class="sourceLineNo">532</span>   * @param timestamp version timestamp<a name="line.532"></a>
+<span class="sourceLineNo">533</span>   * @param type key type<a name="line.533"></a>
+<span class="sourceLineNo">534</span>   * @param value column value<a name="line.534"></a>
+<span class="sourceLineNo">535</span>   * @param voffset value offset<a name="line.535"></a>
+<span class="sourceLineNo">536</span>   * @param vlength value length<a name="line.536"></a>
+<span class="sourceLineNo">537</span>   * @throws IllegalArgumentException<a name="line.537"></a>
+<span class="sourceLineNo">538</span>   */<a name="line.538"></a>
+<span class="sourceLineNo">539</span>  public KeyValue(byte [] row, byte [] family,<a name="line.539"></a>
+<span class="sourceLineNo">540</span>      byte [] qualifier, int qoffset, int qlength, long timestamp, Type type,<a name="line.540"></a>
+<span class="sourceLineNo">541</span>      byte [] value, int voffset, int vlength, List&lt;Tag&gt; tags) {<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.542"></a>
+<span class="sourceLineNo">543</span>        family, 0, family==null ? 0 : family.length,<a name="line.543"></a>
+<span class="sourceLineNo">544</span>        qualifier, qoffset, qlength, timestamp, type,<a name="line.544"></a>
+<span class="sourceLineNo">545</span>        value, voffset, vlength, tags);<a name="line.545"></a>
+<span class="sourceLineNo">546</span>  }<a name="line.546"></a>
+<span class="sourceLineNo">547</span><a name="line.547"></a>
+<span class="sourceLineNo">548</span>  /**<a name="line.548"></a>
+<span class="sourceLineNo">549</span>   * @param row<a name="line.549"></a>
+<span class="sourceLineNo">550</span>   * @param family<a name="line.550"></a>
+<span class="sourceLineNo">551</span>   * @param qualifier<a name="line.551"></a>
+<span class="sourceLineNo">552</span>   * @param qoffset<a name="line.552"></a>
+<span class="sourceLineNo">553</span>   * @param qlength<a name="line.553"></a>
+<span class="sourceLineNo">554</span>   * @param timestamp<a name="line.554"></a>
+<span class="sourceLineNo">555</span>   * @param type<a name="line.555"></a>
+<span class="sourceLineNo">556</span>   * @param value<a name="line.556"></a>
+<span class="sourceLineNo">557</span>   * @param voffset<a name="line.557"></a>
+<span class="sourceLineNo">558</span>   * @param vlength<a name="line.558"></a>
+<span class="sourceLineNo">559</span>   * @param tags<a name="line.559"></a>
+<span class="sourceLineNo">560</span>   */<a name="line.560"></a>
+<span class="sourceLineNo">561</span>  public KeyValue(byte [] row, byte [] family,<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      byte [] qualifier, int qoffset, int qlength, long timestamp, Type type,<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      byte [] value, int voffset, int vlength, byte[] tags) {<a name="line.563"></a>
+<span class="sourceLineNo">564</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.564"></a>
+<span class="sourceLineNo">565</span>        family, 0, family==null ? 0 : family.length,<a name="line.565"></a>
+<span class="sourceLineNo">566</span>        qualifier, qoffset, qlength, timestamp, type,<a name="line.566"></a>
+<span class="sourceLineNo">567</span>        value, voffset, vlength, tags, 0, tags==null ? 0 : tags.length);<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>  /**<a name="line.570"></a>
+<span class="sourceLineNo">571</span>   * Constructs KeyValue structure filled with specified values.<a name="line.571"></a>
+<span class="sourceLineNo">572</span>   * &lt;p&gt;<a name="line.572"></a>
+<span class="sourceLineNo">573</span>   * Column is split into two fields, family and qualifier.<a name="line.573"></a>
+<span class="sourceLineNo">574</span>   * @param row row key<a name="line.574"></a>
+<span class="sourceLineNo">575</span>   * @throws IllegalArgumentException<a name="line.575"></a>
+<span class="sourceLineNo">576</span>   */<a name="line.576"></a>
+<span class="sourceLineNo">577</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.577"></a>
+<span class="sourceLineNo">578</span>      final byte [] family, final int foffset, final int flength,<a name="line.578"></a>
+<span class="sourceLineNo">579</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      final long timestamp, final Type type,<a name="line.580"></a>
+<span class="sourceLineNo">581</span>      final byte [] value, final int voffset, final int vlength) {<a name="line.581"></a>
+<span class="sourceLineNo">582</span>    this(row, roffset, rlength, family, foffset, flength, qualifier, qoffset,<a name="line.582"></a>
+<span class="sourceLineNo">583</span>      qlength, timestamp, type, value, voffset, vlength, null);<a name="line.583"></a>
+<span class="sourceLineNo">584</span>  }<a name="line.584"></a>
+<span class="sourceLineNo">585</span><a name="line.585"></a>
+<span class="sourceLineNo">586</span>  /**<a name="line.586"></a>
+<span class="sourceLineNo">587</span>   * Constructs KeyValue structure filled with specified values. Uses the provided buffer as the<a name="line.587"></a>
+<span class="sourceLineNo">588</span>   * data buffer.<a name="line.588"></a>
+<span class="sourceLineNo">589</span>   * &lt;p&gt;<a name="line.589"></a>
+<span class="sourceLineNo">590</span>   * Column is split into two fields, family and qualifier.<a name="line.590"></a>
+<span class="sourceLineNo">591</span>   *<a name="line.591"></a>
+<span class="sourceLineNo">592</span>   * @param buffer the bytes buffer to use<a name="line.592"></a>
+<span class="sourceLineNo">593</span>   * @param boffset buffer offset<a name="line.593"></a>
+<span class="sourceLineNo">594</span>   * @param row row key<a name="line.594"></a>
+<span class="sourceLineNo">595</span>   * @param roffset row offset<a name="line.595"></a>
+<span class="sourceLineNo">596</span>   * @param rlength row length<a name="line.596"></a>
+<span class="sourceLineNo">597</span>   * @param family family name<a name="line.597"></a>
+<span class="sourceLineNo">598</span>   * @param foffset family offset<a name="line.598"></a>
+<span class="sourceLineNo">599</span>   * @param flength family length<a name="line.599"></a>
+<span class="sourceLineNo">600</span>   * @param qualifier column qualifier<a name="line.600"></a>
+<span class="sourceLineNo">601</span>   * @param qoffset qualifier offset<a name="line.601"></a>
+<span class="sourceLineNo">602</span>   * @param qlength qualifier length<a name="line.602"></a>
+<span class="sourceLineNo">603</span>   * @param timestamp version timestamp<a name="line.603"></a>
+<span class="sourceLineNo">604</span>   * @param type key type<a name="line.604"></a>
+<span class="sourceLineNo">605</span>   * @param value column value<a name="line.605"></a>
+<span class="sourceLineNo">606</span>   * @param voffset value offset<a name="line.606"></a>
+<span class="sourceLineNo">607</span>   * @param vlength value length<a name="line.607"></a>
+<span class="sourceLineNo">608</span>   * @param tags non-empty list of tags or null<a name="line.608"></a>
+<span class="sourceLineNo">609</span>   * @throws IllegalArgumentException an illegal value was passed or there is insufficient space<a name="line.609"></a>
+<span class="sourceLineNo">610</span>   * remaining in the buffer<a name="line.610"></a>
+<span class="sourceLineNo">611</span>   */<a name="line.611"></a>
+<span class="sourceLineNo">612</span>  public KeyValue(byte [] buffer, final int boffset,<a name="line.612"></a>
+<span class="sourceLineNo">613</span>      final byte [] row, final int roffset, final int rlength,<a name="line.613"></a>
+<span class="sourceLineNo">614</span>      final byte [] family, final int foffset, final int flength,<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.615"></a>
+<span class="sourceLineNo">616</span>      final long timestamp, final Type type,<a name="line.616"></a>
+<span class="sourceLineNo">617</span>      final byte [] value, final int voffset, final int vlength,<a name="line.617"></a>
+<span class="sourceLineNo">618</span>      final Tag[] tags) {<a name="line.618"></a>
+<span class="sourceLineNo">619</span>     this.bytes  = buffer;<a name="line.619"></a>
+<span class="sourceLineNo">620</span>     this.length = writeByteArray(buffer, boffset,<a name="line.620"></a>
+<span class="sourceLineNo">621</span>         row, roffset, rlength,<a name="line.621"></a>
+<span class="sourceLineNo">622</span>         family, foffset, flength, qualifier, qoffset, qlength,<a name="line.622"></a>
+<span class="sourceLineNo">623</span>        timestamp, type, value, voffset, vlength, tags);<a name="line.623"></a>
+<span class="sourceLineNo">624</span>     this.offset = boffset;<a name="line.624"></a>
+<span class="sourceLineNo">625</span>   }<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">628</span>   * Constructs KeyValue structure filled with specified values.<a name="line.628"></a>
+<span class="sourceLineNo">629</span>   * &lt;p&gt;<a name="line.629"></a>
+<span class="sourceLineNo">630</span>   * Column is split into two fields, family and qualifier.<a name="line.630"></a>
+<span class="sourceLineNo">631</span>   * @param row row key<a name="line.631"></a>
+<span class="sourceLineNo">632</span>   * @param roffset row offset<a name="line.632"></a>
+<span class="sourceLineNo">633</span>   * @param rlength row length<a name="line.633"></a>
+<span class="sourceLineNo">634</span>   * @param family family name<a name="line.634"></a>
+<span class="sourceLineNo">635</span>   * @param foffset family offset<a name="line.635"></a>
+<span class="sourceLineNo">636</span>   * @param flength family length<a name="line.636"></a>
+<span class="sourceLineNo">637</span>   * @param qualifier column qualifier<a name="line.637"></a>
+<span class="sourceLineNo">638</span>   * @param qoffset qualifier offset<a name="line.638"></a>
+<span class="sourceLineNo">639</span>   * @param qlength qualifier length<a name="line.639"></a>
+<span class="sourceLineNo">640</span>   * @param timestamp version timestamp<a name="line.640"></a>
+<span class="sourceLineNo">641</span>   * @param type key type<a name="line.641"></a>
+<span class="sourceLineNo">642</span>   * @param value column value<a name="line.642"></a>
+<span class="sourceLineNo">643</span>   * @param voffset value offset<a name="line.643"></a>
+<span class="sourceLineNo">644</span>   * @param vlength value length<a name="line.644"></a>
+<span class="sourceLineNo">645</span>   * @param tags tags<a name="line.645"></a>
+<span class="sourceLineNo">646</span>   * @throws IllegalArgumentException<a name="line.646"></a>
+<span class="sourceLineNo">647</span>   */<a name="line.647"></a>
+<span class="sourceLineNo">648</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.648"></a>
+<span class="sourceLineNo">649</span>      final byte [] family, final int foffset, final int flength,<a name="line.649"></a>
+<span class="sourceLineNo">650</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.650"></a>
+<span class="sourceLineNo">651</span>      final long timestamp, final Type type,<a name="line.651"></a>
+<span class="sourceLineNo">652</span>      final byte [] value, final int voffset, final int vlength,<a name="line.652"></a>
+<span class="sourceLineNo">653</span>      final List&lt;Tag&gt; tags) {<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    this.bytes = createByteArray(row, roffset, rlength,<a name="line.654"></a>
+<span class="sourceLineNo">655</span>        family, foffset, flength, qualifier, qoffset, qlength,<a name="line.655"></a>
+<span class="sourceLineNo">656</span>        timestamp, type, value, voffset, vlength, tags);<a name="line.656"></a>
+<span class="sourceLineNo">657</span>    this.length = bytes.length;<a name="line.657"></a>
+<span class="sourceLineNo">658</span>    this.offset = 0;<a name="line.658"></a>
+<span class="sourceLineNo">659</span>  }<a name="line.659"></a>
+<span class="sourceLineNo">660</span><a name="line.660"></a>
+<span class="sourceLineNo">661</span>  /**<a name="line.661"></a>
+<span class="sourceLineNo">662</span>   * @param row<a name="line.662"></a>
+<span class="sourceLineNo">663</span>   * @param roffset<a name="line.663"></a>
+<span class="sourceLineNo">664</span>   * @param rlength<a name="line.664"></a>
+<span class="sourceLineNo">665</span>   * @param family<a name="line.665"></a>
+<span class="sourceLineNo">666</span>   * @param foffset<a name="line.666"></a>
+<span class="sourceLineNo">667</span>   * @param flength<a name="line.667"></a>
+<span class="sourceLineNo">668</span>   * @param qualifier<a name="line.668"></a>
+<span class="sourceLineNo">669</span>   * @param qoffset<a name="line.669"></a>
+<span class="sourceLineNo">670</span>   * @param qlength<a name="line.670"></a>
+<span class="sourceLineNo">671</span>   * @param timestamp<a name="line.671"></a>
+<span class="sourceLineNo">672</span>   * @param type<a name="line.672"></a>
+<span class="sourceLineNo">673</span>   * @param value<a name="line.673"></a>
+<span class="sourceLineNo">674</span>   * @param voffset<a name="line.674"></a>
+<span class="sourceLineNo">675</span>   * @param vlength<a name="line.675"></a>
+<span class="sourceLineNo">676</span>   * @param tags<a name="line.676"></a>
+<span class="sourceLineNo">677</span>   */<a name="line.677"></a>
+<span class="sourceLineNo">678</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.678"></a>
+<span class="sourceLineNo">679</span>      final byte [] family, final int foffset, final int flength,<a name="line.679"></a>
+<span class="sourceLineNo">680</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.680"></a>
+<span class="sourceLineNo">681</span>      final long timestamp, final Type type,<a name="line.681"></a>
+<span class="sourceLineNo">682</span>      final byte [] value, final int voffset, final int vlength,<a name="line.682"></a>
+<span class="sourceLineNo">683</span>      final byte[] tags, final int tagsOffset, final int tagsLength) {<a name="line.683"></a>
+<span class="sourceLineNo">684</span>    this.bytes = createByteArray(row, roffset, rlength,<a name="line.684"></a>
+<span class="sourceLineNo">685</span>        family, foffset, flength, qualifier, qoffset, qlength,<a name="line.685"></a>
+<span class="sourceLineNo">686</span>        timestamp, type, value, voffset, vlength, tags, tagsOffset, tagsLength);<a name="line.686"></a>
+<span class="sourceLineNo">687</span>    this.length = bytes.length;<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    this.offset = 0;<a name="line.688"></a>
+<span class="sourceLineNo">689</span>  }<a name="line.689"></a>
+<span class="sourceLineNo">690</span><a name="line.690"></a>
+<span class="sourceLineNo">691</span>  /**<a name="line.691"></a>
+<span class="sourceLineNo">692</span>   * Constructs an empty KeyValue structure, with specified sizes.<a name="line.692"></a>
+<span class="sourceLineNo">693</span>   * This can be used to partially fill up KeyValues.<a name="line.693"></a>
+<span class="sourceLineNo">694</span>   * &lt;p&gt;<a name="line.694"></a>
+<span class="sourceLineNo">695</span>   * Column is split into two fields, family and qualifier.<a name="line.695"></a>
+<span class="sourceLineNo">696</span>   * @param rlength row length<a name="line.696"></a>
+<span class="sourceLineNo">697</span>   * @param flength family length<a name="line.697"></a>
+<span class="sourceLineNo">698</span>   * @param qlength qualifier length<a name="line.698"></a>
+<span class="sourceLineNo">699</span>   * @param timestamp version timestamp<a name="line.699"></a>
+<span class="sourceLineNo">700</span>   * @param type key type<a name="line.700"></a>
+<span class="sourceLineNo">701</span>   * @param vlength value length<a name="line.701"></a>
+<span class="sourceLineNo">702</span>   * @throws IllegalArgumentException<a name="line.702"></a>
+<span class="sourceLineNo">703</span>   */<a name="line.703"></a>
+<span class="sourceLineNo">704</span>  public KeyValue(final int rlength,<a name="line.704"></a>
+<span class="sourceLineNo">705</span>      final int flength,<a name="line.705"></a>
+<span class="sourceLineNo">706</span>      final int qlength,<a name="line.706"></a>
+<span class="sourceLineNo">707</span>      final long timestamp, final Type type,<a name="line.707"></a>
+<span class="sourceLineNo">708</span>      final int vlength) {<a name="line.708"></a>
+<span class="sourceLineNo">709</span>    this(rlength, flength, qlength, timestamp, type, vlength, 0);<a name="line.709"></a>
+<span c

<TRUNCATED>

[02/29] hbase-site git commit: Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html
index 28b8679..c6dd2b6 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html
@@ -40,531 +40,530 @@
 <span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.32"></a>
 <span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.33"></a>
 <span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.io.hfile.HFile.Reader;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.io.hfile.HFile.Writer;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.testclassification.IOTests;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.io.BytesWritable;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.junit.ClassRule;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.junit.experimental.categories.Category;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.slf4j.Logger;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.slf4j.LoggerFactory;<a name="line.44"></a>
-<span class="sourceLineNo">045</span><a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLineParser;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.GnuParser;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.HelpFormatter;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.Option;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.OptionBuilder;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.Options;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.ParseException;<a name="line.53"></a>
-<span class="sourceLineNo">054</span><a name="line.54"></a>
-<span class="sourceLineNo">055</span>/**<a name="line.55"></a>
-<span class="sourceLineNo">056</span> * test the performance for seek.<a name="line.56"></a>
-<span class="sourceLineNo">057</span> * &lt;p&gt;<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * Copied from<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * &lt;a href="https://issues.apache.org/jira/browse/HADOOP-3315"&gt;hadoop-3315 tfile&lt;/a&gt;.<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * Remove after tfile is committed and use the tfile version of this class<a name="line.60"></a>
-<span class="sourceLineNo">061</span> * instead.&lt;/p&gt;<a name="line.61"></a>
-<span class="sourceLineNo">062</span> */<a name="line.62"></a>
-<span class="sourceLineNo">063</span>@Category({IOTests.class, MediumTests.class})<a name="line.63"></a>
-<span class="sourceLineNo">064</span>public class TestHFileSeek extends TestCase {<a name="line.64"></a>
-<span class="sourceLineNo">065</span><a name="line.65"></a>
-<span class="sourceLineNo">066</span>  @ClassRule<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.67"></a>
-<span class="sourceLineNo">068</span>      HBaseClassTestRule.forClass(TestHFileSeek.class);<a name="line.68"></a>
-<span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span>  private static final byte[] CF = "f1".getBytes();<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private static final byte[] QUAL = "q1".getBytes();<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  private static final boolean USE_PREAD = true;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  private MyOptions options;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  private Configuration conf;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>  private Path path;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  private FileSystem fs;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  private NanoTimer timer;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  private Random rng;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  private RandomDistribution.DiscreteRNG keyLenGen;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  private KVGenerator kvGen;<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(TestHFileSeek.class);<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>  public void setUp() throws IOException {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    if (options == null) {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>      options = new MyOptions(new String[0]);<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>    conf = new Configuration();<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>    if (options.useRawFs) {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      conf.setClass("fs.file.impl", RawLocalFileSystem.class, FileSystem.class);<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    }<a name="line.94"></a>
-<span class="sourceLineNo">095</span><a name="line.95"></a>
-<span class="sourceLineNo">096</span>    conf.setInt("tfile.fs.input.buffer.size", options.fsInputBufferSize);<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    conf.setInt("tfile.fs.output.buffer.size", options.fsOutputBufferSize);<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    path = new Path(new Path(options.rootDir), options.file);<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    fs = path.getFileSystem(conf);<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    timer = new NanoTimer(false);<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    rng = new Random(options.seed);<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    keyLenGen =<a name="line.102"></a>
-<span class="sourceLineNo">103</span>        new RandomDistribution.Zipf(new Random(rng.nextLong()),<a name="line.103"></a>
-<span class="sourceLineNo">104</span>            options.minKeyLen, options.maxKeyLen, 1.2);<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    RandomDistribution.DiscreteRNG valLenGen =<a name="line.105"></a>
-<span class="sourceLineNo">106</span>        new RandomDistribution.Flat(new Random(rng.nextLong()),<a name="line.106"></a>
-<span class="sourceLineNo">107</span>            options.minValLength, options.maxValLength);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    RandomDistribution.DiscreteRNG wordLenGen =<a name="line.108"></a>
-<span class="sourceLineNo">109</span>        new RandomDistribution.Flat(new Random(rng.nextLong()),<a name="line.109"></a>
-<span class="sourceLineNo">110</span>            options.minWordLen, options.maxWordLen);<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    kvGen =<a name="line.111"></a>
-<span class="sourceLineNo">112</span>        new KVGenerator(rng, true, keyLenGen, valLenGen, wordLenGen,<a name="line.112"></a>
-<span class="sourceLineNo">113</span>            options.dictSize);<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 void tearDown() {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    try {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      fs.close();<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    }<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    catch (Exception e) {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>      // Nothing<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    }<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  }<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  private static FSDataOutputStream createFSOutput(Path name, FileSystem fs)<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    throws IOException {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    if (fs.exists(name)) {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      fs.delete(name, true);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    }<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    FSDataOutputStream fout = fs.create(name);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    return fout;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  }<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>  private void createTFile() throws IOException {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    long totalBytes = 0;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    FSDataOutputStream fout = createFSOutput(path, fs);<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    try {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      HFileContext context = new HFileContextBuilder()<a name="line.139"></a>
-<span class="sourceLineNo">140</span>                            .withBlockSize(options.minBlockSize)<a name="line.140"></a>
-<span class="sourceLineNo">141</span>                            .withCompression(HFileWriterImpl.compressionByName(options.compress))<a name="line.141"></a>
-<span class="sourceLineNo">142</span>                            .build();<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      Writer writer = HFile.getWriterFactoryNoCache(conf)<a name="line.143"></a>
-<span class="sourceLineNo">144</span>          .withOutputStream(fout)<a name="line.144"></a>
-<span class="sourceLineNo">145</span>          .withFileContext(context)<a name="line.145"></a>
-<span class="sourceLineNo">146</span>          .withComparator(CellComparatorImpl.COMPARATOR)<a name="line.146"></a>
-<span class="sourceLineNo">147</span>          .create();<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      try {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>        BytesWritable key = new BytesWritable();<a name="line.149"></a>
-<span class="sourceLineNo">150</span>        BytesWritable val = new BytesWritable();<a name="line.150"></a>
-<span class="sourceLineNo">151</span>        timer.start();<a name="line.151"></a>
-<span class="sourceLineNo">152</span>        for (long i = 0; true; ++i) {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>          if (i % 1000 == 0) { // test the size for every 1000 rows.<a name="line.153"></a>
-<span class="sourceLineNo">154</span>            if (fs.getFileStatus(path).getLen() &gt;= options.fileSize) {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>              break;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>            }<a name="line.156"></a>
-<span class="sourceLineNo">157</span>          }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>          kvGen.next(key, val, false);<a name="line.158"></a>
-<span class="sourceLineNo">159</span>          byte [] k = new byte [key.getLength()];<a name="line.159"></a>
-<span class="sourceLineNo">160</span>          System.arraycopy(key.getBytes(), 0, k, 0, key.getLength());<a name="line.160"></a>
-<span class="sourceLineNo">161</span>          byte [] v = new byte [val.getLength()];<a name="line.161"></a>
-<span class="sourceLineNo">162</span>          System.arraycopy(val.getBytes(), 0, v, 0, key.getLength());<a name="line.162"></a>
-<span class="sourceLineNo">163</span>          KeyValue kv = new KeyValue(k, CF, QUAL, v);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>          writer.append(kv);<a name="line.164"></a>
-<span class="sourceLineNo">165</span>          totalBytes += kv.getKeyLength();<a name="line.165"></a>
-<span class="sourceLineNo">166</span>          totalBytes += kv.getValueLength();<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        }<a name="line.167"></a>
-<span class="sourceLineNo">168</span>        timer.stop();<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      }<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      finally {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        writer.close();<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>    finally {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      fout.close();<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    }<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    double duration = (double)timer.read()/1000; // in us.<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    long fsize = fs.getFileStatus(path).getLen();<a name="line.178"></a>
-<span class="sourceLineNo">179</span><a name="line.179"></a>
-<span class="sourceLineNo">180</span>    System.out.printf(<a name="line.180"></a>
-<span class="sourceLineNo">181</span>        "time: %s...uncompressed: %.2fMB...raw thrpt: %.2fMB/s\n",<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        timer.toString(), (double) totalBytes / 1024 / 1024, totalBytes<a name="line.182"></a>
-<span class="sourceLineNo">183</span>            / duration);<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    System.out.printf("time: %s...file size: %.2fMB...disk thrpt: %.2fMB/s\n",<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        timer.toString(), (double) fsize / 1024 / 1024, fsize / duration);<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>  public void seekTFile() throws IOException {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    int miss = 0;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    long totalBytes = 0;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    FSDataInputStream fsdis = fs.open(path);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    Reader reader = HFile.createReaderFromStream(path, fsdis,<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        fs.getFileStatus(path).getLen(), new CacheConfig(conf), conf);<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    reader.loadFileInfo();<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    KeySampler kSampler = new KeySampler(rng, ((KeyValue) reader.getFirstKey().get()).getKey(),<a name="line.195"></a>
-<span class="sourceLineNo">196</span>        ((KeyValue) reader.getLastKey().get()).getKey(), keyLenGen);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    HFileScanner scanner = reader.getScanner(false, USE_PREAD);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    BytesWritable key = new BytesWritable();<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    timer.reset();<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    timer.start();<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    for (int i = 0; i &lt; options.seekCount; ++i) {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      kSampler.next(key);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      byte [] k = new byte [key.getLength()];<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      System.arraycopy(key.getBytes(), 0, k, 0, key.getLength());<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      if (scanner.seekTo(KeyValueUtil.createKeyValueFromKey(k)) &gt;= 0) {<a name="line.205"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.io.hfile.HFile.Reader;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.io.hfile.HFile.Writer;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.testclassification.IOTests;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.io.BytesWritable;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.junit.ClassRule;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.junit.experimental.categories.Category;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.slf4j.Logger;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.slf4j.LoggerFactory;<a name="line.43"></a>
+<span class="sourceLineNo">044</span><a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLineParser;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.GnuParser;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.HelpFormatter;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.Option;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.OptionBuilder;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.Options;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.ParseException;<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> * test the performance for seek.<a name="line.55"></a>
+<span class="sourceLineNo">056</span> * &lt;p&gt;<a name="line.56"></a>
+<span class="sourceLineNo">057</span> * Copied from<a name="line.57"></a>
+<span class="sourceLineNo">058</span> * &lt;a href="https://issues.apache.org/jira/browse/HADOOP-3315"&gt;hadoop-3315 tfile&lt;/a&gt;.<a name="line.58"></a>
+<span class="sourceLineNo">059</span> * Remove after tfile is committed and use the tfile version of this class<a name="line.59"></a>
+<span class="sourceLineNo">060</span> * instead.&lt;/p&gt;<a name="line.60"></a>
+<span class="sourceLineNo">061</span> */<a name="line.61"></a>
+<span class="sourceLineNo">062</span>@Category({IOTests.class, MediumTests.class})<a name="line.62"></a>
+<span class="sourceLineNo">063</span>public class TestHFileSeek extends TestCase {<a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span>  @ClassRule<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.66"></a>
+<span class="sourceLineNo">067</span>      HBaseClassTestRule.forClass(TestHFileSeek.class);<a name="line.67"></a>
+<span class="sourceLineNo">068</span><a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private static final byte[] CF = "f1".getBytes();<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  private static final byte[] QUAL = "q1".getBytes();<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  private static final boolean USE_PREAD = true;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  private MyOptions options;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private Configuration conf;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  private Path path;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  private FileSystem fs;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  private NanoTimer timer;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  private Random rng;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  private RandomDistribution.DiscreteRNG keyLenGen;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  private KVGenerator kvGen;<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(TestHFileSeek.class);<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>  @Override<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  public void setUp() throws IOException {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    if (options == null) {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>      options = new MyOptions(new String[0]);<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>    conf = new Configuration();<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>    if (options.useRawFs) {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      conf.setClass("fs.file.impl", RawLocalFileSystem.class, FileSystem.class);<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    }<a name="line.93"></a>
+<span class="sourceLineNo">094</span><a name="line.94"></a>
+<span class="sourceLineNo">095</span>    conf.setInt("tfile.fs.input.buffer.size", options.fsInputBufferSize);<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    conf.setInt("tfile.fs.output.buffer.size", options.fsOutputBufferSize);<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    path = new Path(new Path(options.rootDir), options.file);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    fs = path.getFileSystem(conf);<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    timer = new NanoTimer(false);<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    rng = new Random(options.seed);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    keyLenGen =<a name="line.101"></a>
+<span class="sourceLineNo">102</span>        new RandomDistribution.Zipf(new Random(rng.nextLong()),<a name="line.102"></a>
+<span class="sourceLineNo">103</span>            options.minKeyLen, options.maxKeyLen, 1.2);<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    RandomDistribution.DiscreteRNG valLenGen =<a name="line.104"></a>
+<span class="sourceLineNo">105</span>        new RandomDistribution.Flat(new Random(rng.nextLong()),<a name="line.105"></a>
+<span class="sourceLineNo">106</span>            options.minValLength, options.maxValLength);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    RandomDistribution.DiscreteRNG wordLenGen =<a name="line.107"></a>
+<span class="sourceLineNo">108</span>        new RandomDistribution.Flat(new Random(rng.nextLong()),<a name="line.108"></a>
+<span class="sourceLineNo">109</span>            options.minWordLen, options.maxWordLen);<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    kvGen =<a name="line.110"></a>
+<span class="sourceLineNo">111</span>        new KVGenerator(rng, true, keyLenGen, valLenGen, wordLenGen,<a name="line.111"></a>
+<span class="sourceLineNo">112</span>            options.dictSize);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  }<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  @Override<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  public void tearDown() {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    try {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      fs.close();<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    }<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    catch (Exception e) {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      // Nothing<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    }<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  }<a name="line.123"></a>
+<span class="sourceLineNo">124</span><a name="line.124"></a>
+<span class="sourceLineNo">125</span>  private static FSDataOutputStream createFSOutput(Path name, FileSystem fs)<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    throws IOException {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    if (fs.exists(name)) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      fs.delete(name, true);<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    }<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    FSDataOutputStream fout = fs.create(name);<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    return fout;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  }<a name="line.132"></a>
+<span class="sourceLineNo">133</span><a name="line.133"></a>
+<span class="sourceLineNo">134</span>  private void createTFile() throws IOException {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    long totalBytes = 0;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    FSDataOutputStream fout = createFSOutput(path, fs);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    try {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      HFileContext context = new HFileContextBuilder()<a name="line.138"></a>
+<span class="sourceLineNo">139</span>                            .withBlockSize(options.minBlockSize)<a name="line.139"></a>
+<span class="sourceLineNo">140</span>                            .withCompression(HFileWriterImpl.compressionByName(options.compress))<a name="line.140"></a>
+<span class="sourceLineNo">141</span>                            .build();<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      Writer writer = HFile.getWriterFactoryNoCache(conf)<a name="line.142"></a>
+<span class="sourceLineNo">143</span>          .withOutputStream(fout)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>          .withFileContext(context)<a name="line.144"></a>
+<span class="sourceLineNo">145</span>          .withComparator(CellComparatorImpl.COMPARATOR)<a name="line.145"></a>
+<span class="sourceLineNo">146</span>          .create();<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      try {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>        BytesWritable key = new BytesWritable();<a name="line.148"></a>
+<span class="sourceLineNo">149</span>        BytesWritable val = new BytesWritable();<a name="line.149"></a>
+<span class="sourceLineNo">150</span>        timer.start();<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        for (long i = 0; true; ++i) {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>          if (i % 1000 == 0) { // test the size for every 1000 rows.<a name="line.152"></a>
+<span class="sourceLineNo">153</span>            if (fs.getFileStatus(path).getLen() &gt;= options.fileSize) {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>              break;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>            }<a name="line.155"></a>
+<span class="sourceLineNo">156</span>          }<a name="line.156"></a>
+<span class="sourceLineNo">157</span>          kvGen.next(key, val, false);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>          byte [] k = new byte [key.getLength()];<a name="line.158"></a>
+<span class="sourceLineNo">159</span>          System.arraycopy(key.getBytes(), 0, k, 0, key.getLength());<a name="line.159"></a>
+<span class="sourceLineNo">160</span>          byte [] v = new byte [val.getLength()];<a name="line.160"></a>
+<span class="sourceLineNo">161</span>          System.arraycopy(val.getBytes(), 0, v, 0, key.getLength());<a name="line.161"></a>
+<span class="sourceLineNo">162</span>          KeyValue kv = new KeyValue(k, CF, QUAL, v);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>          writer.append(kv);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>          totalBytes += kv.getKeyLength();<a name="line.164"></a>
+<span class="sourceLineNo">165</span>          totalBytes += kv.getValueLength();<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        timer.stop();<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      }<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      finally {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>        writer.close();<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>    finally {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      fout.close();<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    }<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    double duration = (double)timer.read()/1000; // in us.<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    long fsize = fs.getFileStatus(path).getLen();<a name="line.177"></a>
+<span class="sourceLineNo">178</span><a name="line.178"></a>
+<span class="sourceLineNo">179</span>    System.out.printf(<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        "time: %s...uncompressed: %.2fMB...raw thrpt: %.2fMB/s\n",<a name="line.180"></a>
+<span class="sourceLineNo">181</span>        timer.toString(), (double) totalBytes / 1024 / 1024, totalBytes<a name="line.181"></a>
+<span class="sourceLineNo">182</span>            / duration);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    System.out.printf("time: %s...file size: %.2fMB...disk thrpt: %.2fMB/s\n",<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        timer.toString(), (double) fsize / 1024 / 1024, fsize / duration);<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>  public void seekTFile() throws IOException {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    int miss = 0;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    long totalBytes = 0;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    FSDataInputStream fsdis = fs.open(path);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    Reader reader = HFile.createReaderFromStream(path, fsdis,<a name="line.191"></a>
+<span class="sourceLineNo">192</span>        fs.getFileStatus(path).getLen(), new CacheConfig(conf), conf);<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    reader.loadFileInfo();<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    KeySampler kSampler = new KeySampler(rng, ((KeyValue) reader.getFirstKey().get()).getKey(),<a name="line.194"></a>
+<span class="sourceLineNo">195</span>        ((KeyValue) reader.getLastKey().get()).getKey(), keyLenGen);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    HFileScanner scanner = reader.getScanner(false, USE_PREAD);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    BytesWritable key = new BytesWritable();<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    timer.reset();<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    timer.start();<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    for (int i = 0; i &lt; options.seekCount; ++i) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      kSampler.next(key);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      byte[] k = new byte[key.getLength()];<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      System.arraycopy(key.getBytes(), 0, k, 0, key.getLength());<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      KeyValue kv = new KeyValue(k, CF, QUAL);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      if (scanner.seekTo(kv) &gt;= 0) {<a name="line.205"></a>
 <span class="sourceLineNo">206</span>        ByteBuffer bbkey = ByteBuffer.wrap(((KeyValue) scanner.getKey()).getKey());<a name="line.206"></a>
 <span class="sourceLineNo">207</span>        ByteBuffer bbval = scanner.getValue();<a name="line.207"></a>
 <span class="sourceLineNo">208</span>        totalBytes += bbkey.limit();<a name="line.208"></a>
 <span class="sourceLineNo">209</span>        totalBytes += bbval.limit();<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      }<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      else {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        ++miss;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      }<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    }<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    timer.stop();<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    System.out.printf(<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        "time: %s...avg seek: %s...%d hit...%d miss...avg I/O size: %.2fKB\n",<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        timer.toString(), NanoTimer.nanoTimeToString(timer.read()<a name="line.218"></a>
-<span class="sourceLineNo">219</span>            / options.seekCount), options.seekCount - miss, miss,<a name="line.219"></a>
-<span class="sourceLineNo">220</span>        (double) totalBytes / 1024 / (options.seekCount - miss));<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>  public void testSeeks() throws IOException {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    if (options.doCreate()) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      createTFile();<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>    if (options.doRead()) {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      seekTFile();<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    }<a name="line.231"></a>
-<span class="sourceLineNo">232</span><a name="line.232"></a>
-<span class="sourceLineNo">233</span>    if (options.doCreate()) {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      fs.delete(path, true);<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><a name="line.237"></a>
-<span class="sourceLineNo">238</span>  private static class IntegerRange {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    private final int from, to;<a name="line.239"></a>
-<span class="sourceLineNo">240</span><a name="line.240"></a>
-<span class="sourceLineNo">241</span>    public IntegerRange(int from, int to) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      this.from = from;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      this.to = to;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    }<a name="line.244"></a>
-<span class="sourceLineNo">245</span><a name="line.245"></a>
-<span class="sourceLineNo">246</span>    public static IntegerRange parse(String s) throws ParseException {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      StringTokenizer st = new StringTokenizer(s, " \t,");<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      if (st.countTokens() != 2) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        throw new ParseException("Bad integer specification: " + s);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      }<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      int from = Integer.parseInt(st.nextToken());<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      int to = Integer.parseInt(st.nextToken());<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      return new IntegerRange(from, to);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>    public int from() {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      return from;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    }<a name="line.258"></a>
-<span class="sourceLineNo">259</span><a name="line.259"></a>
-<span class="sourceLineNo">260</span>    public int to() {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      return to;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    }<a name="line.262"></a>
-<span class="sourceLineNo">263</span>  }<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>  private static class MyOptions {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    // hard coded constants<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    int dictSize = 1000;<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    int minWordLen = 5;<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    int maxWordLen = 20;<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>    private HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    String rootDir =<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      TEST_UTIL.getDataTestDir("TestTFileSeek").toString();<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    String file = "TestTFileSeek";<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    // String compress = "lzo"; DISABLED<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    String compress = "none";<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    int minKeyLen = 10;<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    int maxKeyLen = 50;<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    int minValLength = 1024;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    int maxValLength = 2 * 1024;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    int minBlockSize = 1 * 1024 * 1024;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    int fsOutputBufferSize = 1;<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    int fsInputBufferSize = 0;<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    // Default writing 10MB.<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    long fileSize = 10 * 1024 * 1024;<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    long seekCount = 1000;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    long trialCount = 1;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    long seed;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    boolean useRawFs = false;<a name="line.289"></a>
-<span class="sourceLineNo">290</span><a name="line.290"></a>
-<span class="sourceLineNo">291</span>    static final int OP_CREATE = 1;<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    static final int OP_READ = 2;<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    int op = OP_CREATE | OP_READ;<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>    boolean proceed = false;<a name="line.295"></a>
-<span class="sourceLineNo">296</span><a name="line.296"></a>
-<span class="sourceLineNo">297</span>    public MyOptions(String[] args) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      seed = System.nanoTime();<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>      try {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        Options opts = buildOptions();<a name="line.301"></a>
-<span class="sourceLineNo">302</span>        CommandLineParser parser = new GnuParser();<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        CommandLine line = parser.parse(opts, args, true);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        processOptions(line, opts);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        validateOptions();<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      catch (ParseException e) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        System.out.println(e.getMessage());<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        System.out.println("Try \"--help\" option for details.");<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        setStopProceed();<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>    public boolean proceed() {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      return proceed;<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>    private Options buildOptions() {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      Option compress =<a name="line.319"></a>
-<span class="sourceLineNo">320</span>          OptionBuilder.withLongOpt("compress").withArgName("[none|lzo|gz|snappy]")<a name="line.320"></a>
-<span class="sourceLineNo">321</span>              .hasArg().withDescription("compression scheme").create('c');<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>      Option fileSize =<a name="line.323"></a>
-<span class="sourceLineNo">324</span>          OptionBuilder.withLongOpt("file-size").withArgName("size-in-MB")<a name="line.324"></a>
-<span class="sourceLineNo">325</span>              .hasArg().withDescription("target size of the file (in MB).")<a name="line.325"></a>
-<span class="sourceLineNo">326</span>              .create('s');<a name="line.326"></a>
-<span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>      Option fsInputBufferSz =<a name="line.328"></a>
-<span class="sourceLineNo">329</span>          OptionBuilder.withLongOpt("fs-input-buffer").withArgName("size")<a name="line.329"></a>
-<span class="sourceLineNo">330</span>              .hasArg().withDescription(<a name="line.330"></a>
-<span class="sourceLineNo">331</span>                  "size of the file system input buffer (in bytes).").create(<a name="line.331"></a>
-<span class="sourceLineNo">332</span>                  'i');<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>      Option fsOutputBufferSize =<a name="line.334"></a>
-<span class="sourceLineNo">335</span>          OptionBuilder.withLongOpt("fs-output-buffer").withArgName("size")<a name="line.335"></a>
-<span class="sourceLineNo">336</span>              .hasArg().withDescription(<a name="line.336"></a>
-<span class="sourceLineNo">337</span>                  "size of the file system output buffer (in bytes).").create(<a name="line.337"></a>
-<span class="sourceLineNo">338</span>                  'o');<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>      Option keyLen =<a name="line.340"></a>
-<span class="sourceLineNo">341</span>          OptionBuilder<a name="line.341"></a>
-<span class="sourceLineNo">342</span>              .withLongOpt("key-length")<a name="line.342"></a>
-<span class="sourceLineNo">343</span>              .withArgName("min,max")<a name="line.343"></a>
-<span class="sourceLineNo">344</span>              .hasArg()<a name="line.344"></a>
-<span class="sourceLineNo">345</span>              .withDescription(<a name="line.345"></a>
-<span class="sourceLineNo">346</span>                  "the length range of the key (in bytes)")<a name="line.346"></a>
-<span class="sourceLineNo">347</span>              .create('k');<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>      Option valueLen =<a name="line.349"></a>
-<span class="sourceLineNo">350</span>          OptionBuilder<a name="line.350"></a>
-<span class="sourceLineNo">351</span>              .withLongOpt("value-length")<a name="line.351"></a>
-<span class="sourceLineNo">352</span>              .withArgName("min,max")<a name="line.352"></a>
-<span class="sourceLineNo">353</span>              .hasArg()<a name="line.353"></a>
-<span class="sourceLineNo">354</span>              .withDescription(<a name="line.354"></a>
-<span class="sourceLineNo">355</span>                  "the length range of the value (in bytes)")<a name="line.355"></a>
-<span class="sourceLineNo">356</span>              .create('v');<a name="line.356"></a>
-<span class="sourceLineNo">357</span><a name="line.357"></a>
-<span class="sourceLineNo">358</span>      Option blockSz =<a name="line.358"></a>
-<span class="sourceLineNo">359</span>          OptionBuilder.withLongOpt("block").withArgName("size-in-KB").hasArg()<a name="line.359"></a>
-<span class="sourceLineNo">360</span>              .withDescription("minimum block size (in KB)").create('b');<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>      Option operation =<a name="line.362"></a>
-<span class="sourceLineNo">363</span>          OptionBuilder.withLongOpt("operation").withArgName("r|w|rw").hasArg()<a name="line.363"></a>
-<span class="sourceLineNo">364</span>              .withDescription(<a name="line.364"></a>
-<span class="sourceLineNo">365</span>                  "action: seek-only, create-only, seek-after-create").create(<a name="line.365"></a>
-<span class="sourceLineNo">366</span>                  'x');<a name="line.366"></a>
-<span class="sourceLineNo">367</span><a name="line.367"></a>
-<span class="sourceLineNo">368</span>      Option rootDir =<a name="line.368"></a>
-<span class="sourceLineNo">369</span>          OptionBuilder.withLongOpt("root-dir").withArgName("path").hasArg()<a name="line.369"></a>
-<span class="sourceLineNo">370</span>              .withDescription(<a name="line.370"></a>
-<span class="sourceLineNo">371</span>                  "specify root directory where files will be created.")<a name="line.371"></a>
-<span class="sourceLineNo">372</span>              .create('r');<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>      Option file =<a name="line.374"></a>
-<span class="sourceLineNo">375</span>          OptionBuilder.withLongOpt("file").withArgName("name").hasArg()<a name="line.375"></a>
-<span class="sourceLineNo">376</span>              .withDescription("specify the file name to be created or read.")<a name="line.376"></a>
-<span class="sourceLineNo">377</span>              .create('f');<a name="line.377"></a>
-<span class="sourceLineNo">378</span><a name="line.378"></a>
-<span class="sourceLineNo">379</span>      Option seekCount =<a name="line.379"></a>
-<span class="sourceLineNo">380</span>          OptionBuilder<a name="line.380"></a>
-<span class="sourceLineNo">381</span>              .withLongOpt("seek")<a name="line.381"></a>
-<span class="sourceLineNo">382</span>              .withArgName("count")<a name="line.382"></a>
-<span class="sourceLineNo">383</span>              .hasArg()<a name="line.383"></a>
-<span class="sourceLineNo">384</span>              .withDescription(<a name="line.384"></a>
-<span class="sourceLineNo">385</span>                  "specify how many seek operations we perform (requires -x r or -x rw.")<a name="line.385"></a>
-<span class="sourceLineNo">386</span>              .create('n');<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>      Option trialCount =<a name="line.388"></a>
-<span class="sourceLineNo">389</span>          OptionBuilder<a name="line.389"></a>
-<span class="sourceLineNo">390</span>              .withLongOpt("trials")<a name="line.390"></a>
-<span class="sourceLineNo">391</span>              .withArgName("n")<a name="line.391"></a>
-<span class="sourceLineNo">392</span>              .hasArg()<a name="line.392"></a>
-<span class="sourceLineNo">393</span>              .withDescription(<a name="line.393"></a>
-<span class="sourceLineNo">394</span>                  "specify how many times to run the whole benchmark")<a name="line.394"></a>
-<span class="sourceLineNo">395</span>              .create('t');<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>      Option useRawFs =<a name="line.397"></a>
-<span class="sourceLineNo">398</span>          OptionBuilder<a name="line.398"></a>
-<span class="sourceLineNo">399</span>            .withLongOpt("rawfs")<a name="line.399"></a>
-<span class="sourceLineNo">400</span>            .withDescription("use raw instead of checksummed file system")<a name="line.400"></a>
-<span class="sourceLineNo">401</span>            .create();<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>      Option help =<a name="line.403"></a>
-<span class="sourceLineNo">404</span>          OptionBuilder.withLongOpt("help").hasArg(false).withDescription(<a name="line.404"></a>
-<span class="sourceLineNo">405</span>              "show this screen").create("h");<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>      return new Options().addOption(compress).addOption(fileSize).addOption(<a name="line.407"></a>
-<span class="sourceLineNo">408</span>          fsInputBufferSz).addOption(fsOutputBufferSize).addOption(keyLen)<a name="line.408"></a>
-<span class="sourceLineNo">409</span>          .addOption(blockSz).addOption(rootDir).addOption(valueLen)<a name="line.409"></a>
-<span class="sourceLineNo">410</span>          .addOption(operation).addOption(seekCount).addOption(file)<a name="line.410"></a>
-<span class="sourceLineNo">411</span>          .addOption(trialCount).addOption(useRawFs).addOption(help);<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span>    }<a name="line.413"></a>
-<span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>    private void processOptions(CommandLine line, Options opts)<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        throws ParseException {<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      // --help -h and --version -V must be processed first.<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      if (line.hasOption('h')) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        HelpFormatter formatter = new HelpFormatter();<a name="line.419"></a>
-<span class="sourceLineNo">420</span>        System.out.println("TFile and SeqFile benchmark.");<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        System.out.println();<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        formatter.printHelp(100,<a name="line.422"></a>
-<span class="sourceLineNo">423</span>            "java ... TestTFileSeqFileComparison [options]",<a name="line.423"></a>
-<span class="sourceLineNo">424</span>            "\nSupported options:", opts, "");<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        return;<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>      if (line.hasOption('c')) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        compress = line.getOptionValue('c');<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      }<a name="line.430"></a>
-<span class="sourceLineNo">431</span><a name="line.431"></a>
-<span class="sourceLineNo">432</span>      if (line.hasOption('d')) {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>        dictSize = Integer.parseInt(line.getOptionValue('d'));<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      }<a name="line.434"></a>
-<span class="sourceLineNo">435</span><a name="line.435"></a>
-<span class="sourceLineNo">436</span>      if (line.hasOption('s')) {<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        fileSize = Long.parseLong(line.getOptionValue('s')) * 1024 * 1024;<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      }<a name="line.438"></a>
-<span class="sourceLineNo">439</span><a name="line.439"></a>
-<span class="sourceLineNo">440</span>      if (line.hasOption('i')) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>        fsInputBufferSize = Integer.parseInt(line.getOptionValue('i'));<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 (line.hasOption('o')) {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>        fsOutputBufferSize = Integer.parseInt(line.getOptionValue('o'));<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      }<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>      if (line.hasOption('n')) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>        seekCount = Integer.parseInt(line.getOptionValue('n'));<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>      if (line.hasOption('t')) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>        trialCount = Integer.parseInt(line.getOptionValue('t'));<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>      if (line.hasOption('k')) {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>        IntegerRange ir = IntegerRange.parse(line.getOptionValue('k'));<a name="line.457"></a>
-<span class="sourceLineNo">458</span>        minKeyLen = ir.from();<a name="line.458"></a>
-<span class="sourceLineNo">459</span>        maxKeyLen = ir.to();<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      }<a name="line.460"></a>
-<span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>      if (line.hasOption('v')) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>        IntegerRange ir = IntegerRange.parse(line.getOptionValue('v'));<a name="line.463"></a>
-<span class="sourceLineNo">464</span>        minValLength = ir.from();<a name="line.464"></a>
-<span class="sourceLineNo">465</span>        maxValLength = ir.to();<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>      if (line.hasOption('b')) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>        minBlockSize = Integer.parseInt(line.getOptionValue('b')) * 1024;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      }<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>      if (line.hasOption('r')) {<a name="line.472"></a>
-<span class="sourceLineNo">473</span>        rootDir = line.getOptionValue('r');<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      }<a name="line.474"></a>
-<span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>      if (line.hasOption('f')) {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>        file = line.getOptionValue('f');<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      }<a name="line.478"></a>
-<span class="sourceLineNo">479</span><a name="line.479"></a>
-<span class="sourceLineNo">480</span>      if (line.hasOption('S')) {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>        seed = Long.parseLong(line.getOptionValue('S'));<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      }<a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>      if (line.hasOption('x')) {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>        String strOp = line.getOptionValue('x');<a name="line.485"></a>
-<span class="sourceLineNo">486</span>        if (strOp.equals("r")) {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>          op = OP_READ;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>        }<a name="line.488"></a>
-<span class="sourceLineNo">489</span>        else if (strOp.equals("w")) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>          op = OP_CREATE;<a name="line.490"></a>
-<span class="sourceLineNo">491</span>        }<a name="line.491"></a>
-<span class="sourceLineNo">492</span>        else if (strOp.equals("rw")) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>          op = OP_CREATE | OP_READ;<a name="line.493"></a>
-<span class="sourceLineNo">494</span>        }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>        else {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>          throw new ParseException("Unknown action specifier: " + strOp);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>        }<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      }<a name="line.498"></a>
-<span class="sourceLineNo">499</span><a name="line.499"></a>
-<span class="sourceLineNo">500</span>      useRawFs = line.hasOption("rawfs");<a name="line.500"></a>
-<span class="sourceLineNo">501</span><a name="line.501"></a>
-<span class="sourceLineNo">502</span>      proceed = true;<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>    private void validateOptions() throws ParseException {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>      if (!compress.equals("none") &amp;&amp; !compress.equals("lzo")<a name="line.506"></a>
-<span class="sourceLineNo">507</span>          &amp;&amp; !compress.equals("gz") &amp;&amp; !compress.equals("snappy")) {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>        throw new ParseException("Unknown compression scheme: " + compress);<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>      if (minKeyLen &gt;= maxKeyLen) {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>        throw new ParseException(<a name="line.512"></a>
-<span class="sourceLineNo">513</span>            "Max key length must be greater than min key length.");<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      }<a name="line.514"></a>
-<span class="sourceLineNo">515</span><a name="line.515"></a>
-<span class="sourceLineNo">516</span>      if (minValLength &gt;= maxValLength) {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>        throw new ParseException(<a name="line.517"></a>
-<span class="sourceLineNo">518</span>            "Max value length must be greater than min value length.");<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 (minWordLen &gt;= maxWordLen) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>        throw new ParseException(<a name="line.522"></a>
-<span class="sourceLineNo">523</span>            "Max word length must be greater than min word length.");<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      }<a name="line.524"></a>
-<span class="sourceLineNo">525</span>      return;<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>    private void setStopProceed() {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>      proceed = false;<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    }<a name="line.530"></a>
-<span class="sourceLineNo">531</span><a name="line.531"></a>
-<span class="sourceLineNo">532</span>    public boolean doCreate() {<a name="line.532"></a>
-<span class="sourceLineNo">533</span>      return (op &amp; OP_CREATE) != 0;<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    }<a name="line.534"></a>
-<span class="sourceLineNo">535</span><a name="line.535"></a>
-<span class="sourceLineNo">536</span>    public boolean doRead() {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      return (op &amp; OP_READ) != 0;<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    }<a name="line.538"></a>
-<span class="sourceLineNo">539</span>  }<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>  public static void main(String[] argv) throws IOException {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    TestHFileSeek testCase = new TestHFileSeek();<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    MyOptions options = new MyOptions(argv);<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>    if (options.proceed == false) {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>      return;<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    }<a name="line.547"></a>
-<span class="sourceLineNo">548</span><a name="line.548"></a>
-<span class="sourceLineNo">549</span>    testCase.options = options;<a name="line.549"></a>
-<span class="sourceLineNo">550</span>    for (int i = 0; i &lt; options.trialCount; i++) {<a name="line.550"></a>
-<span class="sourceLineNo">551</span>      LOG.info("Beginning trial " + (i+1));<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      testCase.setUp();<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      testCase.testSeeks();<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      testCase.tearDown();<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    }<a name="line.555"></a>
-<span class="sourceLineNo">556</span>  }<a name="line.556"></a>
-<span class="sourceLineNo">557</span><a name="line.557"></a>
-<span class="sourceLineNo">558</span>}<a name="line.558"></a>
-<span class="sourceLineNo">559</span><a name="line.559"></a>
+<span class="sourceLineNo">210</span>      } else {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        ++miss;<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>    timer.stop();<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    System.out.printf(<a name="line.215"></a>
+<span class="sourceLineNo">216</span>        "time: %s...avg seek: %s...%d hit...%d miss...avg I/O size: %.2fKB\n",<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        timer.toString(), NanoTimer.nanoTimeToString(timer.read()<a name="line.217"></a>
+<span class="sourceLineNo">218</span>            / options.seekCount), options.seekCount - miss, miss,<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        (double) totalBytes / 1024 / (options.seekCount - miss));<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>  public void testSeeks() throws IOException {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    if (options.doCreate()) {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      createTFile();<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>    if (options.doRead()) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      seekTFile();<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    }<a name="line.230"></a>
+<span class="sourceLineNo">231</span><a name="line.231"></a>
+<span class="sourceLineNo">232</span>    if (options.doCreate()) {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      fs.delete(path, true);<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    }<a name="line.234"></a>
+<span class="sourceLineNo">235</span>  }<a name="line.235"></a>
+<span class="sourceLineNo">236</span><a name="line.236"></a>
+<span class="sourceLineNo">237</span>  private static class IntegerRange {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    private final int from, to;<a name="line.238"></a>
+<span class="sourceLineNo">239</span><a name="line.239"></a>
+<span class="sourceLineNo">240</span>    public IntegerRange(int from, int to) {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      this.from = from;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      this.to = to;<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>    public static IntegerRange parse(String s) throws ParseException {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      StringTokenizer st = new StringTokenizer(s, " \t,");<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      if (st.countTokens() != 2) {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        throw new ParseException("Bad integer specification: " + s);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      }<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      int from = Integer.parseInt(st.nextToken());<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      int to = Integer.parseInt(st.nextToken());<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      return new IntegerRange(from, to);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    }<a name="line.253"></a>
+<span class="sourceLineNo">254</span><a name="line.254"></a>
+<span class="sourceLineNo">255</span>    public int from() {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      return from;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>    public int to() {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      return to;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    }<a name="line.261"></a>
+<span class="sourceLineNo">262</span>  }<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span>  private static class MyOptions {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    // hard coded constants<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    int dictSize = 1000;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    int minWordLen = 5;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    int maxWordLen = 20;<a name="line.268"></a>
+<span class="sourceLineNo">269</span><a name="line.269"></a>
+<span class="sourceLineNo">270</span>    private HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    String rootDir =<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      TEST_UTIL.getDataTestDir("TestTFileSeek").toString();<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    String file = "TestTFileSeek";<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    // String compress = "lzo"; DISABLED<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    String compress = "none";<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    int minKeyLen = 10;<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    int maxKeyLen = 50;<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    int minValLength = 1024;<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    int maxValLength = 2 * 1024;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    int minBlockSize = 1 * 1024 * 1024;<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    int fsOutputBufferSize = 1;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    int fsInputBufferSize = 0;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    // Default writing 10MB.<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    long fileSize = 10 * 1024 * 1024;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    long seekCount = 1000;<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    long trialCount = 1;<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    long seed;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    boolean useRawFs = false;<a name="line.288"></a>
+<span class="sourceLineNo">289</span><a name="line.289"></a>
+<span class="sourceLineNo">290</span>    static final int OP_CREATE = 1;<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    static final int OP_READ = 2;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    int op = OP_CREATE | OP_READ;<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>    boolean proceed = false;<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>    public MyOptions(String[] args) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      seed = System.nanoTime();<a name="line.297"></a>
+<span class="sourceLineNo">298</span><a name="line.298"></a>
+<span class="sourceLineNo">299</span>      try {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        Options opts = buildOptions();<a name="line.300"></a>
+<span class="sourceLineNo">301</span>        CommandLineParser parser = new GnuParser();<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        CommandLine line = parser.parse(opts, args, true);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        processOptions(line, opts);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>        validateOptions();<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      }<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      catch (ParseException e) {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        System.out.println(e.getMessage());<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        System.out.println("Try \"--help\" option for details.");<a name="line.308"></a>
+<span class="sourceLineNo">309</span>        setStopProceed();<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>    public boolean proceed() {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      return proceed;<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    }<a name="line.315"></a>
+<span class="sourceLineNo">316</span><a name="line.316"></a>
+<span class="sourceLineNo">317</span>    private Options buildOptions() {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      Option compress =<a name="line.318"></a>
+<span class="sourceLineNo">319</span>          OptionBuilder.withLongOpt("compress").withArgName("[none|lzo|gz|snappy]")<a name="line.319"></a>
+<span class="sourceLineNo">320</span>              .hasArg().withDescription("compression scheme").create('c');<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>      Option fileSize =<a name="line.322"></a>
+<span class="sourceLineNo">323</span>          OptionBuilder.withLongOpt("file-size").withArgName("size-in-MB")<a name="line.323"></a>
+<span class="sourceLineNo">324</span>              .hasArg().withDescription("target size of the file (in MB).")<a name="line.324"></a>
+<span class="sourceLineNo">325</span>              .create('s');<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>      Option fsInputBufferSz =<a name="line.327"></a>
+<span class="sourceLineNo">328</span>          OptionBuilder.withLongOpt("fs-input-buffer").withArgName("size")<a name="line.328"></a>
+<span class="sourceLineNo">329</span>              .hasArg().withDescription(<a name="line.329"></a>
+<span class="sourceLineNo">330</span>                  "size of the file system input buffer (in bytes).").create(<a name="line.330"></a>
+<span class="sourceLineNo">331</span>                  'i');<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>      Option fsOutputBufferSize =<a name="line.333"></a>
+<span class="sourceLineNo">334</span>          OptionBuilder.withLongOpt("fs-output-buffer").withArgName("size")<a name="line.334"></a>
+<span class="sourceLineNo">335</span>              .hasArg().withDescription(<a name="line.335"></a>
+<span class="sourceLineNo">336</span>                  "size of the file system output buffer (in bytes).").create(<a name="line.336"></a>
+<span class="sourceLineNo">337</span>                  'o');<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>      Option keyLen =<a name="line.339"></a>
+<span class="sourceLineNo">340</span>          OptionBuilder<a name="line.340"></a>
+<span class="sourceLineNo">341</span>              .withLongOpt("key-length")<a name="line.341"></a>
+<span class="sourceLineNo">342</span>              .withArgName("min,max")<a name="line.342"></a>
+<span class="sourceLineNo">343</span>              .hasArg()<a name="line.343"></a>
+<span class="sourceLineNo">344</span>              .withDescription(<a name="line.344"></a>
+<span class="sourceLineNo">345</span>                  "the length range of the key (in bytes)")<a name="line.345"></a>
+<span class="sourceLineNo">346</span>              .create('k');<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>      Option valueLen =<a name="line.348"></a>
+<span class="sourceLineNo">349</span>          OptionBuilder<a name="line.349"></a>
+<span class="sourceLineNo">350</span>              .withLongOpt("value-length")<a name="line.350"></a>
+<span class="sourceLineNo">351</span>              .withArgName("min,max")<a name="line.351"></a>
+<span class="sourceLineNo">352</span>              .hasArg()<a name="line.352"></a>
+<span class="sourceLineNo">353</span>              .withDescription(<a name="line.353"></a>
+<span class="sourceLineNo">354</span>                  "the length range of the value (in bytes)")<a name="line.354"></a>
+<span class="sourceLineNo">355</span>              .create('v');<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>      Option blockSz =<a name="line.357"></a>
+<span class="sourceLineNo">358</span>          OptionBuilder.withLongOpt("block").withArgName("size-in-KB").hasArg()<a name="line.358"></a>
+<span class="sourceLineNo">359</span>              .withDescription("minimum block size (in KB)").create('b');<a name="line.359"></a>
+<span class="sourceLineNo">360</span><a name="line.360"></a>
+<span class="sourceLineNo">361</span>      Option operation =<a name="line.361"></a>
+<span class="sourceLineNo">362</span>          OptionBuilder.withLongOpt("operation").withArgName("r|w|rw").hasArg()<a name="line.362"></a>
+<span class="sourceLineNo">363</span>              .withDescription(<a name="line.363"></a>
+<span class="sourceLineNo">364</span>                  "action: seek-only, create-only, seek-after-create").create(<a name="line.364"></a>
+<span class="sourceLineNo">365</span>                  'x');<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>      Option rootDir =<a name="line.367"></a>
+<span class="sourceLineNo">368</span>          OptionBuilder.withLongOpt("root-dir").withArgName("path").hasArg()<a name="line.368"></a>
+<span class="sourceLineNo">369</span>              .withDescription(<a name="line.369"></a>
+<span class="sourceLineNo">370</span>                  "specify root directory where files will be created.")<a name="line.370"></a>
+<span class="sourceLineNo">371</span>              .create('r');<a name="line.371"></a>
+<span class="sourceLineNo">372</span><a name="line.372"></a>
+<span class="sourceLineNo">373</span>      Option file =<a name="line.373"></a>
+<span class="sourceLineNo">374</span>          OptionBuilder.withLongOpt("file").withArgName("name").hasArg()<a name="line.374"></a>
+<span class="sourceLineNo">375</span>              .withDescription("specify the file name to be created or read.")<a name="line.375"></a>
+<span class="sourceLineNo">376</span>              .create('f');<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>      Option seekCount =<a name="line.378"></a>
+<span class="sourceLineNo">379</span>          OptionBuilder<a name="line.379"></a>
+<span class="sourceLineNo">380</span>              .withLongOpt("seek")<a name="line.380"></a>
+<span class="sourceLineNo">381</span>              .withArgName("count")<a name="line.381"></a>
+<span class="sourceLineNo">382</span>              .hasArg()<a name="line.382"></a>
+<span class="sourceLineNo">383</span>              .withDescription(<a name="line.383"></a>
+<span class="sourceLineNo">384</span>                  "specify how many seek operations we perform (requires -x r or -x rw.")<a name="line.384"></a>
+<span class="sourceLineNo">385</span>              .create('n');<a name="line.385"></a>
+<span class="sourceLineNo">386</span><a name="line.386"></a>
+<span class="sourceLineNo">387</span>      Option trialCount =<a name="line.387"></a>
+<span class="sourceLineNo">388</span>          OptionBuilder<a name="line.388"></a>
+<span class="sourceLineNo">389</span>              .withLongOpt("trials")<a name="line.389"></a>
+<span class="sourceLineNo">390</span>              .withArgName("n")<a name="line.390"></a>
+<span class="sourceLineNo">391</span>              .hasArg()<a name="line.391"></a>
+<span class="sourceLineNo">392</span>              .withDescription(<a name="line.392"></a>
+<span class="sourceLineNo">393</span>                  "specify how many times to run the whole benchmark")<a name="line.393"></a>
+<span class="sourceLineNo">394</span>              .create('t');<a name="line.394"></a>
+<span class="sourceLineNo">395</span><a name="line.395"></a>
+<span class="sourceLineNo">396</span>      Option useRawFs =<a name="line.396"></a>
+<span class="sourceLineNo">397</span>          OptionBuilder<a name="line.397"></a>
+<span class="sourceLineNo">398</span>            .withLongOpt("rawfs")<a name="line.398"></a>
+<span class="sourceLineNo">399</span>            .withDescription("use raw instead of checksummed file system")<a name="line.399"></a>
+<span class="sourceLineNo">400</span>            .create();<a name="line.400"></a>
+<span class="sourceLineNo">401</span><a name="line.401"></a>
+<span class="sourceLineNo">402</span>      Option help =<a name="line.402"></a>
+<span class="sourceLineNo">403</span>          OptionBuilder.withLongOpt("help").hasArg(false).withDescription(<a name="line.403"></a>
+<span class="sourceLineNo">404</span>              "show this screen").create("h");<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>      return new Options().addOption(compress).addOption(fileSize).addOption(<a name="line.406"></a>
+<span class="sourceLineNo">407</span>          fsInputBufferSz).addOption(fsOutputBufferSize).addOption(keyLen)<a name="line.407"></a>
+<span class="sourceLineNo">408</span>          .addOption(blockSz).addOption(rootDir).addOption(valueLen)<a name="line.408"></a>
+<span class="sourceLineNo">409</span>          .addOption(operation).addOption(seekCount).addOption(file)<a name="line.409"></a>
+<span class="sourceLineNo">410</span>          .addOption(trialCount).addOption(useRawFs).addOption(help);<a name="line.410"></a>
+<span class="sourceLineNo">411</span><a name="line.411"></a>
+<span class="sourceLineNo">412</span>    }<a name="line.412"></a>
+<span class="sourceLineNo">413</span><a name="line.413"></a>
+<span class="sourceLineNo">414</span>    private void processOptions(CommandLine line, Options opts)<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        throws ParseException {<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      // --help -h and --version -V must be processed first.<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      if (line.hasOption('h')) {<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        HelpFormatter formatter = new HelpFormatter();<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        System.out.println("TFile and SeqFile benchmark.");<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        System.out.println();<a name="line.420"></a>
+<span class="sourceLineNo">421</span>        formatter.printHelp(100,<a name="line.421"></a>
+<span class="sourceLineNo">422</span>            "java ... TestTFileSeqFileComparison [options]",<a name="line.422"></a>
+<span class="sourceLineNo">423</span>            "\nSupported options:", opts, "");<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        return;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      }<a name="line.425"></a>
+<span class="sourceLineNo">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>      if (line.hasOption('c')) {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        compress = line.getOptionValue('c');<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>      if (line.hasOption('d')) {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>        dictSize = Integer.parseInt(line.getOptionValue('d'));<a name="line.432"></a>
+<span class="sourceLineNo">433</span>      }<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</span>      if (line.hasOption('s')) {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>        fileSize = Long.parseLong(line.getOptionValue('s')) * 1024 * 1024;<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      }<a name="line.437"></a>
+<span class="sourceLineNo">438</span><a name="line.438"></a>
+<span class="sourceLineNo">439</span>      if (line.hasOption('i')) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>        fsInputBufferSize = Integer.parseInt(line.getOptionValue('i'));<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>      if (line.hasOption('o')) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>        fsOutputBufferSize = Integer.parseInt(line.getOptionValue('o'));<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      }<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>      if (line.hasOption('n')) {<a name="line.447"></a>
+<span class="sourceLineNo">448</span>        seekCount = Integer.parseInt(line.getOptionValue('n'));<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>      if (line.hasOption('t')) {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>        trialCount = Integer.parseInt(line.getOptionValue('t'));<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      }<a name="line.453"></a>
+<span class="sourceLineNo">454</span><a name="line.454"></a>
+<span class="sourceLineNo">455</span>      if (line.hasOption('k')) {<a name="line.455"></a>
+<span class="sourceLineNo">456</span>        IntegerRange ir = IntegerRange.parse(line.getOptionValue('k'));<a name="line.456"></a>
+<span class="sourceLineNo">457</span>        minKeyLen = ir.from();<a name="line.457"></a>
+<span class="sourceLineNo">458</span>        maxKeyLen = ir.to();<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      }<a name="line.459"></a>

<TRUNCATED>

[24/29] hbase-site git commit: Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
index 85f0b9b..b750fa0 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private final class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2268">HStore.StoreFlusherImpl</a>
+<pre>private final class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2267">HStore.StoreFlusherImpl</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFlushContext</a></pre>
 </li>
@@ -279,7 +279,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>tracker</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushLifeCycleTracker.html" title="interface in org.apache.hadoop.hbase.regionserver">FlushLifeCycleTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2270">tracker</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushLifeCycleTracker.html" title="interface in org.apache.hadoop.hbase.regionserver">FlushLifeCycleTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2269">tracker</a></pre>
 </li>
 </ul>
 <a name="cacheFlushSeqNum">
@@ -288,7 +288,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>cacheFlushSeqNum</h4>
-<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2271">cacheFlushSeqNum</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2270">cacheFlushSeqNum</a></pre>
 </li>
 </ul>
 <a name="snapshot">
@@ -297,7 +297,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshot</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSnapshot</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2272">snapshot</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSnapshot</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2271">snapshot</a></pre>
 </li>
 </ul>
 <a name="tempFiles">
@@ -306,7 +306,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>tempFiles</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2273">tempFiles</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2272">tempFiles</a></pre>
 </li>
 </ul>
 <a name="committedFiles">
@@ -315,7 +315,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>committedFiles</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2274">committedFiles</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2273">committedFiles</a></pre>
 </li>
 </ul>
 <a name="cacheFlushCount">
@@ -324,7 +324,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>cacheFlushCount</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2275">cacheFlushCount</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2274">cacheFlushCount</a></pre>
 </li>
 </ul>
 <a name="cacheFlushSize">
@@ -333,7 +333,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>cacheFlushSize</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2276">cacheFlushSize</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2275">cacheFlushSize</a></pre>
 </li>
 </ul>
 <a name="outputFileSize">
@@ -342,7 +342,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockListLast">
 <li class="blockList">
 <h4>outputFileSize</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2277">outputFileSize</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2276">outputFileSize</a></pre>
 </li>
 </ul>
 </li>
@@ -359,7 +359,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockListLast">
 <li class="blockList">
 <h4>StoreFlusherImpl</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2279">StoreFlusherImpl</a>(long&nbsp;cacheFlushSeqNum,
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2278">StoreFlusherImpl</a>(long&nbsp;cacheFlushSeqNum,
                          <a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushLifeCycleTracker.html" title="interface in org.apache.hadoop.hbase.regionserver">FlushLifeCycleTracker</a>&nbsp;tracker)</pre>
 </li>
 </ul>
@@ -377,7 +377,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>prepare</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2289">prepare</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2288">prepare</a>()</pre>
 <div class="block">This is not thread safe. The caller should have a lock on the region or the store.
  If necessary, the lock can be added with the patch provided in HBASE-10087</div>
 <dl>
@@ -394,7 +394,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>flushCache</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2299">flushCache</a>(<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2298">flushCache</a>(<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status)
                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#flushCache-org.apache.hadoop.hbase.monitoring.MonitoredTask-">StoreFlushContext</a></code></span></div>
 <div class="block">Flush the cache (create the new store file)
@@ -415,7 +415,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>commit</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2308">commit</a>(<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2307">commit</a>(<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status)
                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#commit-org.apache.hadoop.hbase.monitoring.MonitoredTask-">StoreFlushContext</a></code></span></div>
 <div class="block">Commit the flush - add the store file to the store and clear the
@@ -440,7 +440,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>getOutputFileSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2351">getOutputFileSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2350">getOutputFileSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#getOutputFileSize--">getOutputFileSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFlushContext</a></code></dd>
@@ -455,7 +455,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>getCommittedFiles</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2356">getCommittedFiles</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2355">getCommittedFiles</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#getCommittedFiles--">StoreFlushContext</a></code></span></div>
 <div class="block">Returns the newly committed files from the flush. Called only if commit returns true</div>
 <dl>
@@ -472,7 +472,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>replayFlush</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2369">replayFlush</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;fileNames,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2368">replayFlush</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;fileNames,
                         boolean&nbsp;dropMemstoreSnapshot)
                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Similar to commit, but called in secondary region replicas for replaying the
@@ -495,7 +495,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockListLast">
 <li class="blockList">
 <h4>abort</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2401">abort</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2400">abort</a>()
            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Abort the snapshot preparation. Drops the snapshot if any.</div>
 <dl>


[23/29] hbase-site git commit: Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.html
index de64998..49f1f19 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.html
@@ -1759,7 +1759,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>FIXED_OVERHEAD</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2430">FIXED_OVERHEAD</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2429">FIXED_OVERHEAD</a></pre>
 </li>
 </ul>
 <a name="DEEP_OVERHEAD">
@@ -1768,7 +1768,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockListLast">
 <li class="blockList">
 <h4>DEEP_OVERHEAD</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2434">DEEP_OVERHEAD</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2433">DEEP_OVERHEAD</a></pre>
 </li>
 </ul>
 </li>
@@ -3027,7 +3027,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompactionProgress</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionProgress.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionProgress</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1731">getCompactionProgress</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionProgress.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionProgress</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1730">getCompactionProgress</a>()</pre>
 <div class="block">getter for CompactionProgress object</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -3041,7 +3041,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>shouldPerformMajorCompaction</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1736">shouldPerformMajorCompaction</a>()
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1735">shouldPerformMajorCompaction</a>()
                                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#shouldPerformMajorCompaction--">Store</a></code></span></div>
 <div class="block">Tests whether we should run a major compaction. For example, if the configured major compaction
@@ -3062,7 +3062,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>requestCompaction</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1748">requestCompaction</a>()
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1747">requestCompaction</a>()
                                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -3076,7 +3076,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>requestCompaction</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1752">requestCompaction</a>(int&nbsp;priority,
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1751">requestCompaction</a>(int&nbsp;priority,
                                                      <a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionLifeCycleTracker.html" title="interface in org.apache.hadoop.hbase.regionserver.compactions">CompactionLifeCycleTracker</a>&nbsp;tracker,
                                                      <a href="../../../../../org/apache/hadoop/hbase/security/User.html" title="class in org.apache.hadoop.hbase.security">User</a>&nbsp;user)
                                               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -3092,7 +3092,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>addToCompactingFiles</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1834">addToCompactingFiles</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;filesToAdd)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1833">addToCompactingFiles</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;filesToAdd)</pre>
 <div class="block">Adds the files to compacting files. filesCompacting must be locked.</div>
 </li>
 </ul>
@@ -3102,7 +3102,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>removeUnneededFiles</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1846">removeUnneededFiles</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1845">removeUnneededFiles</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>
@@ -3116,7 +3116,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>cancelRequestedCompaction</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1882">cancelRequestedCompaction</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&nbsp;compaction)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1881">cancelRequestedCompaction</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionContext.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionContext</a>&nbsp;compaction)</pre>
 </li>
 </ul>
 <a name="finishCompactionRequest-org.apache.hadoop.hbase.regionserver.compactions.CompactionRequestImpl-">
@@ -3125,7 +3125,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>finishCompactionRequest</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1886">finishCompactionRequest</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionRequestImpl.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionRequestImpl</a>&nbsp;cr)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1885">finishCompactionRequest</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/CompactionRequestImpl.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionRequestImpl</a>&nbsp;cr)</pre>
 </li>
 </ul>
 <a name="validateStoreFile-org.apache.hadoop.fs.Path-">
@@ -3134,7 +3134,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>validateStoreFile</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1902">validateStoreFile</a>(org.apache.hadoop.fs.Path&nbsp;path)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1901">validateStoreFile</a>(org.apache.hadoop.fs.Path&nbsp;path)
                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Validates a store file by opening and closing it. In HFileV2 this should not be an expensive
  operation.</div>
@@ -3152,7 +3152,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>completeCompaction</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1931">completeCompaction</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;compactedFiles)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1930">completeCompaction</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;compactedFiles)
                            throws <a href="https://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"><p>It works by processing a compaction that's been written to disk.
 
@@ -3178,7 +3178,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>versionsToReturn</h4>
-<pre>int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1950">versionsToReturn</a>(int&nbsp;wantedVersions)</pre>
+<pre>int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1949">versionsToReturn</a>(int&nbsp;wantedVersions)</pre>
 </li>
 </ul>
 <a name="canSplit--">
@@ -3187,7 +3187,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>canSplit</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1960">canSplit</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1959">canSplit</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#canSplit--">Store</a></code></span></div>
 <div class="block">Returns whether this store is splittable, i.e., no reference file in this store.</div>
 <dl>
@@ -3202,7 +3202,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getSplitPoint</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1977">getSplitPoint</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Optional.html?is-external=true" title="class or interface in java.util">Optional</a>&lt;byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1976">getSplitPoint</a>()</pre>
 <div class="block">Determines if Store should be split.</div>
 </li>
 </ul>
@@ -3212,7 +3212,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getLastCompactSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1997">getLastCompactSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1996">getLastCompactSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getLastCompactSize--">getLastCompactSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -3227,7 +3227,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2002">getSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2001">getSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getSize--">getSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -3242,7 +3242,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>triggerMajorCompaction</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2006">triggerMajorCompaction</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2005">triggerMajorCompaction</a>()</pre>
 </li>
 </ul>
 <a name="getScanner-org.apache.hadoop.hbase.client.Scan-java.util.NavigableSet-long-">
@@ -3251,7 +3251,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getScanner</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2022">getScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2021">getScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
                                   <a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;byte[]&gt;&nbsp;targetCols,
                                   long&nbsp;readPt)
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -3274,7 +3274,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>createScanner</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2039">createScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2038">createScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
                                         <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a>&nbsp;scanInfo,
                                         <a href="https://docs.oracle.com/javase/8/docs/api/java/util/NavigableSet.html?is-external=true" title="class or interface in java.util">NavigableSet</a>&lt;byte[]&gt;&nbsp;targetCols,
                                         long&nbsp;readPt)
@@ -3291,7 +3291,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>recreateScanners</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2061">recreateScanners</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;currentFileScanners,
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2060">recreateScanners</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;currentFileScanners,
                                               boolean&nbsp;cacheBlocks,
                                               boolean&nbsp;usePread,
                                               boolean&nbsp;isCompaction,
@@ -3330,7 +3330,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2095">toString</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2094">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -3343,7 +3343,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getStorefilesCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2100">getStorefilesCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2099">getStorefilesCount</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getStorefilesCount--">getStorefilesCount</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -3358,7 +3358,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompactedFilesCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2105">getCompactedFilesCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2104">getCompactedFilesCount</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getCompactedFilesCount--">getCompactedFilesCount</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -3373,7 +3373,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getStoreFileAgeStream</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/stream/LongStream.html?is-external=true" title="class or interface in java.util.stream">LongStream</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2109">getStoreFileAgeStream</a>()</pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/stream/LongStream.html?is-external=true" title="class or interface in java.util.stream">LongStream</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2108">getStoreFileAgeStream</a>()</pre>
 </li>
 </ul>
 <a name="getMaxStoreFileAge--">
@@ -3382,7 +3382,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxStoreFileAge</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2122">getMaxStoreFileAge</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2121">getMaxStoreFileAge</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getMaxStoreFileAge--">getMaxStoreFileAge</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -3397,7 +3397,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getMinStoreFileAge</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2127">getMinStoreFileAge</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2126">getMinStoreFileAge</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getMinStoreFileAge--">getMinStoreFileAge</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -3412,7 +3412,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getAvgStoreFileAge</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalDouble.html?is-external=true" title="class or interface in java.util">OptionalDouble</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2132">getAvgStoreFileAge</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/OptionalDouble.html?is-external=true" title="class or interface in java.util">OptionalDouble</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2131">getAvgStoreFileAge</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getAvgStoreFileAge--">getAvgStoreFileAge</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -3427,7 +3427,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumReferenceFiles</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2137">getNumReferenceFiles</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2136">getNumReferenceFiles</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getNumReferenceFiles--">getNumReferenceFiles</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -3442,7 +3442,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumHFiles</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2143">getNumHFiles</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2142">getNumHFiles</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getNumHFiles--">getNumHFiles</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -3457,7 +3457,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getStoreSizeUncompressed</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2149">getStoreSizeUncompressed</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2148">getStoreSizeUncompressed</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getStoreSizeUncompressed--">getStoreSizeUncompressed</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -3472,7 +3472,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getStorefilesSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2154">getStorefilesSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2153">getStorefilesSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getStorefilesSize--">getStorefilesSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -3487,7 +3487,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getHFilesSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2160">getHFilesSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2159">getHFilesSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getHFilesSize--">getHFilesSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -3502,7 +3502,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getTotalUmcompressedBytes</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2166">getTotalUmcompressedBytes</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;files)</pre>
+<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2165">getTotalUmcompressedBytes</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;files)</pre>
 </li>
 </ul>
 <a name="getStorefilesSize-java.util.Collection-java.util.function.Predicate-">
@@ -3511,7 +3511,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getStorefilesSize</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2171">getStorefilesSize</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;files,
+<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2170">getStorefilesSize</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;files,
                                <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Predicate.html?is-external=true" title="class or interface in java.util.function">Predicate</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;predicate)</pre>
 </li>
 </ul>
@@ -3521,7 +3521,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getStoreFileFieldSize</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2176">getStoreFileFieldSize</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/ToLongFunction.html?is-external=true" title="class or interface in java.util.function">ToLongFunction</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&gt;&nbsp;f)</pre>
+<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2175">getStoreFileFieldSize</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/ToLongFunction.html?is-external=true" title="class or interface in java.util.function">ToLongFunction</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileReader.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileReader</a>&gt;&nbsp;f)</pre>
 </li>
 </ul>
 <a name="getStorefilesRootLevelIndexSize--">
@@ -3530,7 +3530,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getStorefilesRootLevelIndexSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2188">getStorefilesRootLevelIndexSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2187">getStorefilesRootLevelIndexSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getStorefilesRootLevelIndexSize--">getStorefilesRootLevelIndexSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -3545,7 +3545,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getTotalStaticIndexSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2193">getTotalStaticIndexSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2192">getTotalStaticIndexSize</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getTotalStaticIndexSize--">Store</a></code></span></div>
 <div class="block">Returns the total size of all index blocks in the data block indexes, including the root level,
  intermediate levels, and the leaf level for multi-level indexes, or just the root level for
@@ -3564,7 +3564,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getTotalStaticBloomSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2198">getTotalStaticBloomSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2197">getTotalStaticBloomSize</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getTotalStaticBloomSize--">Store</a></code></span></div>
 <div class="block">Returns the total byte size of all Bloom filter bit arrays. For compound Bloom filters even the
  Bloom blocks currently not loaded into the block cache are counted.</div>
@@ -3582,7 +3582,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getMemStoreSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2203">getMemStoreSize</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2202">getMemStoreSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getMemStoreSize--">getMemStoreSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -3597,7 +3597,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompactPriority</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2208">getCompactPriority</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2207">getCompactPriority</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getCompactPriority--">getCompactPriority</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -3610,7 +3610,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>throttleCompaction</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2216">throttleCompaction</a>(long&nbsp;compactionSize)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2215">throttleCompaction</a>(long&nbsp;compactionSize)</pre>
 </li>
 </ul>
 <a name="getHRegion--">
@@ -3619,7 +3619,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getHRegion</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2220">getHRegion</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2219">getHRegion</a>()</pre>
 </li>
 </ul>
 <a name="getCoprocessorHost--">
@@ -3628,7 +3628,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getCoprocessorHost</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.html" title="class in org.apache.hadoop.hbase.regionserver">RegionCoprocessorHost</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2224">getCoprocessorHost</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.html" title="class in org.apache.hadoop.hbase.regionserver">RegionCoprocessorHost</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2223">getCoprocessorHost</a>()</pre>
 </li>
 </ul>
 <a name="getRegionInfo--">
@@ -3637,7 +3637,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionInfo</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2229">getRegionInfo</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2228">getRegionInfo</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getRegionInfo--">getRegionInfo</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -3652,7 +3652,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>areWritesEnabled</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2234">areWritesEnabled</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2233">areWritesEnabled</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#areWritesEnabled--">areWritesEnabled</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -3665,7 +3665,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getSmallestReadPoint</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2239">getSmallestReadPoint</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2238">getSmallestReadPoint</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getSmallestReadPoint--">getSmallestReadPoint</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -3682,7 +3682,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>upsert</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2254">upsert</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;cells,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2253">upsert</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;cells,
                    long&nbsp;readpoint,
                    <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)
             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -3707,7 +3707,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>createFlushContext</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFlushContext</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2264">createFlushContext</a>(long&nbsp;cacheFlushId,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFlushContext</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2263">createFlushContext</a>(long&nbsp;cacheFlushId,
                                             <a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushLifeCycleTracker.html" title="interface in org.apache.hadoop.hbase.regionserver">FlushLifeCycleTracker</a>&nbsp;tracker)</pre>
 </li>
 </ul>
@@ -3717,7 +3717,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>needsCompaction</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2413">needsCompaction</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2412">needsCompaction</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#needsCompaction--">Store</a></code></span></div>
 <div class="block">See if there's too much store files in this store</div>
 <dl>
@@ -3735,7 +3735,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getCacheConfig</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2426">getCacheConfig</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2425">getCacheConfig</a>()</pre>
 <div class="block">Used for tests.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -3749,7 +3749,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>heapSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2441">heapSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2440">heapSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html#heapSize--">heapSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title="interface in org.apache.hadoop.hbase.io">HeapSize</a></code></dd>
@@ -3765,7 +3765,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getComparator</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2447">getComparator</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2446">getComparator</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getComparator--">getComparator</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -3778,7 +3778,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getScanInfo</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2451">getScanInfo</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2450">getScanInfo</a>()</pre>
 </li>
 </ul>
 <a name="setScanInfo-org.apache.hadoop.hbase.regionserver.ScanInfo-">
@@ -3787,7 +3787,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>setScanInfo</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2459">setScanInfo</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a>&nbsp;scanInfo)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2458">setScanInfo</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a>&nbsp;scanInfo)</pre>
 <div class="block">Set scan info, used by test</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3801,7 +3801,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>hasTooManyStoreFiles</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2464">hasTooManyStoreFiles</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2463">hasTooManyStoreFiles</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#hasTooManyStoreFiles--">hasTooManyStoreFiles</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -3816,7 +3816,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getFlushedCellsCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2469">getFlushedCellsCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2468">getFlushedCellsCount</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getFlushedCellsCount--">getFlushedCellsCount</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -3831,7 +3831,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getFlushedCellsSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2474">getFlushedCellsSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2473">getFlushedCellsSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getFlushedCellsSize--">getFlushedCellsSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -3846,7 +3846,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getFlushedOutputFileSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2479">getFlushedOutputFileSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2478">getFlushedOutputFileSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getFlushedOutputFileSize--">getFlushedOutputFileSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -3861,7 +3861,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompactedCellsCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2484">getCompactedCellsCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2483">getCompactedCellsCount</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getCompactedCellsCount--">getCompactedCellsCount</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -3876,7 +3876,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompactedCellsSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2489">getCompactedCellsSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2488">getCompactedCellsSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getCompactedCellsSize--">getCompactedCellsSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -3891,7 +3891,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getMajorCompactedCellsCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2494">getMajorCompactedCellsCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2493">getMajorCompactedCellsCount</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getMajorCompactedCellsCount--">getMajorCompactedCellsCount</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -3906,7 +3906,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getMajorCompactedCellsSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2499">getMajorCompactedCellsSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2498">getMajorCompactedCellsSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getMajorCompactedCellsSize--">getMajorCompactedCellsSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -3921,7 +3921,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getStoreEngine</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreEngine.html" title="class in org.apache.hadoop.hbase.regionserver">StoreEngine</a>&lt;?,?,?,?&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2508">getStoreEngine</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreEngine.html" title="class in org.apache.hadoop.hbase.regionserver">StoreEngine</a>&lt;?,?,?,?&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2507">getStoreEngine</a>()</pre>
 <div class="block">Returns the StoreEngine that is backing this concrete implementation of Store.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -3935,7 +3935,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getOffPeakHours</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/OffPeakHours.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">OffPeakHours</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2512">getOffPeakHours</a>()</pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/OffPeakHours.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">OffPeakHours</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2511">getOffPeakHours</a>()</pre>
 </li>
 </ul>
 <a name="onConfigurationChange-org.apache.hadoop.conf.Configuration-">
@@ -3944,7 +3944,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>onConfigurationChange</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2520">onConfigurationChange</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2519">onConfigurationChange</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 <div class="block">This method would be called by the <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationManager.html" title="class in org.apache.hadoop.hbase.conf"><code>ConfigurationManager</code></a>
  object when the <code>Configuration</code> object is reloaded from disk.</div>
 <dl>
@@ -3959,7 +3959,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>registerChildren</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2532">registerChildren</a>(<a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationManager.html" title="class in org.apache.hadoop.hbase.conf">ConfigurationManager</a>&nbsp;manager)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2531">registerChildren</a>(<a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationManager.html" title="class in org.apache.hadoop.hbase.conf">ConfigurationManager</a>&nbsp;manager)</pre>
 <div class="block">Needs to be called to register the children to the manager.</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -3975,7 +3975,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>deregisterChildren</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2540">deregisterChildren</a>(<a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationManager.html" title="class in org.apache.hadoop.hbase.conf">ConfigurationManager</a>&nbsp;manager)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2539">deregisterChildren</a>(<a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationManager.html" title="class in org.apache.hadoop.hbase.conf">ConfigurationManager</a>&nbsp;manager)</pre>
 <div class="block">Needs to be called to deregister the children from the manager.</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -3991,7 +3991,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompactionPressure</h4>
-<pre>public&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2545">getCompactionPressure</a>()</pre>
+<pre>public&nbsp;double&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2544">getCompactionPressure</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getCompactionPressure--">Store</a></code></span></div>
 <div class="block">This value can represent the degree of emergency of compaction for this store. It should be
  greater than or equal to 0.0, any value greater than 1.0 means we have too many store files.
@@ -4018,7 +4018,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>isPrimaryReplicaStore</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2550">isPrimaryReplicaStore</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2549">isPrimaryReplicaStore</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#isPrimaryReplicaStore--">isPrimaryReplicaStore</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -4031,7 +4031,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>preSnapshotOperation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2558">preSnapshotOperation</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2557">preSnapshotOperation</a>()</pre>
 <div class="block">Sets the store up for a region level snapshot operation.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -4045,7 +4045,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>postSnapshotOperation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2566">postSnapshotOperation</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2565">postSnapshotOperation</a>()</pre>
 <div class="block">Perform tasks needed after the completion of snapshot operation.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -4059,7 +4059,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>closeAndArchiveCompactedFiles</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2573">closeAndArchiveCompactedFiles</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2572">closeAndArchiveCompactedFiles</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">Closes and archives the compacted files under this store</div>
 <dl>
@@ -4074,7 +4074,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>closeAndArchiveCompactedFiles</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2578">closeAndArchiveCompactedFiles</a>(boolean&nbsp;storeClosing)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2577">closeAndArchiveCompactedFiles</a>(boolean&nbsp;storeClosing)
                                    throws <a href="https://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>
@@ -4088,7 +4088,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>removeCompactedfiles</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2608">removeCompactedfiles</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;compactedfiles,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2607">removeCompactedfiles</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;compactedfiles,
                                   boolean&nbsp;storeClosing)
                            throws <a href="https://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">Archives and removes the compacted files</div>
@@ -4106,7 +4106,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getStoreFileSize</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2720">getStoreFileSize</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;file)</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2719">getStoreFileSize</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;file)</pre>
 <div class="block">Computes the length of a store file without succumbing to any errors along the way. If an
  error is encountered, the implementation returns <code>0</code> instead of the actual size.</div>
 <dl>
@@ -4123,7 +4123,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>preFlushSeqIDEstimation</h4>
-<pre>public&nbsp;<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>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2738">preFlushSeqIDEstimation</a>()</pre>
+<pre>public&nbsp;<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>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2737">preFlushSeqIDEstimation</a>()</pre>
 </li>
 </ul>
 <a name="isSloppyMemStore--">
@@ -4132,7 +4132,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>isSloppyMemStore</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2743">isSloppyMemStore</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2742">isSloppyMemStore</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#isSloppyMemStore--">isSloppyMemStore</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -4147,7 +4147,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>clearCompactedfiles</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2747">clearCompactedfiles</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;filesToRemove)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2746">clearCompactedfiles</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;filesToRemove)
                           throws <a href="https://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>
@@ -4161,7 +4161,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>reportArchivedFilesForQuota</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2757">reportArchivedFilesForQuota</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;archivedFiles,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2756">reportArchivedFilesForQuota</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFile.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFile</a>&gt;&nbsp;archivedFiles,
                                  <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;fileSizes)</pre>
 </li>
 </ul>
@@ -4171,7 +4171,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getCurrentParallelPutCount</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2784">getCurrentParallelPutCount</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2783">getCurrentParallelPutCount</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getCurrentParallelPutCount--">getCurrentParallelPutCount</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/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 47f803b..a6fbc7d 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -717,19 +717,19 @@
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/SplitLogWorker.TaskExecutor.Status.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">SplitLogWorker.TaskExecutor.Status</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/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/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/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">CompactingMemStore.IndexType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.LimitScope.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.LimitScope</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.Operation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Region.Operation</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/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/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/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/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/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/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/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/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/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/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/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/13ae5225/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 b377318..23060c2 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
@@ -131,8 +131,8 @@
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.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>
 <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/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">ScanQueryMatcher.MatchCode</span></a></li>
 </ul>
 </li>
 </ul>


[05/29] hbase-site git commit: Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.

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

<TRUNCATED>

[25/29] hbase-site git commit: Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/org/apache/hadoop/hbase/KeyValueUtil.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/KeyValueUtil.html b/devapidocs/org/apache/hadoop/hbase/KeyValueUtil.html
index ab787d1..70b34ee 100644
--- a/devapidocs/org/apache/hadoop/hbase/KeyValueUtil.html
+++ b/devapidocs/org/apache/hadoop/hbase/KeyValueUtil.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":9,"i14":9,"i15":9,"i16":9,"i17":9,"i18":9,"i19":9,"i20":9,"i21":9,"i22":9,"i23":41,"i24":41,"i25":9,"i26":9,"i27":9,"i28":9,"i29":9,"i30":9,"i31":9,"i32":9,"i33":9,"i34":9,"i35":9,"i36":9,"i37":9};
+var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9,"i13":9,"i14":9,"i15":9,"i16":9,"i17":9,"i18":9,"i19":9,"i20":9,"i21":9,"i22":9,"i23":9,"i24":9,"i25":9,"i26":41,"i27":41,"i28":9,"i29":9,"i30":9,"i31":9,"i32":9,"i33":9,"i34":9,"i35":9,"i36":9,"i37":9,"i38":9,"i39":9};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -185,40 +185,53 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
                   boolean&nbsp;includeMvccVersion)</code>&nbsp;</td>
 </tr>
 <tr id="i5" class="rowColor">
+<td class="colFirst"><code>(package private) static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/KeyValueUtil.html#bytesToHex-byte:A-int-int-">bytesToHex</a></span>(byte[]&nbsp;buf,
+          int&nbsp;offset,
+          int&nbsp;length)</code>&nbsp;</td>
+</tr>
+<tr id="i6" 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/KeyValueUtil.html#checkKeyValueBytes-byte:A-int-int-boolean-">checkKeyValueBytes</a></span>(byte[]&nbsp;buf,
+                  int&nbsp;offset,
+                  int&nbsp;length,
+                  boolean&nbsp;withTags)</code>&nbsp;</td>
+</tr>
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/KeyValueUtil.html#copyKeyToNewByteBuffer-org.apache.hadoop.hbase.Cell-">copyKeyToNewByteBuffer</a></span>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>
 <div class="block">The position will be set to the beginning of the new ByteBuffer</div>
 </td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>static byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/KeyValueUtil.html#copyToNewByteArray-org.apache.hadoop.hbase.Cell-">copyToNewByteArray</a></span>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>&nbsp;</td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>static <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/KeyValueUtil.html#copyToNewKeyValue-org.apache.hadoop.hbase.Cell-">copyToNewKeyValue</a></span>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>
 <div class="block">copy the cell to create a new keyvalue</div>
 </td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code>static <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/KeyValueUtil.html#create-java.io.DataInput-">create</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/DataInput.html?is-external=true" title="class or interface in java.io">DataInput</a>&nbsp;in)</code>&nbsp;</td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>static <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/KeyValueUtil.html#create-int-java.io.DataInput-">create</a></span>(int&nbsp;length,
       <a href="https://docs.oracle.com/javase/8/docs/api/java/io/DataInput.html?is-external=true" title="class or interface in java.io">DataInput</a>&nbsp;in)</code>
 <div class="block">Create a KeyValue reading <code>length</code> from <code>in</code></div>
 </td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>static <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/KeyValueUtil.html#createFirstOnRow-byte:A-">createFirstOnRow</a></span>(byte[]&nbsp;row)</code>
 <div class="block">Create a KeyValue that is smaller than all other possible KeyValues
  for the given row.</div>
 </td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>static <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/KeyValueUtil.html#createFirstOnRow-byte:A-byte:A-byte:A-">createFirstOnRow</a></span>(byte[]&nbsp;row,
                 byte[]&nbsp;family,
@@ -227,7 +240,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
  smaller than all other possible KeyValues that have the same row,family,qualifier.</div>
 </td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>static <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/KeyValueUtil.html#createFirstOnRow-byte:A-byte:A-byte:A-byte:A-">createFirstOnRow</a></span>(byte[]&nbsp;buffer,
                 byte[]&nbsp;row,
@@ -238,14 +251,14 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
  family, qualifier.</div>
 </td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>static <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/KeyValueUtil.html#createFirstOnRow-byte:A-byte:A-byte:A-long-">createFirstOnRow</a></span>(byte[]&nbsp;row,
                 byte[]&nbsp;f,
                 byte[]&nbsp;q,
                 long&nbsp;ts)</code>&nbsp;</td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>static <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/KeyValueUtil.html#createFirstOnRow-byte:A-int-byte:A-int-int-byte:A-int-int-byte:A-int-int-">createFirstOnRow</a></span>(byte[]&nbsp;buffer,
                 int&nbsp;boffset,
@@ -263,7 +276,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
  family, qualifier.</div>
 </td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code>static <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/KeyValueUtil.html#createFirstOnRow-byte:A-int-int-byte:A-int-int-byte:A-int-int-">createFirstOnRow</a></span>(byte[]&nbsp;row,
                 int&nbsp;roffset,
@@ -279,7 +292,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
  family, qualifier.</div>
 </td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code>static <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/KeyValueUtil.html#createFirstOnRow-byte:A-int-short-">createFirstOnRow</a></span>(byte[]&nbsp;row,
                 int&nbsp;roffset,
@@ -288,7 +301,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
  for the given row.</div>
 </td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i19" class="rowColor">
 <td class="colFirst"><code>static <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/KeyValueUtil.html#createFirstOnRow-byte:A-long-">createFirstOnRow</a></span>(byte[]&nbsp;row,
                 long&nbsp;ts)</code>
@@ -296,27 +309,34 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
  are older than the passed timestamp.</div>
 </td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i20" class="altColor">
+<td class="colFirst"><code>static <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/KeyValueUtil.html#createKeyValueFromInputStream-java.io.InputStream-boolean-">createKeyValueFromInputStream</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;in,
+                             boolean&nbsp;withTags)</code>
+<div class="block">Create a KeyValue reading from the raw InputStream.</div>
+</td>
+</tr>
+<tr id="i21" class="rowColor">
 <td class="colFirst"><code>static <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/KeyValueUtil.html#createKeyValueFromKey-byte:A-">createKeyValueFromKey</a></span>(byte[]&nbsp;b)</code>&nbsp;</td>
 </tr>
-<tr id="i19" class="rowColor">
+<tr id="i22" class="altColor">
 <td class="colFirst"><code>static <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/KeyValueUtil.html#createKeyValueFromKey-byte:A-int-int-">createKeyValueFromKey</a></span>(byte[]&nbsp;b,
                      int&nbsp;o,
                      int&nbsp;l)</code>&nbsp;</td>
 </tr>
-<tr id="i20" class="altColor">
+<tr id="i23" class="rowColor">
 <td class="colFirst"><code>static <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/KeyValueUtil.html#createKeyValueFromKey-java.nio.ByteBuffer-">createKeyValueFromKey</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;bb)</code>&nbsp;</td>
 </tr>
-<tr id="i21" class="rowColor">
+<tr id="i24" class="altColor">
 <td class="colFirst"><code>static <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/KeyValueUtil.html#createLastOnRow-byte:A-">createLastOnRow</a></span>(byte[]&nbsp;row)</code>
 <div class="block">Creates a KeyValue that is last on the specified row id.</div>
 </td>
 </tr>
-<tr id="i22" class="altColor">
+<tr id="i25" class="rowColor">
 <td class="colFirst"><code>static <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/KeyValueUtil.html#createLastOnRow-byte:A-int-int-byte:A-int-int-byte:A-int-int-">createLastOnRow</a></span>(byte[]&nbsp;row,
                int&nbsp;roffset,
@@ -332,7 +352,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
  row, family, qualifier.</div>
 </td>
 </tr>
-<tr id="i23" class="rowColor">
+<tr id="i26" class="altColor">
 <td class="colFirst"><code>static <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/KeyValueUtil.html#ensureKeyValue-org.apache.hadoop.hbase.Cell-">ensureKeyValue</a></span>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -340,44 +360,37 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </div>
 </td>
 </tr>
-<tr id="i24" class="altColor">
+<tr id="i27" class="rowColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/KeyValueUtil.html#ensureKeyValues-java.util.List-">ensureKeyValues</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;cells)</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 </td>
 </tr>
-<tr id="i25" class="rowColor">
+<tr id="i28" class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/KeyValueUtil.html#getSerializedSize-org.apache.hadoop.hbase.Cell-boolean-">getSerializedSize</a></span>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                  boolean&nbsp;withTags)</code>&nbsp;</td>
 </tr>
-<tr id="i26" class="altColor">
-<td class="colFirst"><code>static <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/KeyValueUtil.html#iscreate-java.io.InputStream-boolean-">iscreate</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;in,
-        boolean&nbsp;withTags)</code>
-<div class="block">Create a KeyValue reading from the raw InputStream.</div>
-</td>
-</tr>
-<tr id="i27" class="rowColor">
+<tr id="i29" class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/KeyValueUtil.html#keyLength-org.apache.hadoop.hbase.Cell-">keyLength</a></span>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>
 <div class="block">Returns number of bytes this cell's key part would have been used if serialized as in
  <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase"><code>KeyValue</code></a>.</div>
 </td>
 </tr>
-<tr id="i28" class="altColor">
+<tr id="i30" class="altColor">
 <td class="colFirst"><code>private static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/KeyValueUtil.html#keyLength-short-byte-int-">keyLength</a></span>(short&nbsp;rlen,
          byte&nbsp;flen,
          int&nbsp;qlen)</code>&nbsp;</td>
 </tr>
-<tr id="i29" class="rowColor">
+<tr id="i31" class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/KeyValueUtil.html#length-org.apache.hadoop.hbase.Cell-">length</a></span>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>
 <div class="block">Returns number of bytes this cell would have been used if serialized as in <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase"><code>KeyValue</code></a></div>
 </td>
 </tr>
-<tr id="i30" class="altColor">
+<tr id="i32" class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/KeyValueUtil.html#length-short-byte-int-int-int-boolean-">length</a></span>(short&nbsp;rlen,
       byte&nbsp;flen,
@@ -386,12 +399,12 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
       int&nbsp;tlen,
       boolean&nbsp;withTags)</code>&nbsp;</td>
 </tr>
-<tr id="i31" class="rowColor">
+<tr id="i33" class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/KeyValueUtil.html#lengthWithMvccVersion-org.apache.hadoop.hbase.KeyValue-boolean-">lengthWithMvccVersion</a></span>(<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;kv,
                      boolean&nbsp;includeMvccVersion)</code>&nbsp;</td>
 </tr>
-<tr id="i32" class="altColor">
+<tr id="i34" class="altColor">
 <td class="colFirst"><code>static <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/KeyValueUtil.html#nextShallowCopy-java.nio.ByteBuffer-boolean-boolean-">nextShallowCopy</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;bb,
                boolean&nbsp;includesMvccVersion,
@@ -400,30 +413,30 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
  position to the start of the next KeyValue.</div>
 </td>
 </tr>
-<tr id="i33" class="rowColor">
+<tr id="i35" class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/KeyValueUtil.html#oswrite-org.apache.hadoop.hbase.Cell-java.io.OutputStream-boolean-">oswrite</a></span>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
        <a href="https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;out,
        boolean&nbsp;withTags)</code>&nbsp;</td>
 </tr>
-<tr id="i34" class="altColor">
+<tr id="i36" class="altColor">
 <td class="colFirst"><code>static <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/KeyValueUtil.html#previousKey-org.apache.hadoop.hbase.KeyValue-">previousKey</a></span>(<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;in)</code>
 <div class="block">Decrement the timestamp.</div>
 </td>
 </tr>
-<tr id="i35" class="rowColor">
+<tr id="i37" class="rowColor">
 <td class="colFirst"><code>static <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/KeyValueUtil.html#toNewKeyCell-org.apache.hadoop.hbase.Cell-">toNewKeyCell</a></span>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>
 <div class="block">Copies the key to a new KeyValue</div>
 </td>
 </tr>
-<tr id="i36" class="altColor">
+<tr id="i38" class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/KeyValueUtil.html#totalLengthWithMvccVersion-java.lang.Iterable-boolean-">totalLengthWithMvccVersion</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;? extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&gt;&nbsp;kvs,
                           boolean&nbsp;includeMvccVersion)</code>&nbsp;</td>
 </tr>
-<tr id="i37" class="rowColor">
+<tr id="i39" class="rowColor">
 <td class="colFirst"><code>static long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/KeyValueUtil.html#write-org.apache.hadoop.hbase.KeyValue-java.io.DataOutput-">write</a></span>(<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;kv,
      <a href="https://docs.oracle.com/javase/8/docs/api/java/io/DataOutput.html?is-external=true" title="class or interface in java.io">DataOutput</a>&nbsp;out)</code>
@@ -1010,24 +1023,47 @@ public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/
 </dl>
 </li>
 </ul>
-<a name="iscreate-java.io.InputStream-boolean-">
+<a name="bytesToHex-byte:A-int-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>bytesToHex</h4>
+<pre>static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValueUtil.html#line.521">bytesToHex</a>(byte[]&nbsp;buf,
+                         int&nbsp;offset,
+                         int&nbsp;length)</pre>
+</li>
+</ul>
+<a name="checkKeyValueBytes-byte:A-int-int-boolean-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>iscreate</h4>
-<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValueUtil.html#line.531">iscreate</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;in,
-                                boolean&nbsp;withTags)
-                         throws <a href="https://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>checkKeyValueBytes</h4>
+<pre>static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValueUtil.html#line.526">checkKeyValueBytes</a>(byte[]&nbsp;buf,
+                               int&nbsp;offset,
+                               int&nbsp;length,
+                               boolean&nbsp;withTags)</pre>
+</li>
+</ul>
+<a name="createKeyValueFromInputStream-java.io.InputStream-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>createKeyValueFromInputStream</h4>
+<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValueUtil.html#line.658">createKeyValueFromInputStream</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;in,
+                                                     boolean&nbsp;withTags)
+                                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Create a KeyValue reading from the raw InputStream. Named
- <code>iscreate</code> so doesn't clash with <a href="../../../../org/apache/hadoop/hbase/KeyValueUtil.html#create-java.io.DataInput-"><code>create(DataInput)</code></a></div>
+ <code>createKeyValueFromInputStream</code> so doesn't clash with <a href="../../../../org/apache/hadoop/hbase/KeyValueUtil.html#create-java.io.DataInput-"><code>create(DataInput)</code></a></div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>in</code> - </dd>
+<dd><code>in</code> - inputStream to read.</dd>
 <dd><code>withTags</code> - whether the keyvalue should include tags are not</dd>
 <dt><span class="returnLabel">Returns:</span></dt>
-<dd>Created KeyValue OR if we find a length of zero, we will return
-         null which can be useful marking a stream as done.</dd>
+<dd>Created KeyValue OR if we find a length of zero, we will return null which can be
+         useful marking a stream as done.</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>
@@ -1039,7 +1075,7 @@ public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/
 <ul class="blockList">
 <li class="blockList">
 <h4>createKeyValueFromKey</h4>
-<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValueUtil.html#line.559">createKeyValueFromKey</a>(byte[]&nbsp;b)</pre>
+<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValueUtil.html#line.683">createKeyValueFromKey</a>(byte[]&nbsp;b)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>b</code> - </dd>
@@ -1055,7 +1091,7 @@ public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/
 <ul class="blockList">
 <li class="blockList">
 <h4>createKeyValueFromKey</h4>
-<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValueUtil.html#line.568">createKeyValueFromKey</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;bb)</pre>
+<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValueUtil.html#line.692">createKeyValueFromKey</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;bb)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>bb</code> - </dd>
@@ -1071,7 +1107,7 @@ public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/
 <ul class="blockList">
 <li class="blockList">
 <h4>createKeyValueFromKey</h4>
-<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValueUtil.html#line.579">createKeyValueFromKey</a>(byte[]&nbsp;b,
+<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValueUtil.html#line.703">createKeyValueFromKey</a>(byte[]&nbsp;b,
                                              int&nbsp;o,
                                              int&nbsp;l)</pre>
 <dl>
@@ -1091,7 +1127,7 @@ public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/
 <ul class="blockList">
 <li class="blockList">
 <h4>create</h4>
-<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValueUtil.html#line.596">create</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/DataInput.html?is-external=true" title="class or interface in java.io">DataInput</a>&nbsp;in)
+<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValueUtil.html#line.720">create</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/DataInput.html?is-external=true" title="class or interface in java.io">DataInput</a>&nbsp;in)
                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1112,7 +1148,7 @@ public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/
 <ul class="blockList">
 <li class="blockList">
 <h4>create</h4>
-<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValueUtil.html#line.609">create</a>(int&nbsp;length,
+<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValueUtil.html#line.733">create</a>(int&nbsp;length,
                               <a href="https://docs.oracle.com/javase/8/docs/api/java/io/DataInput.html?is-external=true" title="class or interface in java.io">DataInput</a>&nbsp;in)
                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Create a KeyValue reading <code>length</code> from <code>in</code></div>
@@ -1134,7 +1170,7 @@ public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/
 <ul class="blockList">
 <li class="blockList">
 <h4>getSerializedSize</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValueUtil.html#line.624">getSerializedSize</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValueUtil.html#line.748">getSerializedSize</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                                     boolean&nbsp;withTags)</pre>
 </li>
 </ul>
@@ -1144,7 +1180,7 @@ public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/
 <ul class="blockListLast">
 <li class="blockList">
 <h4>oswrite</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValueUtil.html#line.632">oswrite</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValueUtil.html#line.756">oswrite</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                           <a href="https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;out,
                           boolean&nbsp;withTags)
                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/org/apache/hadoop/hbase/class-use/KeyValue.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/KeyValue.html b/devapidocs/org/apache/hadoop/hbase/class-use/KeyValue.html
index 53692ed..2e32cbb 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/KeyValue.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/KeyValue.html
@@ -317,25 +317,32 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a></code></td>
-<td class="colLast"><span class="typeNameLabel">KeyValueUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/KeyValueUtil.html#createKeyValueFromKey-byte:A-">createKeyValueFromKey</a></span>(byte[]&nbsp;b)</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">KeyValueUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/KeyValueUtil.html#createKeyValueFromInputStream-java.io.InputStream-boolean-">createKeyValueFromInputStream</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;in,
+                             boolean&nbsp;withTags)</code>
+<div class="block">Create a KeyValue reading from the raw InputStream.</div>
+</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a></code></td>
+<td class="colLast"><span class="typeNameLabel">KeyValueUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/KeyValueUtil.html#createKeyValueFromKey-byte:A-">createKeyValueFromKey</a></span>(byte[]&nbsp;b)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a></code></td>
 <td class="colLast"><span class="typeNameLabel">KeyValueUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/KeyValueUtil.html#createKeyValueFromKey-byte:A-int-int-">createKeyValueFromKey</a></span>(byte[]&nbsp;b,
                      int&nbsp;o,
                      int&nbsp;l)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a></code></td>
 <td class="colLast"><span class="typeNameLabel">KeyValueUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/KeyValueUtil.html#createKeyValueFromKey-java.nio.ByteBuffer-">createKeyValueFromKey</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;bb)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a></code></td>
 <td class="colLast"><span class="typeNameLabel">KeyValueUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/KeyValueUtil.html#createLastOnRow-byte:A-">createLastOnRow</a></span>(byte[]&nbsp;row)</code>
 <div class="block">Creates a KeyValue that is last on the specified row id.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a></code></td>
 <td class="colLast"><span class="typeNameLabel">KeyValueUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/KeyValueUtil.html#createLastOnRow-byte:A-int-int-byte:A-int-int-byte:A-int-int-">createLastOnRow</a></span>(byte[]&nbsp;row,
                int&nbsp;roffset,
@@ -351,7 +358,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
  row, family, qualifier.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a></code></td>
 <td class="colLast"><span class="typeNameLabel">KeyValueUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/KeyValueUtil.html#ensureKeyValue-org.apache.hadoop.hbase.Cell-">ensureKeyValue</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -359,13 +366,6 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </div>
 </td>
 </tr>
-<tr class="rowColor">
-<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a></code></td>
-<td class="colLast"><span class="typeNameLabel">KeyValueUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/KeyValueUtil.html#iscreate-java.io.InputStream-boolean-">iscreate</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;in,
-        boolean&nbsp;withTags)</code>
-<div class="block">Create a KeyValue reading from the raw InputStream.</div>
-</td>
-</tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a></code></td>
 <td class="colLast"><span class="typeNameLabel">KeyValueUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/KeyValueUtil.html#nextShallowCopy-java.nio.ByteBuffer-boolean-boolean-">nextShallowCopy</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;bb,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/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 aafbcb1..e43ce59 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -555,24 +555,24 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/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/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/AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Scan.ReadType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MobCompactPartitionPolicy.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MobCompactPartitionPolicy</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/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/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/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/AbstractResponse.ResponseType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AbstractResponse.ResponseType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/ScannerCallable.MoreResults.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">ScannerCallable.MoreResults</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Consistency</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Durability</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/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/13ae5225/devapidocs/org/apache/hadoop/hbase/codec/KeyValueCodec.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/codec/KeyValueCodec.html b/devapidocs/org/apache/hadoop/hbase/codec/KeyValueCodec.html
index dffbe94..2ac1762 100644
--- a/devapidocs/org/apache/hadoop/hbase/codec/KeyValueCodec.html
+++ b/devapidocs/org/apache/hadoop/hbase/codec/KeyValueCodec.html
@@ -260,7 +260,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/codec/Codec.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>getDecoder</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/codec/Codec.Decoder.html" title="interface in org.apache.hadoop.hbase.codec">Codec.Decoder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/codec/KeyValueCodec.html#line.124">getDecoder</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;is)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/codec/Codec.Decoder.html" title="interface in org.apache.hadoop.hbase.codec">Codec.Decoder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/codec/KeyValueCodec.html#line.123">getDecoder</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;is)</pre>
 <div class="block">Implementation depends on <a href="https://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true#available--" title="class or interface in java.io"><code>InputStream.available()</code></a></div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -274,7 +274,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/codec/Codec.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>getDecoder</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/codec/Codec.Decoder.html" title="interface in org.apache.hadoop.hbase.codec">Codec.Decoder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/codec/KeyValueCodec.html#line.129">getDecoder</a>(<a href="../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;buf)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/codec/Codec.Decoder.html" title="interface in org.apache.hadoop.hbase.codec">Codec.Decoder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/codec/KeyValueCodec.html#line.128">getDecoder</a>(<a href="../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;buf)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/codec/Codec.html#getDecoder-org.apache.hadoop.hbase.nio.ByteBuff-">getDecoder</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/codec/Codec.html" title="interface in org.apache.hadoop.hbase.codec">Codec</a></code></dd>
@@ -287,7 +287,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/codec/Codec.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getEncoder</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/codec/Codec.Encoder.html" title="interface in org.apache.hadoop.hbase.codec">Codec.Encoder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/codec/KeyValueCodec.html#line.134">getEncoder</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;os)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/codec/Codec.Encoder.html" title="interface in org.apache.hadoop.hbase.codec">Codec.Encoder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/codec/KeyValueCodec.html#line.133">getEncoder</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;os)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/codec/Codec.html#getEncoder-java.io.OutputStream-">getEncoder</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/codec/Codec.html" title="interface in org.apache.hadoop.hbase.codec">Codec</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html b/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
index e67b778..329f62f 100644
--- a/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/coprocessor/package-tree.html
@@ -201,8 +201,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/MetaTableMetrics.MetaTableOps.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">MetaTableMetrics.MetaTableOps</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.MutationType.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">RegionObserver.MutationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../org/apache/hadoop/hbase/coprocessor/MetaTableMetrics.MetaTableOps.html" title="enum in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">MetaTableMetrics.MetaTableOps</span></a></li>
 </ul>
 </li>
 </ul>

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/org/apache/hadoop/hbase/ipc/NettyRpcServer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/NettyRpcServer.html b/devapidocs/org/apache/hadoop/hbase/ipc/NettyRpcServer.html
index 01ee3a7..725eff3 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/NettyRpcServer.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/NettyRpcServer.html
@@ -466,7 +466,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>call</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;org.apache.hbase.thirdparty.com.google.protobuf.Message,<a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/NettyRpcServer.html#line.177">call</a>(org.apache.hbase.thirdparty.com.google.protobuf.BlockingService&nbsp;service,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;org.apache.hbase.thirdparty.com.google.protobuf.Message,<a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/NettyRpcServer.html#line.178">call</a>(org.apache.hbase.thirdparty.com.google.protobuf.BlockingService&nbsp;service,
                                                                                       org.apache.hbase.thirdparty.com.google.protobuf.Descriptors.MethodDescriptor&nbsp;md,
                                                                                       org.apache.hbase.thirdparty.com.google.protobuf.Message&nbsp;param,
                                                                                       <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>&nbsp;cellScanner,
@@ -485,7 +485,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcServer.html" titl
 <ul class="blockListLast">
 <li class="blockList">
 <h4>call</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;org.apache.hbase.thirdparty.com.google.protobuf.Message,<a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/NettyRpcServer.html#line.185">call</a>(org.apache.hbase.thirdparty.com.google.protobuf.BlockingService&nbsp;service,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;org.apache.hbase.thirdparty.com.google.protobuf.Message,<a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/NettyRpcServer.html#line.186">call</a>(org.apache.hbase.thirdparty.com.google.protobuf.BlockingService&nbsp;service,
                                                                                       org.apache.hbase.thirdparty.com.google.protobuf.Descriptors.MethodDescriptor&nbsp;md,
                                                                                       org.apache.hbase.thirdparty.com.google.protobuf.Message&nbsp;param,
                                                                                       <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>&nbsp;cellScanner,

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

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

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

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

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


[08/29] hbase-site git commit: Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/testdevapidocs/src-html/org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html
deleted file mode 100644
index 28e1b9b..0000000
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html
+++ /dev/null
@@ -1,842 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html lang="en">
-<head>
-<title>Source code</title>
-<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
-</head>
-<body>
-<div class="sourceContainer">
-<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
-<span class="sourceLineNo">002</span> *<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase;<a name="line.19"></a>
-<span class="sourceLineNo">020</span><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>import static org.junit.Assert.assertFalse;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.junit.Assert.assertNotEquals;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import static org.junit.Assert.assertNotNull;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import static org.junit.Assert.assertTrue;<a name="line.25"></a>
-<span class="sourceLineNo">026</span><a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.io.ByteArrayInputStream;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.io.ByteArrayOutputStream;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.io.DataInputStream;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.io.DataOutputStream;<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.Collections;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.Iterator;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.List;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.Set;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.TreeSet;<a name="line.36"></a>
-<span class="sourceLineNo">037</span><a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.testclassification.SmallTests;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.util.ByteBufferUtils;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.junit.ClassRule;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.junit.Test;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.junit.experimental.categories.Category;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.slf4j.Logger;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.slf4j.LoggerFactory;<a name="line.45"></a>
-<span class="sourceLineNo">046</span><a name="line.46"></a>
-<span class="sourceLineNo">047</span>@Category(SmallTests.class)<a name="line.47"></a>
-<span class="sourceLineNo">048</span>public class TestKeyValue {<a name="line.48"></a>
-<span class="sourceLineNo">049</span>  @ClassRule<a name="line.49"></a>
-<span class="sourceLineNo">050</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.50"></a>
-<span class="sourceLineNo">051</span>  HBaseClassTestRule.forClass(TestKeyValue.class);<a name="line.51"></a>
-<span class="sourceLineNo">052</span>  private static final Logger LOG = LoggerFactory.getLogger(TestKeyValue.class);<a name="line.52"></a>
-<span class="sourceLineNo">053</span><a name="line.53"></a>
-<span class="sourceLineNo">054</span>  @Test<a name="line.54"></a>
-<span class="sourceLineNo">055</span>  public void testColumnCompare() throws Exception {<a name="line.55"></a>
-<span class="sourceLineNo">056</span>    final byte [] a = Bytes.toBytes("aaa");<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    byte [] family1 = Bytes.toBytes("abc");<a name="line.57"></a>
-<span class="sourceLineNo">058</span>    byte [] qualifier1 = Bytes.toBytes("def");<a name="line.58"></a>
-<span class="sourceLineNo">059</span>    byte [] family2 = Bytes.toBytes("abcd");<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    byte [] qualifier2 = Bytes.toBytes("ef");<a name="line.60"></a>
-<span class="sourceLineNo">061</span><a name="line.61"></a>
-<span class="sourceLineNo">062</span>    KeyValue aaa = new KeyValue(a, family1, qualifier1, 0L, KeyValue.Type.Put, a);<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    assertFalse(CellUtil.matchingColumn(aaa, family2, qualifier2));<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    assertTrue(CellUtil.matchingColumn(aaa, family1, qualifier1));<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    aaa = new KeyValue(a, family2, qualifier2, 0L, KeyValue.Type.Put, a);<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    assertFalse(CellUtil.matchingColumn(aaa, family1, qualifier1));<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    assertTrue(CellUtil.matchingColumn(aaa, family2,qualifier2));<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    byte [] nullQualifier = new byte[0];<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    aaa = new KeyValue(a, family1, nullQualifier, 0L, KeyValue.Type.Put, a);<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    assertTrue(CellUtil.matchingColumn(aaa, family1,null));<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    assertFalse(CellUtil.matchingColumn(aaa, family2,qualifier2));<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  }<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>  /**<a name="line.74"></a>
-<span class="sourceLineNo">075</span>   * Test a corner case when the family qualifier is a prefix of the<a name="line.75"></a>
-<span class="sourceLineNo">076</span>   *  column qualifier.<a name="line.76"></a>
-<span class="sourceLineNo">077</span>   */<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  @Test<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  public void testColumnCompare_prefix() throws Exception {<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    final byte [] a = Bytes.toBytes("aaa");<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    byte [] family1 = Bytes.toBytes("abc");<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    byte [] qualifier1 = Bytes.toBytes("def");<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    byte [] family2 = Bytes.toBytes("ab");<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    byte [] qualifier2 = Bytes.toBytes("def");<a name="line.84"></a>
-<span class="sourceLineNo">085</span><a name="line.85"></a>
-<span class="sourceLineNo">086</span>    KeyValue aaa = new KeyValue(a, family1, qualifier1, 0L, KeyValue.Type.Put, a);<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    assertFalse(CellUtil.matchingColumn(aaa, family2, qualifier2));<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>  @Test<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  public void testBasics() throws Exception {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    LOG.info("LOWKEY: " + KeyValue.LOWESTKEY.toString());<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    String name = "testBasics";<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    check(Bytes.toBytes(name),<a name="line.94"></a>
-<span class="sourceLineNo">095</span>      Bytes.toBytes(name), Bytes.toBytes(name), 1,<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      Bytes.toBytes(name));<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    // Test empty value and empty column -- both should work. (not empty fam)<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    check(Bytes.toBytes(name), Bytes.toBytes(name), null, 1, null);<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    check(HConstants.EMPTY_BYTE_ARRAY, Bytes.toBytes(name), null, 1, null);<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    // empty qual is equivalent to null qual<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    assertEquals(<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      new KeyValue(Bytes.toBytes("rk"), Bytes.toBytes("fam"), null, 1, (byte[]) null),<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      new KeyValue(Bytes.toBytes("rk"), Bytes.toBytes("fam"),<a name="line.103"></a>
-<span class="sourceLineNo">104</span>        HConstants.EMPTY_BYTE_ARRAY, 1, (byte[]) null));<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>  private void check(final byte [] row, final byte [] family, byte [] qualifier,<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    final long timestamp, final byte [] value) {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    KeyValue kv = new KeyValue(row, family, qualifier, timestamp, value);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    assertTrue(Bytes.compareTo(kv.getRowArray(), kv.getRowOffset(), kv.getRowLength(), row, 0,<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      row.length) == 0);<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    assertTrue(CellUtil.matchingColumn(kv, family, qualifier));<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    // Call toString to make sure it works.<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    LOG.info(kv.toString());<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>  @Test<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  public void testPlainCompare() throws Exception {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    final byte [] a = Bytes.toBytes("aaa");<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    final byte [] b = Bytes.toBytes("bbb");<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    final byte [] fam = Bytes.toBytes("col");<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    final byte [] qf = Bytes.toBytes("umn");<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    KeyValue aaa = new KeyValue(a, fam, qf, a);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    KeyValue bbb = new KeyValue(b, fam, qf, b);<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(aaa, bbb) &lt; 0);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(bbb, aaa) &gt; 0);<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    // Compare breaks if passed same ByteBuffer as both left and right arguments.<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(bbb, bbb) == 0);<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(aaa, aaa) == 0);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    // Do compare with different timestamps.<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    aaa = new KeyValue(a, fam, qf, 1, a);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    bbb = new KeyValue(a, fam, qf, 2, a);<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(aaa, bbb) &gt; 0);<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(bbb, aaa) &lt; 0);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(aaa, aaa) == 0);<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    // Do compare with different types.  Higher numbered types -- Delete<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    // should sort ahead of lower numbers; i.e. Put<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    aaa = new KeyValue(a, fam, qf, 1, KeyValue.Type.Delete, a);<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    bbb = new KeyValue(a, fam, qf, 1, a);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(aaa, bbb) &lt; 0);<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(bbb, aaa) &gt; 0);<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(aaa, aaa) == 0);<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  }<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>  @Test<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  public void testMoreComparisons() throws Exception {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    long now = System.currentTimeMillis();<a name="line.147"></a>
-<span class="sourceLineNo">148</span><a name="line.148"></a>
-<span class="sourceLineNo">149</span>    // Meta compares<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    KeyValue aaa = new KeyValue(<a name="line.150"></a>
-<span class="sourceLineNo">151</span>        Bytes.toBytes("TestScanMultipleVersions,row_0500,1236020145502"), now);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    KeyValue bbb = new KeyValue(<a name="line.152"></a>
-<span class="sourceLineNo">153</span>        Bytes.toBytes("TestScanMultipleVersions,,99999999999999"), now);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    CellComparator c = CellComparatorImpl.META_COMPARATOR;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    assertTrue(c.compare(bbb, aaa) &lt; 0);<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>    KeyValue aaaa = new KeyValue(Bytes.toBytes("TestScanMultipleVersions,,1236023996656"),<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        Bytes.toBytes("info"), Bytes.toBytes("regioninfo"), 1236024396271L,<a name="line.158"></a>
-<span class="sourceLineNo">159</span>        (byte[])null);<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    assertTrue(c.compare(aaaa, bbb) &lt; 0);<a name="line.160"></a>
-<span class="sourceLineNo">161</span><a name="line.161"></a>
-<span class="sourceLineNo">162</span>    KeyValue x = new KeyValue(Bytes.toBytes("TestScanMultipleVersions,row_0500,1236034574162"),<a name="line.162"></a>
-<span class="sourceLineNo">163</span>        Bytes.toBytes("info"), Bytes.toBytes(""), 9223372036854775807L,<a name="line.163"></a>
-<span class="sourceLineNo">164</span>        (byte[])null);<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    KeyValue y = new KeyValue(Bytes.toBytes("TestScanMultipleVersions,row_0500,1236034574162"),<a name="line.165"></a>
-<span class="sourceLineNo">166</span>        Bytes.toBytes("info"), Bytes.toBytes("regioninfo"), 1236034574912L,<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        (byte[])null);<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    assertTrue(c.compare(x, y) &lt; 0);<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    comparisons(CellComparatorImpl.META_COMPARATOR);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    comparisons(CellComparatorImpl.COMPARATOR);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    metacomparisons(CellComparatorImpl.META_COMPARATOR);<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>  @Test<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  public void testMetaComparatorTableKeysWithCommaOk() {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    CellComparator c = CellComparatorImpl.META_COMPARATOR;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    long now = System.currentTimeMillis();<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    // meta keys values are not quite right.  A users can enter illegal values<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    // from shell when scanning meta.<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    KeyValue a = new KeyValue(Bytes.toBytes("table,key,with,commas1,1234"), now);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    KeyValue b = new KeyValue(Bytes.toBytes("table,key,with,commas2,0123"), now);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span>  /**<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * Tests cases where rows keys have characters below the ','.<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * See HBASE-832<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   * @throws IOException<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   */<a name="line.189"></a>
-<span class="sourceLineNo">190</span>  @Test<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  public void testKeyValueBorderCases() throws IOException {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    // % sorts before , so if we don't do special comparator, rowB would<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    // come before rowA.<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    KeyValue rowA = new KeyValue(Bytes.toBytes("testtable,www.hbase.org/,1234"),<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      Bytes.toBytes("fam"), Bytes.toBytes(""), Long.MAX_VALUE, (byte[])null);<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    KeyValue rowB = new KeyValue(Bytes.toBytes("testtable,www.hbase.org/%20,99999"),<a name="line.196"></a>
-<span class="sourceLineNo">197</span>        Bytes.toBytes("fam"), Bytes.toBytes(""), Long.MAX_VALUE, (byte[])null);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    assertTrue(CellComparatorImpl.META_COMPARATOR.compare(rowA, rowB) &lt; 0);<a name="line.198"></a>
-<span class="sourceLineNo">199</span><a name="line.199"></a>
-<span class="sourceLineNo">200</span>    rowA = new KeyValue(Bytes.toBytes("testtable,,1234"), Bytes.toBytes("fam"),<a name="line.200"></a>
-<span class="sourceLineNo">201</span>        Bytes.toBytes(""), Long.MAX_VALUE, (byte[])null);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    rowB = new KeyValue(Bytes.toBytes("testtable,$www.hbase.org/,99999"),<a name="line.202"></a>
-<span class="sourceLineNo">203</span>        Bytes.toBytes("fam"), Bytes.toBytes(""), Long.MAX_VALUE, (byte[])null);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    assertTrue(CellComparatorImpl.META_COMPARATOR.compare(rowA, rowB) &lt; 0);<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><a name="line.207"></a>
-<span class="sourceLineNo">208</span>  private void metacomparisons(final CellComparatorImpl c) {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    long now = System.currentTimeMillis();<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    assertTrue(c.compare(new KeyValue(<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",a,,0,1"), now),<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      new KeyValue(<a name="line.212"></a>
-<span class="sourceLineNo">213</span>          Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",a,,0,1"), now)) == 0);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    KeyValue a = new KeyValue(<a name="line.214"></a>
-<span class="sourceLineNo">215</span>        Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",a,,0,1"), now);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    KeyValue b = new KeyValue(<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",a,,0,2"), now);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    assertTrue(c.compare(new KeyValue(<a name="line.219"></a>
-<span class="sourceLineNo">220</span>        Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",a,,0,2"), now),<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      new KeyValue(<a name="line.221"></a>
-<span class="sourceLineNo">222</span>          Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",a,,0,1"), now)) &gt; 0);<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  }<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>  private void comparisons(final CellComparatorImpl c) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    long now = System.currentTimeMillis();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    assertTrue(c.compare(new KeyValue(<a name="line.227"></a>
-<span class="sourceLineNo">228</span>        Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",,1"), now),<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      new KeyValue(<a name="line.229"></a>
-<span class="sourceLineNo">230</span>          Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",,1"), now)) == 0);<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    assertTrue(c.compare(new KeyValue(<a name="line.231"></a>
-<span class="sourceLineNo">232</span>        Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",,1"), now),<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      new KeyValue(<a name="line.233"></a>
-<span class="sourceLineNo">234</span>          Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",,2"), now)) &lt; 0);<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    assertTrue(c.compare(new KeyValue(<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",,2"), now),<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      new KeyValue(<a name="line.237"></a>
-<span class="sourceLineNo">238</span>          Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",,1"), now)) &gt; 0);<a name="line.238"></a>
-<span class="sourceLineNo">239</span>  }<a name="line.239"></a>
-<span class="sourceLineNo">240</span><a name="line.240"></a>
-<span class="sourceLineNo">241</span>  @Test<a name="line.241"></a>
-<span class="sourceLineNo">242</span>  public void testBinaryKeys() throws Exception {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    Set&lt;KeyValue&gt; set = new TreeSet&lt;&gt;(CellComparatorImpl.COMPARATOR);<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    final byte [] fam = Bytes.toBytes("col");<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    final byte [] qf = Bytes.toBytes("umn");<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    final byte [] nb = new byte[0];<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    KeyValue [] keys = {new KeyValue(Bytes.toBytes("aaaaa,\u0000\u0000,2"), fam, qf, 2, nb),<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      new KeyValue(Bytes.toBytes("aaaaa,\u0001,3"), fam, qf, 3, nb),<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      new KeyValue(Bytes.toBytes("aaaaa,,1"), fam, qf, 1, nb),<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      new KeyValue(Bytes.toBytes("aaaaa,\u1000,5"), fam, qf, 5, nb),<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      new KeyValue(Bytes.toBytes("aaaaa,a,4"), fam, qf, 4, nb),<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      new KeyValue(Bytes.toBytes("a,a,0"), fam, qf, 0, nb),<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    };<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    // Add to set with bad comparator<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    Collections.addAll(set, keys);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    // This will output the keys incorrectly.<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    boolean assertion = false;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    int count = 0;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    try {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      for (KeyValue k: set) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        assertTrue(count++ == k.getTimestamp());<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      }<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    } catch (java.lang.AssertionError e) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      // Expected<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      assertion = true;<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    assertTrue(assertion);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    // Make set with good comparator<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    set = new TreeSet&lt;&gt;(CellComparatorImpl.META_COMPARATOR);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    Collections.addAll(set, keys);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    count = 0;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    for (KeyValue k: set) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      assertTrue(count++ == k.getTimestamp());<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    }<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  }<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>  @Test<a name="line.277"></a>
-<span class="sourceLineNo">278</span>  public void testStackedUpKeyValue() {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    // Test multiple KeyValues in a single blob.<a name="line.279"></a>
-<span class="sourceLineNo">280</span><a name="line.280"></a>
-<span class="sourceLineNo">281</span>    // TODO actually write this test!<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>  private final byte[] rowA = Bytes.toBytes("rowA");<a name="line.285"></a>
-<span class="sourceLineNo">286</span>  private final byte[] rowB = Bytes.toBytes("rowB");<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>  private final byte[] family = Bytes.toBytes("family");<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  private final byte[] qualA = Bytes.toBytes("qfA");<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  private final byte[] qualB = Bytes.toBytes("qfB");<a name="line.290"></a>
-<span class="sourceLineNo">291</span><a name="line.291"></a>
-<span class="sourceLineNo">292</span>  private void assertKVLess(CellComparator c,<a name="line.292"></a>
-<span class="sourceLineNo">293</span>                            KeyValue less,<a name="line.293"></a>
-<span class="sourceLineNo">294</span>                            KeyValue greater) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    int cmp = c.compare(less,greater);<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    assertTrue(cmp &lt; 0);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    cmp = c.compare(greater,less);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    assertTrue(cmp &gt; 0);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>  }<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>  private void assertKVLessWithoutRow(CellComparator c, int common, KeyValue less,<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      KeyValue greater) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    int cmp = c.compare(less, greater);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    assertTrue(cmp &lt; 0);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    cmp = c.compare(greater, less);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    assertTrue(cmp &gt; 0);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  @Test<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  public void testCompareWithoutRow() {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    final CellComparator c = CellComparatorImpl.COMPARATOR;<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    byte[] row = Bytes.toBytes("row");<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>    byte[] fa = Bytes.toBytes("fa");<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    byte[] fami = Bytes.toBytes("fami");<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    byte[] fami1 = Bytes.toBytes("fami1");<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>    byte[] qual0 = Bytes.toBytes("");<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    byte[] qual1 = Bytes.toBytes("qf1");<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    byte[] qual2 = Bytes.toBytes("qf2");<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    long ts = 1;<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>    // 'fa:'<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    KeyValue kv_0 = new KeyValue(row, fa, qual0, ts, KeyValue.Type.Put);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    // 'fami:'<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    KeyValue kv0_0 = new KeyValue(row, fami, qual0, ts, KeyValue.Type.Put);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    // 'fami:qf1'<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    KeyValue kv0_1 = new KeyValue(row, fami, qual1, ts, KeyValue.Type.Put);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    // 'fami:qf2'<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    KeyValue kv0_2 = new KeyValue(row, fami, qual2, ts, KeyValue.Type.Put);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    // 'fami1:'<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    KeyValue kv1_0 = new KeyValue(row, fami1, qual0, ts, KeyValue.Type.Put);<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>    // 'fami:qf1' &lt; 'fami:qf2'<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    assertKVLessWithoutRow(c, 0, kv0_1, kv0_2);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    // 'fami:qf1' &lt; 'fami1:'<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    assertKVLessWithoutRow(c, 0, kv0_1, kv1_0);<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>    // Test comparison by skipping the same prefix bytes.<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    /***<a name="line.340"></a>
-<span class="sourceLineNo">341</span>     * KeyValue Format and commonLength:<a name="line.341"></a>
-<span class="sourceLineNo">342</span>     * |_keyLen_|_valLen_|_rowLen_|_rowKey_|_famiLen_|_fami_|_Quali_|....<a name="line.342"></a>
-<span class="sourceLineNo">343</span>     * ------------------|-------commonLength--------|--------------<a name="line.343"></a>
-<span class="sourceLineNo">344</span>     */<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    int commonLength = KeyValue.ROW_LENGTH_SIZE + KeyValue.FAMILY_LENGTH_SIZE<a name="line.345"></a>
-<span class="sourceLineNo">346</span>        + row.length;<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    // 'fa:' &lt; 'fami:'. They have commonPrefix + 2 same prefix bytes.<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    assertKVLessWithoutRow(c, commonLength + 2, kv_0, kv0_0);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    // 'fami:' &lt; 'fami:qf1'. They have commonPrefix + 4 same prefix bytes.<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    assertKVLessWithoutRow(c, commonLength + 4, kv0_0, kv0_1);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    // 'fami:qf1' &lt; 'fami1:'. They have commonPrefix + 4 same prefix bytes.<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    assertKVLessWithoutRow(c, commonLength + 4, kv0_1, kv1_0);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    // 'fami:qf1' &lt; 'fami:qf2'. They have commonPrefix + 6 same prefix bytes.<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    assertKVLessWithoutRow(c, commonLength + 6, kv0_1, kv0_2);<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>  @Test<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  public void testFirstLastOnRow() {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    final CellComparator c = CellComparatorImpl.COMPARATOR;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    long ts = 1;<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    byte[] bufferA = new byte[128];<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    int offsetA = 0;<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    byte[] bufferB = new byte[128];<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    int offsetB = 7;<a name="line.364"></a>
-<span class="sourceLineNo">365</span><a name="line.365"></a>
-<span class="sourceLineNo">366</span>    // These are listed in sort order (ie: every one should be less<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    // than the one on the next line).<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    final KeyValue firstOnRowA = KeyValueUtil.createFirstOnRow(rowA);<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    final KeyValue firstOnRowABufferFamQual = KeyValueUtil.createFirstOnRow(bufferA, offsetA,<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        rowA, 0, rowA.length, family, 0, family.length, qualA, 0, qualA.length);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    final KeyValue kvA_1 = new KeyValue(rowA, null, null, ts, KeyValue.Type.Put);<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    final KeyValue kvA_2 = new KeyValue(rowA, family, qualA, ts, KeyValue.Type.Put);<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>    final KeyValue lastOnRowA = KeyValueUtil.createLastOnRow(rowA);<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    final KeyValue firstOnRowB = KeyValueUtil.createFirstOnRow(rowB);<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    final KeyValue firstOnRowBBufferFam = KeyValueUtil.createFirstOnRow(bufferB, offsetB,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        rowB, 0, rowB.length, family, 0, family.length, null, 0, 0);<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    final KeyValue kvB = new KeyValue(rowB, family, qualA, ts, KeyValue.Type.Put);<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>    assertKVLess(c, firstOnRowA, firstOnRowB);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    assertKVLess(c, firstOnRowA, firstOnRowBBufferFam);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    assertKVLess(c, firstOnRowABufferFamQual, firstOnRowB);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    assertKVLess(c, firstOnRowA, kvA_1);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    assertKVLess(c, firstOnRowA, kvA_2);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    assertKVLess(c, firstOnRowABufferFamQual, kvA_2);<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    assertKVLess(c, kvA_1, kvA_2);<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    assertKVLess(c, kvA_2, firstOnRowB);<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    assertKVLess(c, kvA_1, firstOnRowB);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    assertKVLess(c, kvA_2, firstOnRowBBufferFam);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    assertKVLess(c, kvA_1, firstOnRowBBufferFam);<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>    assertKVLess(c, lastOnRowA, firstOnRowB);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    assertKVLess(c, lastOnRowA, firstOnRowBBufferFam);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    assertKVLess(c, firstOnRowB, kvB);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    assertKVLess(c, firstOnRowBBufferFam, kvB);<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    assertKVLess(c, lastOnRowA, kvB);<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>    assertKVLess(c, kvA_2, lastOnRowA);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    assertKVLess(c, kvA_1, lastOnRowA);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    assertKVLess(c, firstOnRowA, lastOnRowA);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    assertKVLess(c, firstOnRowABufferFamQual, lastOnRowA);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  }<a name="line.402"></a>
-<span class="sourceLineNo">403</span><a name="line.403"></a>
-<span class="sourceLineNo">404</span>  @Test<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  public void testCreateKeyOnly() throws Exception {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    long ts = 1;<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    byte [] value = Bytes.toBytes("a real value");<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    byte [] evalue = new byte[0]; // empty value<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>    for (byte[] val : new byte[][]{value, evalue}) {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      for (boolean useLen : new boolean[]{false,true}) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        KeyValue kv1 = new KeyValue(rowA, family, qualA, ts, val);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        KeyValue kv1ko = kv1.createKeyOnly(useLen);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        // keys are still the same<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        assertTrue(kv1.equals(kv1ko));<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        // but values are not<a name="line.416"></a>
-<span class="sourceLineNo">417</span>        assertTrue(kv1ko.getValueLength() == (useLen?Bytes.SIZEOF_INT:0));<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        if (useLen) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>          assertEquals(kv1.getValueLength(),<a name="line.419"></a>
-<span class="sourceLineNo">420</span>            Bytes.toInt(kv1ko.getValueArray(), kv1ko.getValueOffset(), kv1ko.getValueLength()));<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>  }<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span>  @Test<a name="line.426"></a>
-<span class="sourceLineNo">427</span>  public void testCreateKeyValueFromKey() {<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    KeyValue kv = new KeyValue(Bytes.toBytes("myRow"), Bytes.toBytes("myCF"),<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        Bytes.toBytes("myQualifier"), 12345L, Bytes.toBytes("myValue"));<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    int initialPadding = 10;<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    int endingPadding = 20;<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    int keyLen = kv.getKeyLength();<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    byte[] tmpArr = new byte[initialPadding + endingPadding + keyLen];<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    System.arraycopy(kv.getBuffer(), kv.getKeyOffset(), tmpArr,<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        initialPadding, keyLen);<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    KeyValue kvFromKey = KeyValueUtil.createKeyValueFromKey(tmpArr, initialPadding,<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        keyLen);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    assertEquals(keyLen, kvFromKey.getKeyLength());<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    assertEquals(KeyValue.ROW_OFFSET + keyLen, kvFromKey.getBuffer().length);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    System.err.println("kv=" + kv);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    System.err.println("kvFromKey=" + kvFromKey);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    assertEquals(kvFromKey.toString(),<a name="line.442"></a>
-<span class="sourceLineNo">443</span>        kv.toString().replaceAll("=[0-9]+", "=0"));<a name="line.443"></a>
-<span class="sourceLineNo">444</span>  }<a name="line.444"></a>
-<span class="sourceLineNo">445</span><a name="line.445"></a>
-<span class="sourceLineNo">446</span>  /**<a name="line.446"></a>
-<span class="sourceLineNo">447</span>   * Tests that getTimestamp() does always return the proper timestamp, even after updating it.<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * See HBASE-6265.<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   */<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  @Test<a name="line.450"></a>
-<span class="sourceLineNo">451</span>  public void testGetTimestamp() {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    KeyValue kv = new KeyValue(Bytes.toBytes("myRow"), Bytes.toBytes("myCF"),<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      Bytes.toBytes("myQualifier"), HConstants.LATEST_TIMESTAMP,<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      Bytes.toBytes("myValue"));<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    long time1 = kv.getTimestamp();<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    kv.updateLatestStamp(Bytes.toBytes(12345L));<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    long time2 = kv.getTimestamp();<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    assertEquals(HConstants.LATEST_TIMESTAMP, time1);<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    assertEquals(12345L, time2);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>  }<a name="line.460"></a>
-<span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>  @Test<a name="line.462"></a>
-<span class="sourceLineNo">463</span>  public void testKVsWithTags() {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    byte[] row = Bytes.toBytes("myRow");<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    byte[] cf = Bytes.toBytes("myCF");<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    byte[] q = Bytes.toBytes("myQualifier");<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    byte[] value = Bytes.toBytes("myValue");<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    byte[] metaValue1 = Bytes.toBytes("metaValue1");<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    byte[] metaValue2 = Bytes.toBytes("metaValue2");<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    KeyValue kv = new KeyValue(row, cf, q, HConstants.LATEST_TIMESTAMP, value, new Tag[] {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>        new ArrayBackedTag((byte) 1, metaValue1), new ArrayBackedTag((byte) 2, metaValue2) });<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    assertTrue(kv.getTagsLength() &gt; 0);<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    assertTrue(Bytes.equals(kv.getRowArray(), kv.getRowOffset(), kv.getRowLength(), row, 0,<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      row.length));<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    assertTrue(Bytes.equals(kv.getFamilyArray(), kv.getFamilyOffset(), kv.getFamilyLength(), cf, 0,<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      cf.length));<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    assertTrue(Bytes.equals(kv.getQualifierArray(), kv.getQualifierOffset(),<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      kv.getQualifierLength(), q, 0, q.length));<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    assertTrue(Bytes.equals(kv.getValueArray(), kv.getValueOffset(), kv.getValueLength(), value, 0,<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      value.length));<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    List&lt;Tag&gt; tags = PrivateCellUtil.getTags(kv);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    assertNotNull(tags);<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    assertEquals(2, tags.size());<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    boolean meta1Ok = false, meta2Ok = false;<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    for (Tag tag : tags) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>      if (tag.getType() == (byte) 1) {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>        if (Bytes.equals(Tag.cloneValue(tag), metaValue1)) {<a name="line.487"></a>
-<span class="sourceLineNo">488</span>          meta1Ok = true;<a name="line.488"></a>
-<span class="sourceLineNo">489</span>        }<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      } else {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>        if (Bytes.equals(Tag.cloneValue(tag), metaValue2)) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>          meta2Ok = true;<a name="line.492"></a>
-<span class="sourceLineNo">493</span>        }<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>    assertTrue(meta1Ok);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    assertTrue(meta2Ok);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    Iterator&lt;Tag&gt; tagItr = PrivateCellUtil.tagsIterator(kv);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    //Iterator&lt;Tag&gt; tagItr = kv.tagsIterator();<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    assertTrue(tagItr.hasNext());<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    Tag next = tagItr.next();<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    assertEquals(10, next.getValueLength());<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    assertEquals((byte) 1, next.getType());<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    Bytes.equals(Tag.cloneValue(next), metaValue1);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    assertTrue(tagItr.hasNext());<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    next = tagItr.next();<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    assertEquals(10, next.getValueLength());<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    assertEquals((byte) 2, next.getType());<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    Bytes.equals(Tag.cloneValue(next), metaValue2);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    assertFalse(tagItr.hasNext());<a name="line.510"></a>
-<span class="sourceLineNo">511</span><a name="line.511"></a>
-<span class="sourceLineNo">512</span>    tagItr = PrivateCellUtil.tagsIterator(kv);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    assertTrue(tagItr.hasNext());<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    next = tagItr.next();<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    assertEquals(10, next.getValueLength());<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    assertEquals((byte) 1, next.getType());<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    Bytes.equals(Tag.cloneValue(next), metaValue1);<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    assertTrue(tagItr.hasNext());<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    next = tagItr.next();<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    assertEquals(10, next.getValueLength());<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    assertEquals((byte) 2, next.getType());<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    Bytes.equals(Tag.cloneValue(next), metaValue2);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    assertFalse(tagItr.hasNext());<a name="line.523"></a>
-<span class="sourceLineNo">524</span>  }<a name="line.524"></a>
-<span class="sourceLineNo">525</span><a name="line.525"></a>
-<span class="sourceLineNo">526</span>  @Test<a name="line.526"></a>
-<span class="sourceLineNo">527</span>  public void testMetaKeyComparator() {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    CellComparator c = CellComparatorImpl.META_COMPARATOR;<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    long now = System.currentTimeMillis();<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>    KeyValue a = new KeyValue(Bytes.toBytes("table1"), now);<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    KeyValue b = new KeyValue(Bytes.toBytes("table2"), now);<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.533"></a>
-<span class="sourceLineNo">534</span><a name="line.534"></a>
-<span class="sourceLineNo">535</span>    a = new KeyValue(Bytes.toBytes("table1,111"), now);<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    b = new KeyValue(Bytes.toBytes("table2"), now);<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.537"></a>
-<span class="sourceLineNo">538</span><a name="line.538"></a>
-<span class="sourceLineNo">539</span>    a = new KeyValue(Bytes.toBytes("table1"), now);<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    b = new KeyValue(Bytes.toBytes("table2,111"), now);<a name="line.540"></a>
-<span class="sourceLineNo">541</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.541"></a>
-<span class="sourceLineNo">542</span><a name="line.542"></a>
-<span class="sourceLineNo">543</span>    a = new KeyValue(Bytes.toBytes("table,111"), now);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    b = new KeyValue(Bytes.toBytes("table,2222"), now);<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.545"></a>
-<span class="sourceLineNo">546</span><a name="line.546"></a>
-<span class="sourceLineNo">547</span>    a = new KeyValue(Bytes.toBytes("table,111,aaaa"), now);<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    b = new KeyValue(Bytes.toBytes("table,2222"), now);<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.549"></a>
-<span class="sourceLineNo">550</span><a name="line.550"></a>
-<span class="sourceLineNo">551</span>    a = new KeyValue(Bytes.toBytes("table,111"), now);<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    b = new KeyValue(Bytes.toBytes("table,2222.bbb"), now);<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.553"></a>
-<span class="sourceLineNo">554</span><a name="line.554"></a>
-<span class="sourceLineNo">555</span>    a = new KeyValue(Bytes.toBytes("table,,aaaa"), now);<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    b = new KeyValue(Bytes.toBytes("table,111,bbb"), now);<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.557"></a>
-<span class="sourceLineNo">558</span><a name="line.558"></a>
-<span class="sourceLineNo">559</span>    a = new KeyValue(Bytes.toBytes("table,111,aaaa"), now);<a name="line.559"></a>
-<span class="sourceLineNo">560</span>    b = new KeyValue(Bytes.toBytes("table,111,bbb"), now);<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.561"></a>
-<span class="sourceLineNo">562</span><a name="line.562"></a>
-<span class="sourceLineNo">563</span>    a = new KeyValue(Bytes.toBytes("table,111,xxxx"), now);<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    b = new KeyValue(Bytes.toBytes("table,111,222,bbb"), now);<a name="line.564"></a>
-<span class="sourceLineNo">565</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.565"></a>
-<span class="sourceLineNo">566</span><a name="line.566"></a>
-<span class="sourceLineNo">567</span>    a = new KeyValue(Bytes.toBytes("table,111,11,xxx"), now);<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    b = new KeyValue(Bytes.toBytes("table,111,222,bbb"), now);<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.569"></a>
-<span class="sourceLineNo">570</span>  }<a name="line.570"></a>
-<span class="sourceLineNo">571</span><a name="line.571"></a>
-<span class="sourceLineNo">572</span>  @Test<a name="line.572"></a>
-<span class="sourceLineNo">573</span>  public void testEqualsAndHashCode() throws Exception {<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    KeyValue kvA1 = new KeyValue(Bytes.toBytes("key"), Bytes.toBytes("cf"),<a name="line.574"></a>
-<span class="sourceLineNo">575</span>        Bytes.toBytes("qualA"), Bytes.toBytes("1"));<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    KeyValue kvA2 = new KeyValue(Bytes.toBytes("key"), Bytes.toBytes("cf"),<a name="line.576"></a>
-<span class="sourceLineNo">577</span>        Bytes.toBytes("qualA"), Bytes.toBytes("2"));<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    // We set a different sequence id on kvA2 to demonstrate that the equals and hashCode also<a name="line.578"></a>
-<span class="sourceLineNo">579</span>    // don't take this into account.<a name="line.579"></a>
-<span class="sourceLineNo">580</span>    kvA2.setSequenceId(2);<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    KeyValue kvB = new KeyValue(Bytes.toBytes("key"), Bytes.toBytes("cf"),<a name="line.581"></a>
-<span class="sourceLineNo">582</span>        Bytes.toBytes("qualB"), Bytes.toBytes("1"));<a name="line.582"></a>
-<span class="sourceLineNo">583</span><a name="line.583"></a>
-<span class="sourceLineNo">584</span>    assertEquals(kvA1, kvA2);<a name="line.584"></a>
-<span class="sourceLineNo">585</span>    assertNotEquals(kvA1, kvB);<a name="line.585"></a>
-<span class="sourceLineNo">586</span>    assertEquals(kvA1.hashCode(), kvA2.hashCode());<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    assertNotEquals(kvA1.hashCode(), kvB.hashCode());<a name="line.587"></a>
-<span class="sourceLineNo">588</span><a name="line.588"></a>
-<span class="sourceLineNo">589</span>  }<a name="line.589"></a>
-<span class="sourceLineNo">590</span><a name="line.590"></a>
-<span class="sourceLineNo">591</span>  @Test<a name="line.591"></a>
-<span class="sourceLineNo">592</span>  public void testKeyValueSerialization() throws Exception {<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    KeyValue kvA1 = new KeyValue(Bytes.toBytes("key"), Bytes.toBytes("cf"), Bytes.toBytes("qualA"),<a name="line.593"></a>
-<span class="sourceLineNo">594</span>        Bytes.toBytes("1"));<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    KeyValue kvA2 = new KeyValue(Bytes.toBytes("key"), Bytes.toBytes("cf"), Bytes.toBytes("qualA"),<a name="line.595"></a>
-<span class="sourceLineNo">596</span>        Bytes.toBytes("2"));<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    MockKeyValue mkvA1 = new MockKeyValue(kvA1);<a name="line.597"></a>
-<span class="sourceLineNo">598</span>    MockKeyValue mkvA2 = new MockKeyValue(kvA2);<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();<a name="line.599"></a>
-<span class="sourceLineNo">600</span>    DataOutputStream os = new DataOutputStream(byteArrayOutputStream);<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    ByteBufferUtils.putInt(os, KeyValueUtil.getSerializedSize(mkvA1, true));<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    KeyValueUtil.oswrite(mkvA1, os, true);<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    ByteBufferUtils.putInt(os, KeyValueUtil.getSerializedSize(mkvA2, true));<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    KeyValueUtil.oswrite(mkvA2, os, true);<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    DataInputStream is = new DataInputStream(new ByteArrayInputStream(<a name="line.605"></a>
-<span class="sourceLineNo">606</span>        byteArrayOutputStream.toByteArray()));<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    KeyValue deSerKV1 = KeyValueUtil.iscreate(is, true);<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    assertTrue(kvA1.equals(deSerKV1));<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    KeyValue deSerKV2 = KeyValueUtil.iscreate(is, true);<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    assertTrue(kvA2.equals(deSerKV2));<a name="line.610"></a>
-<span class="sourceLineNo">611</span>  }<a name="line.611"></a>
-<span class="sourceLineNo">612</span><a name="line.612"></a>
-<span class="sourceLineNo">613</span>  private static class MockKeyValue implements Cell {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>    private final KeyValue kv;<a name="line.614"></a>
-<span class="sourceLineNo">615</span><a name="line.615"></a>
-<span class="sourceLineNo">616</span>    public MockKeyValue(KeyValue kv) {<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      this.kv = kv;<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    }<a name="line.618"></a>
-<span class="sourceLineNo">619</span><a name="line.619"></a>
-<span class="sourceLineNo">620</span>    /**<a name="line.620"></a>
-<span class="sourceLineNo">621</span>     * This returns the offset where the tag actually starts.<a name="line.621"></a>
-<span class="sourceLineNo">622</span>     */<a name="line.622"></a>
-<span class="sourceLineNo">623</span>    @Override<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    public int getTagsOffset() {<a name="line.624"></a>
-<span class="sourceLineNo">625</span>      return this.kv.getTagsOffset();<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">628</span>    /**<a name="line.628"></a>
-<span class="sourceLineNo">629</span>     * used to achieve atomic operations in the memstore.<a name="line.629"></a>
-<span class="sourceLineNo">630</span>     */<a name="line.630"></a>
-<span class="sourceLineNo">631</span>    @Override<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    public long getSequenceId() {<a name="line.632"></a>
-<span class="sourceLineNo">633</span>      return this.kv.getSequenceId();<a name="line.633"></a>
-<span class="sourceLineNo">634</span>    }<a name="line.634"></a>
-<span class="sourceLineNo">635</span><a name="line.635"></a>
-<span class="sourceLineNo">636</span>    /**<a name="line.636"></a>
-<span class="sourceLineNo">637</span>     * This returns the total length of the tag bytes<a name="line.637"></a>
-<span class="sourceLineNo">638</span>     */<a name="line.638"></a>
-<span class="sourceLineNo">639</span>    @Override<a name="line.639"></a>
-<span class="sourceLineNo">640</span>    public int getTagsLength() {<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      return this.kv.getTagsLength();<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    }<a name="line.642"></a>
-<span class="sourceLineNo">643</span><a name="line.643"></a>
-<span class="sourceLineNo">644</span>    /**<a name="line.644"></a>
-<span class="sourceLineNo">645</span>     *<a name="line.645"></a>
-<span class="sourceLineNo">646</span>     * @return Timestamp<a name="line.646"></a>
-<span class="sourceLineNo">647</span>     */<a name="line.647"></a>
-<span class="sourceLineNo">648</span>    @Override<a name="line.648"></a>
-<span class="sourceLineNo">649</span>    public long getTimestamp() {<a name="line.649"></a>
-<span class="sourceLineNo">650</span>      return this.kv.getTimestamp();<a name="line.650"></a>
-<span class="sourceLineNo">651</span>    }<a name="line.651"></a>
-<span class="sourceLineNo">652</span><a name="line.652"></a>
-<span class="sourceLineNo">653</span>    /**<a name="line.653"></a>
-<span class="sourceLineNo">654</span>     * @return KeyValue.TYPE byte representation<a name="line.654"></a>
-<span class="sourceLineNo">655</span>     */<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    @Override<a name="line.656"></a>
-<span class="sourceLineNo">657</span>    public byte getTypeByte() {<a name="line.657"></a>
-<span class="sourceLineNo">658</span>      return this.kv.getTypeByte();<a name="line.658"></a>
-<span class="sourceLineNo">659</span>    }<a name="line.659"></a>
-<span class="sourceLineNo">660</span><a name="line.660"></a>
-<span class="sourceLineNo">661</span>    /**<a name="line.661"></a>
-<span class="sourceLineNo">662</span>     * @return the backing array of the entire KeyValue (all KeyValue fields are<a name="line.662"></a>
-<span class="sourceLineNo">663</span>     *         in a single array)<a name="line.663"></a>
-<span class="sourceLineNo">664</span>     */<a name="line.664"></a>
-<span class="sourceLineNo">665</span>    @Override<a name="line.665"></a>
-<span class="sourceLineNo">666</span>    public byte[] getValueArray() {<a name="line.666"></a>
-<span class="sourceLineNo">667</span>      return this.kv.getValueArray();<a name="line.667"></a>
-<span class="sourceLineNo">668</span>    }<a name="line.668"></a>
-<span class="sourceLineNo">669</span><a name="line.669"></a>
-<span class="sourceLineNo">670</span>    /**<a name="line.670"></a>
-<span class="sourceLineNo">671</span>     * @return the value offset<a name="line.671"></a>
-<span class="sourceLineNo">672</span>     */<a name="line.672"></a>
-<span class="sourceLineNo">673</span>    @Override<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    public int getValueOffset() {<a name="line.674"></a>
-<span class="sourceLineNo">675</span>      return this.kv.getValueOffset();<a name="line.675"></a>
-<span class="sourceLineNo">676</span>    }<a name="line.676"></a>
-<span class="sourceLineNo">677</span><a name="line.677"></a>
-<span class="sourceLineNo">678</span>    /**<a name="line.678"></a>
-<span class="sourceLineNo">679</span>     * @return Value length<a name="line.679"></a>
-<span class="sourceLineNo">680</span>     */<a name="line.680"></a>
-<span class="sourceLineNo">681</span>    @Override<a name="line.681"></a>
-<span class="sourceLineNo">682</span>    public int getValueLength() {<a name="line.682"></a>
-<span class="sourceLineNo">683</span>      return this.kv.getValueLength();<a name="line.683"></a>
-<span class="sourceLineNo">684</span>    }<a name="line.684"></a>
-<span class="sourceLineNo">685</span><a name="line.685"></a>
-<span class="sourceLineNo">686</span>    /**<a name="line.686"></a>
-<span class="sourceLineNo">687</span>     * @return the backing array of the entire KeyValue (all KeyValue fields are<a name="line.687"></a>
-<span class="sourceLineNo">688</span>     *         in a single array)<a name="line.688"></a>
-<span class="sourceLineNo">689</span>     */<a name="line.689"></a>
-<span class="sourceLineNo">690</span>    @Override<a name="line.690"></a>
-<span class="sourceLineNo">691</span>    public byte[] getRowArray() {<a name="line.691"></a>
-<span class="sourceLineNo">692</span>      return this.kv.getRowArray();<a name="line.692"></a>
-<span class="sourceLineNo">693</span>    }<a name="line.693"></a>
-<span class="sourceLineNo">694</span><a name="line.694"></a>
-<span class="sourceLineNo">695</span>    /**<a name="line.695"></a>
-<span class="sourceLineNo">696</span>     * @return Row offset<a name="line.696"></a>
-<span class="sourceLineNo">697</span>     */<a name="line.697"></a>
-<span class="sourceLineNo">698</span>    @Override<a name="line.698"></a>
-<span class="sourceLineNo">699</span>    public int getRowOffset() {<a name="line.699"></a>
-<span class="sourceLineNo">700</span>      return this.kv.getRowOffset();<a name="line.700"></a>
-<span class="sourceLineNo">701</span>    }<a name="line.701"></a>
-<span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>    /**<a name="line.703"></a>
-<span class="sourceLineNo">704</span>     * @return Row length<a name="line.704"></a>
-<span class="sourceLineNo">705</span>     */<a name="line.705"></a>
-<span class="sourceLineNo">706</span>    @Override<a name="line.706"></a>
-<span class="sourceLineNo">707</span>    public short getRowLength() {<a name="line.707"></a>
-<span class="sourceLineNo">708</span>      return this.kv.getRowLength();<a name="line.708"></a>
-<span class="sourceLineNo">709</span>    }<a name="line.709"></a>
-<span class="sourceLineNo">710</span><a name="line.710"></a>
-<span class="sourceLineNo">711</span>    /**<a name="line.711"></a>
-<span class="sourceLineNo">712</span>     * @return the backing array of the entire KeyValue (all KeyValue fields are<a name="line.712"></a>
-<span class="sourceLineNo">713</span>     *         in a single array)<a name="line.713"></a>
-<span class="sourceLineNo">714</span>     */<a name="line.714"></a>
-<span class="sourceLineNo">715</span>    @Override<a name="line.715"></a>
-<span class="sourceLineNo">716</span>    public byte[] getFamilyArray() {<a name="line.716"></a>
-<span class="sourceLineNo">717</span>      return this.kv.getFamilyArray();<a name="line.717"></a>
-<span class="sourceLineNo">718</span>    }<a name="line.718"></a>
-<span class="sourceLineNo">719</span><a name="line.719"></a>
-<span class="sourceLineNo">720</span>    /**<a name="line.720"></a>
-<span class="sourceLineNo">721</span>     * @return Family offset<a name="line.721"></a>
-<span class="sourceLineNo">722</span>     */<a name="line.722"></a>
-<span class="sourceLineNo">723</span>    @Override<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    public int getFamilyOffset() {<a name="line.724"></a>
-<span class="sourceLineNo">725</span>      return this.kv.getFamilyOffset();<a name="line.725"></a>
-<span class="sourceLineNo">726</span>    }<a name="line.726"></a>
-<span class="sourceLineNo">727</span><a name="line.727"></a>
-<span class="sourceLineNo">728</span>    /**<a name="line.728"></a>
-<span class="sourceLineNo">729</span>     * @return Family length<a name="line.729"></a>
-<span class="sourceLineNo">730</span>     */<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    @Override<a name="line.731"></a>
-<span class="sourceLineNo">732</span>    public byte getFamilyLength() {<a name="line.732"></a>
-<span class="sourceLineNo">733</span>      return this.kv.getFamilyLength();<a name="line.733"></a>
-<span class="sourceLineNo">734</span>    }<a name="line.734"></a>
-<span class="sourceLineNo">735</span><a name="line.735"></a>
-<span class="sourceLineNo">736</span>    /**<a name="line.736"></a>
-<span class="sourceLineNo">737</span>     * @return the backing array of the entire KeyValue (all KeyValue fields are<a name="line.737"></a>
-<span class="sourceLineNo">738</span>     *         in a single array)<a name="line.738"></a>
-<span class="sourceLineNo">739</span>     */<a name="line.739"></a>
-<span class="sourceLineNo">740</span>    @Override<a name="line.740"></a>
-<span class="sourceLineNo">741</span>    public byte[] getQualifierArray() {<a name="line.741"></a>
-<span class="sourceLineNo">742</span>      return this.kv.getQualifierArray();<a name="line.742"></a>
-<span class="sourceLineNo">743</span>    }<a name="line.743"></a>
-<span class="sourceLineNo">744</span><a name="line.744"></a>
-<span class="sourceLineNo">745</span>    /**<a name="line.745"></a>
-<span class="sourceLineNo">746</span>     * @return Qualifier offset<a name="line.746"></a>
-<span class="sourceLineNo">747</span>     */<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    @Override<a name="line.748"></a>
-<span class="sourceLineNo">749</span>    public int getQualifierOffset() {<a name="line.749"></a>
-<span class="sourceLineNo">750</span>      return this.kv.getQualifierOffset();<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>     * @return Qualifier length<a name="line.754"></a>
-<span class="sourceLineNo">755</span>     */<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    @Override<a name="line.756"></a>
-<span class="sourceLineNo">757</span>    public int getQualifierLength() {<a name="line.757"></a>
-<span class="sourceLineNo">758</span>      return this.kv.getQualifierLength();<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>     * @return the backing array of the entire KeyValue (all KeyValue fields are<a name="line.762"></a>
-<span class="sourceLineNo">763</span>     *         in a single array)<a name="line.763"></a>
-<span class="sourceLineNo">764</span>     */<a name="line.764"></a>
-<span class="sourceLineNo">765</span>    @Override<a name="line.765"></a>
-<span class="sourceLineNo">766</span>    public byte[] getTagsArray() {<a name="line.766"></a>
-<span class="sourceLineNo">767</span>      return this.kv.getTagsArray();<a name="line.767"></a>
-<span class="sourceLineNo">768</span>    }<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>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</pre>
-</div>
-</body>
-</html>


[18/29] hbase-site git commit: Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.SamePrefixComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.SamePrefixComparator.html b/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.SamePrefixComparator.html
index 6428b67..65c197f 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.SamePrefixComparator.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.SamePrefixComparator.html
@@ -260,2307 +260,2317 @@
 <span class="sourceLineNo">252</span>    }<a name="line.252"></a>
 <span class="sourceLineNo">253</span><a name="line.253"></a>
 <span class="sourceLineNo">254</span>    /**<a name="line.254"></a>
-<span class="sourceLineNo">255</span>     * Cannot rely on enum ordinals . They change if item is removed or moved.<a name="line.255"></a>
-<span class="sourceLineNo">256</span>     * Do our own codes.<a name="line.256"></a>
-<span class="sourceLineNo">257</span>     * @param b<a name="line.257"></a>
-<span class="sourceLineNo">258</span>     * @return Type associated with passed code.<a name="line.258"></a>
-<span class="sourceLineNo">259</span>     */<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    public static Type codeToType(final byte b) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      Type t = codeArray[b &amp; 0xff];<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      if (t != null) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        return t;<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      }<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      throw new RuntimeException("Unknown code " + b);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span>  }<a name="line.267"></a>
-<span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>  /**<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   * Lowest possible key.<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   * Makes a Key with highest possible Timestamp, empty row and column.  No<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   * key can be equal or lower than this one in memstore or in store file.<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   */<a name="line.273"></a>
-<span class="sourceLineNo">274</span>  public static final KeyValue LOWESTKEY =<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    new KeyValue(HConstants.EMPTY_BYTE_ARRAY, HConstants.LATEST_TIMESTAMP);<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>  ////<a name="line.277"></a>
-<span class="sourceLineNo">278</span>  // KeyValue core instance fields.<a name="line.278"></a>
-<span class="sourceLineNo">279</span>  protected byte [] bytes = null;  // an immutable byte array that contains the KV<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  protected int offset = 0;  // offset into bytes buffer KV starts at<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  protected int length = 0;  // length of the KV starting from offset.<a name="line.281"></a>
-<span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  /** Here be dragons **/<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>  /**<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   * used to achieve atomic operations in the memstore.<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   */<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  @Override<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  public long getSequenceId() {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    return seqId;<a name="line.290"></a>
-<span class="sourceLineNo">291</span>  }<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>  @Override<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  public void setSequenceId(long seqId) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    this.seqId = seqId;<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  }<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>  // multi-version concurrency control version.  default value is 0, aka do not care.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>  private long seqId = 0;<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>  /** Dragon time over, return to normal business */<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>  /** Writable Constructor -- DO NOT USE */<a name="line.304"></a>
-<span class="sourceLineNo">305</span>  public KeyValue() {}<a name="line.305"></a>
+<span class="sourceLineNo">255</span>     * True to indicate that the byte b is a valid type.<a name="line.255"></a>
+<span class="sourceLineNo">256</span>     * @param b byte to check<a name="line.256"></a>
+<span class="sourceLineNo">257</span>     * @return true or false<a name="line.257"></a>
+<span class="sourceLineNo">258</span>     */<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    static boolean isValidType(byte b) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      return codeArray[b &amp; 0xff] != null;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    }<a name="line.261"></a>
+<span class="sourceLineNo">262</span><a name="line.262"></a>
+<span class="sourceLineNo">263</span>    /**<a name="line.263"></a>
+<span class="sourceLineNo">264</span>     * Cannot rely on enum ordinals . They change if item is removed or moved.<a name="line.264"></a>
+<span class="sourceLineNo">265</span>     * Do our own codes.<a name="line.265"></a>
+<span class="sourceLineNo">266</span>     * @param b<a name="line.266"></a>
+<span class="sourceLineNo">267</span>     * @return Type associated with passed code.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>     */<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    public static Type codeToType(final byte b) {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      Type t = codeArray[b &amp; 0xff];<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      if (t != null) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        return t;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      throw new RuntimeException("Unknown code " + b);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  }<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>  /**<a name="line.278"></a>
+<span class="sourceLineNo">279</span>   * Lowest possible key.<a name="line.279"></a>
+<span class="sourceLineNo">280</span>   * Makes a Key with highest possible Timestamp, empty row and column.  No<a name="line.280"></a>
+<span class="sourceLineNo">281</span>   * key can be equal or lower than this one in memstore or in store file.<a name="line.281"></a>
+<span class="sourceLineNo">282</span>   */<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  public static final KeyValue LOWESTKEY =<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    new KeyValue(HConstants.EMPTY_BYTE_ARRAY, HConstants.LATEST_TIMESTAMP);<a name="line.284"></a>
+<span class="sourceLineNo">285</span><a name="line.285"></a>
+<span class="sourceLineNo">286</span>  ////<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  // KeyValue core instance fields.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  protected byte [] bytes = null;  // an immutable byte array that contains the KV<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  protected int offset = 0;  // offset into bytes buffer KV starts at<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  protected int length = 0;  // length of the KV starting from offset.<a name="line.290"></a>
+<span class="sourceLineNo">291</span><a name="line.291"></a>
+<span class="sourceLineNo">292</span>  /** Here be dragons **/<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>  /**<a name="line.294"></a>
+<span class="sourceLineNo">295</span>   * used to achieve atomic operations in the memstore.<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   */<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  @Override<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  public long getSequenceId() {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    return seqId;<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>
+<span class="sourceLineNo">303</span>  public void setSequenceId(long seqId) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    this.seqId = seqId;<a name="line.304"></a>
+<span class="sourceLineNo">305</span>  }<a name="line.305"></a>
 <span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>  /**<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * Creates a KeyValue from the start of the specified byte array.<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * Presumes &lt;code&gt;bytes&lt;/code&gt; content is formatted as a KeyValue blob.<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * @param bytes byte array<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   */<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  public KeyValue(final byte [] bytes) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    this(bytes, 0);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
+<span class="sourceLineNo">307</span>  // multi-version concurrency control version.  default value is 0, aka do not care.<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  private long seqId = 0;<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>  /** Dragon time over, return to normal business */<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>  /** Writable Constructor -- DO NOT USE */<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  public KeyValue() {}<a name="line.314"></a>
 <span class="sourceLineNo">315</span><a name="line.315"></a>
 <span class="sourceLineNo">316</span>  /**<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * Creates a KeyValue from the specified byte array and offset.<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * Presumes &lt;code&gt;bytes&lt;/code&gt; content starting at &lt;code&gt;offset&lt;/code&gt; is<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * formatted as a KeyValue blob.<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   * @param bytes byte array<a name="line.320"></a>
-<span class="sourceLineNo">321</span>   * @param offset offset to start of KeyValue<a name="line.321"></a>
-<span class="sourceLineNo">322</span>   */<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  public KeyValue(final byte [] bytes, final int offset) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    this(bytes, offset, getLength(bytes, offset));<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  }<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>  /**<a name="line.327"></a>
-<span class="sourceLineNo">328</span>   * Creates a KeyValue from the specified byte array, starting at offset, and<a name="line.328"></a>
-<span class="sourceLineNo">329</span>   * for length &lt;code&gt;length&lt;/code&gt;.<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   * @param bytes byte array<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   * @param offset offset to start of the KeyValue<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   * @param length length of the KeyValue<a name="line.332"></a>
-<span class="sourceLineNo">333</span>   */<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  public KeyValue(final byte [] bytes, final int offset, final int length) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    this.bytes = bytes;<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    this.offset = offset;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    this.length = length;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  }<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>  /**<a name="line.340"></a>
-<span class="sourceLineNo">341</span>   * Creates a KeyValue from the specified byte array, starting at offset, and<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   * for length &lt;code&gt;length&lt;/code&gt;.<a name="line.342"></a>
-<span class="sourceLineNo">343</span>   *<a name="line.343"></a>
-<span class="sourceLineNo">344</span>   * @param bytes  byte array<a name="line.344"></a>
-<span class="sourceLineNo">345</span>   * @param offset offset to start of the KeyValue<a name="line.345"></a>
-<span class="sourceLineNo">346</span>   * @param length length of the KeyValue<a name="line.346"></a>
-<span class="sourceLineNo">347</span>   * @param ts<a name="line.347"></a>
-<span class="sourceLineNo">348</span>   */<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  public KeyValue(final byte[] bytes, final int offset, final int length, long ts) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    this(bytes, offset, length, null, 0, 0, null, 0, 0, ts, Type.Maximum, null, 0, 0, null);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  /** Constructors that build a new backing byte array from fields */<a name="line.353"></a>
-<span class="sourceLineNo">354</span><a name="line.354"></a>
-<span class="sourceLineNo">355</span>  /**<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   * Constructs KeyValue structure filled with null value.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   * Sets type to {@link KeyValue.Type#Maximum}<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   * @param row - row key (arbitrary byte array)<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   * @param timestamp<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   */<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  public KeyValue(final byte [] row, final long timestamp) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    this(row, null, null, timestamp, Type.Maximum, null);<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  }<a name="line.363"></a>
+<span class="sourceLineNo">317</span>   * Creates a KeyValue from the start of the specified byte array.<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * Presumes &lt;code&gt;bytes&lt;/code&gt; content is formatted as a KeyValue blob.<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * @param bytes byte array<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   */<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  public KeyValue(final byte [] bytes) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    this(bytes, 0);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  }<a name="line.323"></a>
+<span class="sourceLineNo">324</span><a name="line.324"></a>
+<span class="sourceLineNo">325</span>  /**<a name="line.325"></a>
+<span class="sourceLineNo">326</span>   * Creates a KeyValue from the specified byte array and offset.<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   * Presumes &lt;code&gt;bytes&lt;/code&gt; content starting at &lt;code&gt;offset&lt;/code&gt; is<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   * formatted as a KeyValue blob.<a name="line.328"></a>
+<span class="sourceLineNo">329</span>   * @param bytes byte array<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   * @param offset offset to start of KeyValue<a name="line.330"></a>
+<span class="sourceLineNo">331</span>   */<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  public KeyValue(final byte [] bytes, final int offset) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    this(bytes, offset, getLength(bytes, offset));<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  }<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>  /**<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   * Creates a KeyValue from the specified byte array, starting at offset, and<a name="line.337"></a>
+<span class="sourceLineNo">338</span>   * for length &lt;code&gt;length&lt;/code&gt;.<a name="line.338"></a>
+<span class="sourceLineNo">339</span>   * @param bytes byte array<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   * @param offset offset to start of the KeyValue<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * @param length length of the KeyValue<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   */<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  public KeyValue(final byte[] bytes, final int offset, final int length) {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    KeyValueUtil.checkKeyValueBytes(bytes, offset, length, true);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    this.bytes = bytes;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    this.offset = offset;<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    this.length = length;<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>  /**<a name="line.350"></a>
+<span class="sourceLineNo">351</span>   * Creates a KeyValue from the specified byte array, starting at offset, and<a name="line.351"></a>
+<span class="sourceLineNo">352</span>   * for length &lt;code&gt;length&lt;/code&gt;.<a name="line.352"></a>
+<span class="sourceLineNo">353</span>   *<a name="line.353"></a>
+<span class="sourceLineNo">354</span>   * @param bytes  byte array<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * @param offset offset to start of the KeyValue<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * @param length length of the KeyValue<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * @param ts<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   */<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  public KeyValue(final byte[] bytes, final int offset, final int length, long ts) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    this(bytes, offset, length, null, 0, 0, null, 0, 0, ts, Type.Maximum, null, 0, 0, null);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  }<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>  /** Constructors that build a new backing byte array from fields */<a name="line.363"></a>
 <span class="sourceLineNo">364</span><a name="line.364"></a>
 <span class="sourceLineNo">365</span>  /**<a name="line.365"></a>
 <span class="sourceLineNo">366</span>   * Constructs KeyValue structure filled with null value.<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   * @param row - row key (arbitrary byte array)<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   * @param timestamp<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   */<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public KeyValue(final byte [] row, final long timestamp, Type type) {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    this(row, null, null, timestamp, type, null);<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  /**<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   * Constructs KeyValue structure filled with null value.<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   * Sets type to {@link KeyValue.Type#Maximum}<a name="line.376"></a>
+<span class="sourceLineNo">367</span>   * Sets type to {@link KeyValue.Type#Maximum}<a name="line.367"></a>
+<span class="sourceLineNo">368</span>   * @param row - row key (arbitrary byte array)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>   * @param timestamp<a name="line.369"></a>
+<span class="sourceLineNo">370</span>   */<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  public KeyValue(final byte [] row, final long timestamp) {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    this(row, null, null, timestamp, Type.Maximum, null);<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>   * Constructs KeyValue structure filled with null value.<a name="line.376"></a>
 <span class="sourceLineNo">377</span>   * @param row - row key (arbitrary byte array)<a name="line.377"></a>
-<span class="sourceLineNo">378</span>   * @param family family name<a name="line.378"></a>
-<span class="sourceLineNo">379</span>   * @param qualifier column qualifier<a name="line.379"></a>
-<span class="sourceLineNo">380</span>   */<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  public KeyValue(final byte [] row, final byte [] family,<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      final byte [] qualifier) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    this(row, family, qualifier, HConstants.LATEST_TIMESTAMP, Type.Maximum);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  }<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span>  /**<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   * Constructs KeyValue structure as a put filled with specified values and<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * LATEST_TIMESTAMP.<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * @param row - row key (arbitrary byte array)<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   * @param family family name<a name="line.390"></a>
-<span class="sourceLineNo">391</span>   * @param qualifier column qualifier<a name="line.391"></a>
-<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  public KeyValue(final byte [] row, final byte [] family,<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      final byte [] qualifier, final byte [] value) {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    this(row, family, qualifier, HConstants.LATEST_TIMESTAMP, Type.Put, value);<a name="line.395"></a>
-<span class="sourceLineNo">396</span>  }<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>  /**<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * Constructs KeyValue structure filled with specified values.<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * @param row row key<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * @param family family name<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @param qualifier column qualifier<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * @param timestamp version timestamp<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * @param type key type<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   * @throws IllegalArgumentException<a name="line.405"></a>
-<span class="sourceLineNo">406</span>   */<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      final byte[] qualifier, final long timestamp, Type type) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    this(row, family, qualifier, timestamp, type, null);<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>   * Constructs KeyValue structure filled with specified values.<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * @param row row key<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * @param family family name<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * @param qualifier column qualifier<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @param timestamp version timestamp<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @param value column value<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * @throws IllegalArgumentException<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   */<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      final byte[] qualifier, final long timestamp, final byte[] value) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    this(row, family, qualifier, timestamp, Type.Put, value);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>  }<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span>  /**<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * Constructs KeyValue structure filled with specified values.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * @param row row key<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * @param family family name<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   * @param qualifier column qualifier<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   * @param timestamp version timestamp<a name="line.431"></a>
-<span class="sourceLineNo">432</span>   * @param value column value<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   * @param tags tags<a name="line.433"></a>
-<span class="sourceLineNo">434</span>   * @throws IllegalArgumentException<a name="line.434"></a>
-<span class="sourceLineNo">435</span>   */<a name="line.435"></a>
-<span class="sourceLineNo">436</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      final byte[] qualifier, final long timestamp, final byte[] value,<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      final Tag[] tags) {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    this(row, family, qualifier, timestamp, value, tags != null ? Arrays.asList(tags) : null);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>  }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * Constructs KeyValue structure filled with specified values.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * @param row row key<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   * @param family family name<a name="line.445"></a>
-<span class="sourceLineNo">446</span>   * @param qualifier column qualifier<a name="line.446"></a>
-<span class="sourceLineNo">447</span>   * @param timestamp version timestamp<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * @param value column value<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   * @param tags tags non-empty list of tags or null<a name="line.449"></a>
-<span class="sourceLineNo">450</span>   * @throws IllegalArgumentException<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   */<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      final byte[] qualifier, final long timestamp, final byte[] value,<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      final List&lt;Tag&gt; tags) {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.455"></a>
-<span class="sourceLineNo">456</span>      family, 0, family==null ? 0 : family.length,<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      timestamp, Type.Put,<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      value, 0, value==null ? 0 : value.length, tags);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>  }<a name="line.460"></a>
-<span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>  /**<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * Constructs KeyValue structure filled with specified values.<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * @param row row key<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   * @param family family name<a name="line.465"></a>
-<span class="sourceLineNo">466</span>   * @param qualifier column qualifier<a name="line.466"></a>
-<span class="sourceLineNo">467</span>   * @param timestamp version timestamp<a name="line.467"></a>
-<span class="sourceLineNo">468</span>   * @param type key type<a name="line.468"></a>
-<span class="sourceLineNo">469</span>   * @param value column value<a name="line.469"></a>
-<span class="sourceLineNo">470</span>   * @throws IllegalArgumentException<a name="line.470"></a>
-<span class="sourceLineNo">471</span>   */<a name="line.471"></a>
-<span class="sourceLineNo">472</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      final byte[] value) {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    this(row, 0, len(row),   family, 0, len(family),   qualifier, 0, len(qualifier),<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        timestamp, type,   value, 0, len(value));<a name="line.476"></a>
-<span class="sourceLineNo">477</span>  }<a name="line.477"></a>
-<span class="sourceLineNo">478</span><a name="line.478"></a>
-<span class="sourceLineNo">479</span>  /**<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * Constructs KeyValue structure filled with specified values.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * &lt;p&gt;<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * Column is split into two fields, family and qualifier.<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * @param row row key<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   * @param family family name<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   * @param qualifier column qualifier<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * @param timestamp version timestamp<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * @param type key type<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * @param value column value<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   * @throws IllegalArgumentException<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   */<a name="line.490"></a>
-<span class="sourceLineNo">491</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      final byte[] value, final List&lt;Tag&gt; tags) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    this(row, family, qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.494"></a>
-<span class="sourceLineNo">495</span>        timestamp, type, value, 0, value==null ? 0 : value.length, tags);<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>  /**<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   * Constructs KeyValue structure filled with specified values.<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   * @param row row key<a name="line.500"></a>
-<span class="sourceLineNo">501</span>   * @param family family name<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   * @param qualifier column qualifier<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   * @param timestamp version timestamp<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   * @param type key type<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @param value column value<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * @throws IllegalArgumentException<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   */<a name="line.507"></a>
-<span class="sourceLineNo">508</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      final byte[] value, final byte[] tags) {<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    this(row, family, qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.511"></a>
-<span class="sourceLineNo">512</span>        timestamp, type, value, 0, value==null ? 0 : value.length, tags);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>  }<a name="line.513"></a>
-<span class="sourceLineNo">514</span><a name="line.514"></a>
-<span class="sourceLineNo">515</span>  /**<a name="line.515"></a>
-<span class="sourceLineNo">516</span>   * Constructs KeyValue structure filled with specified values.<a name="line.516"></a>
-<span class="sourceLineNo">517</span>   * @param row row key<a name="line.517"></a>
-<span class="sourceLineNo">518</span>   * @param family family name<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * @param qualifier column qualifier<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   * @param qoffset qualifier offset<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * @param qlength qualifier length<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   * @param timestamp version timestamp<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   * @param type key type<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   * @param value column value<a name="line.524"></a>
-<span class="sourceLineNo">525</span>   * @param voffset value offset<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * @param vlength value length<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * @throws IllegalArgumentException<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   */<a name="line.528"></a>
-<span class="sourceLineNo">529</span>  public KeyValue(byte [] row, byte [] family,<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      byte [] qualifier, int qoffset, int qlength, long timestamp, Type type,<a name="line.530"></a>
-<span class="sourceLineNo">531</span>      byte [] value, int voffset, int vlength, List&lt;Tag&gt; tags) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.532"></a>
-<span class="sourceLineNo">533</span>        family, 0, family==null ? 0 : family.length,<a name="line.533"></a>
-<span class="sourceLineNo">534</span>        qualifier, qoffset, qlength, timestamp, type,<a name="line.534"></a>
-<span class="sourceLineNo">535</span>        value, voffset, vlength, tags);<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  }<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>  /**<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * @param row<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   * @param family<a name="line.540"></a>
-<span class="sourceLineNo">541</span>   * @param qualifier<a name="line.541"></a>
-<span class="sourceLineNo">542</span>   * @param qoffset<a name="line.542"></a>
-<span class="sourceLineNo">543</span>   * @param qlength<a name="line.543"></a>
-<span class="sourceLineNo">544</span>   * @param timestamp<a name="line.544"></a>
-<span class="sourceLineNo">545</span>   * @param type<a name="line.545"></a>
-<span class="sourceLineNo">546</span>   * @param value<a name="line.546"></a>
-<span class="sourceLineNo">547</span>   * @param voffset<a name="line.547"></a>
-<span class="sourceLineNo">548</span>   * @param vlength<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * @param tags<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   */<a name="line.550"></a>
-<span class="sourceLineNo">551</span>  public KeyValue(byte [] row, byte [] family,<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      byte [] qualifier, int qoffset, int qlength, long timestamp, Type type,<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      byte [] value, int voffset, int vlength, byte[] tags) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.554"></a>
-<span class="sourceLineNo">555</span>        family, 0, family==null ? 0 : family.length,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>        qualifier, qoffset, qlength, timestamp, type,<a name="line.556"></a>
-<span class="sourceLineNo">557</span>        value, voffset, vlength, tags, 0, tags==null ? 0 : tags.length);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>  }<a name="line.558"></a>
-<span class="sourceLineNo">559</span><a name="line.559"></a>
-<span class="sourceLineNo">560</span>  /**<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   * Constructs KeyValue structure filled with specified values.<a name="line.561"></a>
-<span class="sourceLineNo">562</span>   * &lt;p&gt;<a name="line.562"></a>
-<span class="sourceLineNo">563</span>   * Column is split into two fields, family and qualifier.<a name="line.563"></a>
-<span class="sourceLineNo">564</span>   * @param row row key<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   * @throws IllegalArgumentException<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   */<a name="line.566"></a>
-<span class="sourceLineNo">567</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      final byte [] family, final int foffset, final int flength,<a name="line.568"></a>
-<span class="sourceLineNo">569</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      final long timestamp, final Type type,<a name="line.570"></a>
-<span class="sourceLineNo">571</span>      final byte [] value, final int voffset, final int vlength) {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    this(row, roffset, rlength, family, foffset, flength, qualifier, qoffset,<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      qlength, timestamp, type, value, voffset, vlength, null);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>  }<a name="line.574"></a>
-<span class="sourceLineNo">575</span><a name="line.575"></a>
-<span class="sourceLineNo">576</span>  /**<a name="line.576"></a>
-<span class="sourceLineNo">577</span>   * Constructs KeyValue structure filled with specified values. Uses the provided buffer as the<a name="line.577"></a>
-<span class="sourceLineNo">578</span>   * data buffer.<a name="line.578"></a>
-<span class="sourceLineNo">579</span>   * &lt;p&gt;<a name="line.579"></a>
-<span class="sourceLineNo">580</span>   * Column is split into two fields, family and qualifier.<a name="line.580"></a>
-<span class="sourceLineNo">581</span>   *<a name="line.581"></a>
-<span class="sourceLineNo">582</span>   * @param buffer the bytes buffer to use<a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * @param boffset buffer offset<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   * @param row row key<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   * @param roffset row offset<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   * @param rlength row length<a name="line.586"></a>
-<span class="sourceLineNo">587</span>   * @param family family name<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   * @param foffset family offset<a name="line.588"></a>
-<span class="sourceLineNo">589</span>   * @param flength family length<a name="line.589"></a>
-<span class="sourceLineNo">590</span>   * @param qualifier column qualifier<a name="line.590"></a>
-<span class="sourceLineNo">591</span>   * @param qoffset qualifier offset<a name="line.591"></a>
-<span class="sourceLineNo">592</span>   * @param qlength qualifier length<a name="line.592"></a>
-<span class="sourceLineNo">593</span>   * @param timestamp version timestamp<a name="line.593"></a>
-<span class="sourceLineNo">594</span>   * @param type key type<a name="line.594"></a>
-<span class="sourceLineNo">595</span>   * @param value column value<a name="line.595"></a>
-<span class="sourceLineNo">596</span>   * @param voffset value offset<a name="line.596"></a>
-<span class="sourceLineNo">597</span>   * @param vlength value length<a name="line.597"></a>
-<span class="sourceLineNo">598</span>   * @param tags non-empty list of tags or null<a name="line.598"></a>
-<span class="sourceLineNo">599</span>   * @throws IllegalArgumentException an illegal value was passed or there is insufficient space<a name="line.599"></a>
-<span class="sourceLineNo">600</span>   * remaining in the buffer<a name="line.600"></a>
-<span class="sourceLineNo">601</span>   */<a name="line.601"></a>
-<span class="sourceLineNo">602</span>  public KeyValue(byte [] buffer, final int boffset,<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      final byte [] row, final int roffset, final int rlength,<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      final byte [] family, final int foffset, final int flength,<a name="line.604"></a>
-<span class="sourceLineNo">605</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.605"></a>
-<span class="sourceLineNo">606</span>      final long timestamp, final Type type,<a name="line.606"></a>
-<span class="sourceLineNo">607</span>      final byte [] value, final int voffset, final int vlength,<a name="line.607"></a>
-<span class="sourceLineNo">608</span>      final Tag[] tags) {<a name="line.608"></a>
-<span class="sourceLineNo">609</span>     this.bytes  = buffer;<a name="line.609"></a>
-<span class="sourceLineNo">610</span>     this.length = writeByteArray(buffer, boffset,<a name="line.610"></a>
-<span class="sourceLineNo">611</span>         row, roffset, rlength,<a name="line.611"></a>
-<span class="sourceLineNo">612</span>         family, foffset, flength, qualifier, qoffset, qlength,<a name="line.612"></a>
-<span class="sourceLineNo">613</span>        timestamp, type, value, voffset, vlength, tags);<a name="line.613"></a>
-<span class="sourceLineNo">614</span>     this.offset = boffset;<a name="line.614"></a>
-<span class="sourceLineNo">615</span>   }<a name="line.615"></a>
-<span class="sourceLineNo">616</span><a name="line.616"></a>
-<span class="sourceLineNo">617</span>  /**<a name="line.617"></a>
-<span class="sourceLineNo">618</span>   * Constructs KeyValue structure filled with specified values.<a name="line.618"></a>
-<span class="sourceLineNo">619</span>   * &lt;p&gt;<a name="line.619"></a>
-<span class="sourceLineNo">620</span>   * Column is split into two fields, family and qualifier.<a name="line.620"></a>
-<span class="sourceLineNo">621</span>   * @param row row key<a name="line.621"></a>
-<span class="sourceLineNo">622</span>   * @param roffset row offset<a name="line.622"></a>
-<span class="sourceLineNo">623</span>   * @param rlength row length<a name="line.623"></a>
-<span class="sourceLineNo">624</span>   * @param family family name<a name="line.624"></a>
-<span class="sourceLineNo">625</span>   * @param foffset family offset<a name="line.625"></a>
-<span class="sourceLineNo">626</span>   * @param flength family length<a name="line.626"></a>
-<span class="sourceLineNo">627</span>   * @param qualifier column qualifier<a name="line.627"></a>
-<span class="sourceLineNo">628</span>   * @param qoffset qualifier offset<a name="line.628"></a>
-<span class="sourceLineNo">629</span>   * @param qlength qualifier length<a name="line.629"></a>
-<span class="sourceLineNo">630</span>   * @param timestamp version timestamp<a name="line.630"></a>
-<span class="sourceLineNo">631</span>   * @param type key type<a name="line.631"></a>
-<span class="sourceLineNo">632</span>   * @param value column value<a name="line.632"></a>
-<span class="sourceLineNo">633</span>   * @param voffset value offset<a name="line.633"></a>
-<span class="sourceLineNo">634</span>   * @param vlength value length<a name="line.634"></a>
-<span class="sourceLineNo">635</span>   * @param tags tags<a name="line.635"></a>
-<span class="sourceLineNo">636</span>   * @throws IllegalArgumentException<a name="line.636"></a>
-<span class="sourceLineNo">637</span>   */<a name="line.637"></a>
-<span class="sourceLineNo">638</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      final byte [] family, final int foffset, final int flength,<a name="line.639"></a>
-<span class="sourceLineNo">640</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      final long timestamp, final Type type,<a name="line.641"></a>
-<span class="sourceLineNo">642</span>      final byte [] value, final int voffset, final int vlength,<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      final List&lt;Tag&gt; tags) {<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    this.bytes = createByteArray(row, roffset, rlength,<a name="line.644"></a>
-<span class="sourceLineNo">645</span>        family, foffset, flength, qualifier, qoffset, qlength,<a name="line.645"></a>
-<span class="sourceLineNo">646</span>        timestamp, type, value, voffset, vlength, tags);<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    this.length = bytes.length;<a name="line.647"></a>
-<span class="sourceLineNo">648</span>    this.offset = 0;<a name="line.648"></a>
-<span class="sourceLineNo">649</span>  }<a name="line.649"></a>
-<span class="sourceLineNo">650</span><a name="line.650"></a>
-<span class="sourceLineNo">651</span>  /**<a name="line.651"></a>
-<span class="sourceLineNo">652</span>   * @param row<a name="line.652"></a>
-<span class="sourceLineNo">653</span>   * @param roffset<a name="line.653"></a>
-<span class="sourceLineNo">654</span>   * @param rlength<a name="line.654"></a>
-<span class="sourceLineNo">655</span>   * @param family<a name="line.655"></a>
-<span class="sourceLineNo">656</span>   * @param foffset<a name="line.656"></a>
-<span class="sourceLineNo">657</span>   * @param flength<a name="line.657"></a>
-<span class="sourceLineNo">658</span>   * @param qualifier<a name="line.658"></a>
-<span class="sourceLineNo">659</span>   * @param qoffset<a name="line.659"></a>
-<span class="sourceLineNo">660</span>   * @param qlength<a name="line.660"></a>
-<span class="sourceLineNo">661</span>   * @param timestamp<a name="line.661"></a>
-<span class="sourceLineNo">662</span>   * @param type<a name="line.662"></a>
-<span class="sourceLineNo">663</span>   * @param value<a name="line.663"></a>
-<span class="sourceLineNo">664</span>   * @param voffset<a name="line.664"></a>
-<span class="sourceLineNo">665</span>   * @param vlength<a name="line.665"></a>
-<span class="sourceLineNo">666</span>   * @param tags<a name="line.666"></a>
-<span class="sourceLineNo">667</span>   */<a name="line.667"></a>
-<span class="sourceLineNo">668</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.668"></a>
-<span class="sourceLineNo">669</span>      final byte [] family, final int foffset, final int flength,<a name="line.669"></a>
-<span class="sourceLineNo">670</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.670"></a>
-<span class="sourceLineNo">671</span>      final long timestamp, final Type type,<a name="line.671"></a>
-<span class="sourceLineNo">672</span>      final byte [] value, final int voffset, final int vlength,<a name="line.672"></a>
-<span class="sourceLineNo">673</span>      final byte[] tags, final int tagsOffset, final int tagsLength) {<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    this.bytes = createByteArray(row, roffset, rlength,<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        family, foffset, flength, qualifier, qoffset, qlength,<a name="line.675"></a>
-<span class="sourceLineNo">676</span>        timestamp, type, value, voffset, vlength, tags, tagsOffset, tagsLength);<a name="line.676"></a>
-<span class="sourceLineNo">677</span>    this.length = bytes.length;<a name="line.677"></a>
-<span class="sourceLineNo">678</span>    this.offset = 0;<a name="line.678"></a>
-<span class="sourceLineNo">679</span>  }<a name="line.679"></a>
-<span class="sourceLineNo">680</span><a name="line.680"></a>
-<span class="sourceLineNo">681</span>  /**<a name="line.681"></a>
-<span class="sourceLineNo">682</span>   * Constructs an empty KeyValue structure, with specified sizes.<a name="line.682"></a>
-<span class="sourceLineNo">683</span>   * This can be used to partially fill up KeyValues.<a name="line.683"></a>
-<span class="sourceLineNo">684</span>   * &lt;p&gt;<a name="line.684"></a>
-<span class="sourceLineNo">685</span>   * Column is split into two fields, family and qualifier.<a name="line.685"></a>
-<span class="sourceLineNo">686</span>   * @param rlength row length<a name="line.686"></a>
-<span class="sourceLineNo">687</span>   * @param flength family length<a name="line.687"></a>
-<span class="sourceLineNo">688</span>   * @param qlength qualifier length<a name="line.688"></a>
-<span class="sourceLineNo">689</span>   * @param timestamp version timestamp<a name="line.689"></a>
-<span class="sourceLineNo">690</span>   * @param type key type<a name="line.690"></a>
-<span class="sourceLineNo">691</span>   * @param vlength value length<a name="line.691"></a>
-<span class="sourceLineNo">692</span>   * @throws IllegalArgumentException<a name="line.692"></a>
-<span class="sourceLineNo">693</span>   */<a name="line.693"></a>
-<span class="sourceLineNo">694</span>  public KeyValue(final int rlength,<a name="line.694"></a>
-<span class="sourceLineNo">695</span>      final int flength,<a name="line.695"></a>
-<span class="sourceLineNo">696</span>      final int qlength,<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      final long timestamp, final Type type,<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      final int vlength) {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>    this(rlength, flength, qlength, timestamp, type, vlength, 0);<a name="line.699"></a>
-<span class="sourceLineNo">700</span>  }<a name="line.700"></a>
-<span class="sourceLineNo">701</span><a name="line.701"></a>
-<span class="sourceLineNo">702</span>  /**<a name="line.702"></a>
-<span class="sourceLineNo">703</span>   * Constructs an empty KeyValue structure, with specified sizes.<a name="line.703"></a>
-<span class="sourceLineNo">704</span>   * This can be used to partially fill up KeyValues.<a name="line.704"></a>
-<span class="sourceLineNo">705</span>   * &lt;p&gt;<a name="line.705"></a>
-<span class="sourceLineNo">706</span>   * Column is split into two fields, family and qualifier.<a name="line.706"></a>
-<span class="sourceLineNo">707</span>   * @param rlength row length<a name="line.707"></a>
-<span class="sourceLineNo">708</span>   * @param flength family length<a name="line.708"></a>
-<span class="sourceLineNo">709</span>   * @param qlength qualifier length<a name="line.709"></a>
-<span class="sourceLineNo">710</span>   * @param timestamp version timestamp<a name="line.710"></a>
-<span class="sourceLineNo">711</span>   * @param type key type<a name="line.711"></a>
-<span class="sourceLineNo">712</span>   * @param vlength value length<a name="line.712"></a>
-<span class="sourceLineNo">713</span>   * @param tagsLength<a name="line.713"></a>
-<span class="sourceLineNo">714</span>   * @throws IllegalArgumentException<a name="line.714"></a>
-<span class="sourceLineNo">715</span>   */<a name="line.715"></a>
-<span class="sourceLineNo">716</span>  public KeyValue(final int rlength,<a name="line.716"></a>
-<span class="sourceLineNo">717</span>      final int flength,<a name="line.717"></a>
-<span class="sourceLineNo">718</span>      final int qlength,<a name="line.718"></a>
-<span class="sourceLineNo">719</span>      final long timestamp, final Type type,<a name="line.719"></a>
-<span class="sourceLineNo">720</span>      final int vlength, final int tagsLength) {<a name="line.720"></a>
-<span class="sourceLineNo">721</span>    this.bytes = createEmptyByteArray(rlength, flength, qlength, timestamp, type, vlength,<a name="line.721"></a>
-<span class="sourceLineNo">722</span>        tagsLength);<a name="line.722"></a>
-<span class="sourceLineNo">723</span>    this.length = bytes.length;<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    this.offset = 0;<a name="line.724"></a>
-<span class="sourceLineNo">725</span>  }<a name="line.725"></a>
-<span class="sourceLineNo">726</span><a name="line.726"></a>
-<span class="sourceLineNo">727</span><a name="line.727"></a>
-<span class="sourceLineNo">728</span>  public KeyValue(byte[] row, int roffset, int rlength,<a name="line.728"></a>
-<span class="sourceLineNo">729</span>                  byte[] family, int foffset, int flength,<a name="line.729"></a>
-<span class="sourceLineNo">730</span>                  ByteBuffer qualifier, long ts, Type type, ByteBuffer value, List&lt;Tag&gt; tags) {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    this.bytes = createByteArray(row, roffset, rlength, family, foffset, flength,<a name="line.731"></a>
-<span class="sourceLineNo">732</span>        qualifier, 0, qualifier == null ? 0 : qualifier.remaining(), ts, type,<a name="line.732"></a>
-<span class="sourceLineNo">733</span>        value, 0, value == null ? 0 : value.remaining(), tags);<a name="line.733"></a>
-<span class="sourceLineNo">734</span>    this.length = bytes.length;<a name="line.734"></a>
-<span class="sourceLineNo">735</span>    this.offset = 0;<a name="line.735"></a>
-<span class="sourceLineNo">736</span>  }<a name="line.736"></a>
+<span class="sourceLineNo">378</span>   * @param timestamp<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   */<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  public KeyValue(final byte [] row, final long timestamp, Type type) {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    this(row, null, null, timestamp, type, null);<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>
+<span class="sourceLineNo">385</span>   * Constructs KeyValue structure filled with null value.<a name="line.385"></a>
+<span class="sourceLineNo">386</span>   * Sets type to {@link KeyValue.Type#Maximum}<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * @param row - row key (arbitrary byte array)<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * @param family family name<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * @param qualifier column qualifier<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   */<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  public KeyValue(final byte [] row, final byte [] family,<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      final byte [] qualifier) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    this(row, family, qualifier, HConstants.LATEST_TIMESTAMP, Type.Maximum);<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>   * Constructs KeyValue structure as a put filled with specified values and<a name="line.397"></a>
+<span class="sourceLineNo">398</span>   * LATEST_TIMESTAMP.<a name="line.398"></a>
+<span class="sourceLineNo">399</span>   * @param row - row key (arbitrary byte array)<a name="line.399"></a>
+<span class="sourceLineNo">400</span>   * @param family family name<a name="line.400"></a>
+<span class="sourceLineNo">401</span>   * @param qualifier column qualifier<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
+<span class="sourceLineNo">403</span>  public KeyValue(final byte [] row, final byte [] family,<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      final byte [] qualifier, final byte [] value) {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    this(row, family, qualifier, HConstants.LATEST_TIMESTAMP, Type.Put, value);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  }<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>  /**<a name="line.408"></a>
+<span class="sourceLineNo">409</span>   * Constructs KeyValue structure filled with specified values.<a name="line.409"></a>
+<span class="sourceLineNo">410</span>   * @param row row key<a name="line.410"></a>
+<span class="sourceLineNo">411</span>   * @param family family name<a name="line.411"></a>
+<span class="sourceLineNo">412</span>   * @param qualifier column qualifier<a name="line.412"></a>
+<span class="sourceLineNo">413</span>   * @param timestamp version timestamp<a name="line.413"></a>
+<span class="sourceLineNo">414</span>   * @param type key type<a name="line.414"></a>
+<span class="sourceLineNo">415</span>   * @throws IllegalArgumentException<a name="line.415"></a>
+<span class="sourceLineNo">416</span>   */<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      final byte[] qualifier, final long timestamp, Type type) {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    this(row, family, qualifier, timestamp, type, null);<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>   * Constructs KeyValue structure filled with specified values.<a name="line.423"></a>
+<span class="sourceLineNo">424</span>   * @param row row key<a name="line.424"></a>
+<span class="sourceLineNo">425</span>   * @param family family name<a name="line.425"></a>
+<span class="sourceLineNo">426</span>   * @param qualifier column qualifier<a name="line.426"></a>
+<span class="sourceLineNo">427</span>   * @param timestamp version timestamp<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   * @param value column value<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * @throws IllegalArgumentException<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   */<a name="line.430"></a>
+<span class="sourceLineNo">431</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      final byte[] qualifier, final long timestamp, final byte[] value) {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    this(row, family, qualifier, timestamp, Type.Put, value);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  }<a name="line.434"></a>
+<span class="sourceLineNo">435</span><a name="line.435"></a>
+<span class="sourceLineNo">436</span>  /**<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   * Constructs KeyValue structure filled with specified values.<a name="line.437"></a>
+<span class="sourceLineNo">438</span>   * @param row row key<a name="line.438"></a>
+<span class="sourceLineNo">439</span>   * @param family family name<a name="line.439"></a>
+<span class="sourceLineNo">440</span>   * @param qualifier column qualifier<a name="line.440"></a>
+<span class="sourceLineNo">441</span>   * @param timestamp version timestamp<a name="line.441"></a>
+<span class="sourceLineNo">442</span>   * @param value column value<a name="line.442"></a>
+<span class="sourceLineNo">443</span>   * @param tags tags<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   * @throws IllegalArgumentException<a name="line.444"></a>
+<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
+<span class="sourceLineNo">446</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      final byte[] qualifier, final long timestamp, final byte[] value,<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      final Tag[] tags) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    this(row, family, qualifier, timestamp, value, tags != null ? Arrays.asList(tags) : null);<a name="line.449"></a>
+<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>  /**<a name="line.452"></a>
+<span class="sourceLineNo">453</span>   * Constructs KeyValue structure filled with specified values.<a name="line.453"></a>
+<span class="sourceLineNo">454</span>   * @param row row key<a name="line.454"></a>
+<span class="sourceLineNo">455</span>   * @param family family name<a name="line.455"></a>
+<span class="sourceLineNo">456</span>   * @param qualifier column qualifier<a name="line.456"></a>
+<span class="sourceLineNo">457</span>   * @param timestamp version timestamp<a name="line.457"></a>
+<span class="sourceLineNo">458</span>   * @param value column value<a name="line.458"></a>
+<span class="sourceLineNo">459</span>   * @param tags tags non-empty list of tags or null<a name="line.459"></a>
+<span class="sourceLineNo">460</span>   * @throws IllegalArgumentException<a name="line.460"></a>
+<span class="sourceLineNo">461</span>   */<a name="line.461"></a>
+<span class="sourceLineNo">462</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      final byte[] qualifier, final long timestamp, final byte[] value,<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      final List&lt;Tag&gt; tags) {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      family, 0, family==null ? 0 : family.length,<a name="line.466"></a>
+<span class="sourceLineNo">467</span>      qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      timestamp, Type.Put,<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      value, 0, value==null ? 0 : value.length, tags);<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  }<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
+<span class="sourceLineNo">472</span>  /**<a name="line.472"></a>
+<span class="sourceLineNo">473</span>   * Constructs KeyValue structure filled with specified values.<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   * @param row row key<a name="line.474"></a>
+<span class="sourceLineNo">475</span>   * @param family family name<a name="line.475"></a>
+<span class="sourceLineNo">476</span>   * @param qualifier column qualifier<a name="line.476"></a>
+<span class="sourceLineNo">477</span>   * @param timestamp version timestamp<a name="line.477"></a>
+<span class="sourceLineNo">478</span>   * @param type key type<a name="line.478"></a>
+<span class="sourceLineNo">479</span>   * @param value column value<a name="line.479"></a>
+<span class="sourceLineNo">480</span>   * @throws IllegalArgumentException<a name="line.480"></a>
+<span class="sourceLineNo">481</span>   */<a name="line.481"></a>
+<span class="sourceLineNo">482</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      final byte[] value) {<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    this(row, 0, len(row),   family, 0, len(family),   qualifier, 0, len(qualifier),<a name="line.485"></a>
+<span class="sourceLineNo">486</span>        timestamp, type,   value, 0, len(value));<a name="line.486"></a>
+<span class="sourceLineNo">487</span>  }<a name="line.487"></a>
+<span class="sourceLineNo">488</span><a name="line.488"></a>
+<span class="sourceLineNo">489</span>  /**<a name="line.489"></a>
+<span class="sourceLineNo">490</span>   * Constructs KeyValue structure filled with specified values.<a name="line.490"></a>
+<span class="sourceLineNo">491</span>   * &lt;p&gt;<a name="line.491"></a>
+<span class="sourceLineNo">492</span>   * Column is split into two fields, family and qualifier.<a name="line.492"></a>
+<span class="sourceLineNo">493</span>   * @param row row key<a name="line.493"></a>
+<span class="sourceLineNo">494</span>   * @param family family name<a name="line.494"></a>
+<span class="sourceLineNo">495</span>   * @param qualifier column qualifier<a name="line.495"></a>
+<span class="sourceLineNo">496</span>   * @param timestamp version timestamp<a name="line.496"></a>
+<span class="sourceLineNo">497</span>   * @param type key type<a name="line.497"></a>
+<span class="sourceLineNo">498</span>   * @param value column value<a name="line.498"></a>
+<span class="sourceLineNo">499</span>   * @throws IllegalArgumentException<a name="line.499"></a>
+<span class="sourceLineNo">500</span>   */<a name="line.500"></a>
+<span class="sourceLineNo">501</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.501"></a>
+<span class="sourceLineNo">502</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      final byte[] value, final List&lt;Tag&gt; tags) {<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    this(row, family, qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.504"></a>
+<span class="sourceLineNo">505</span>        timestamp, type, value, 0, value==null ? 0 : value.length, tags);<a name="line.505"></a>
+<span class="sourceLineNo">506</span>  }<a name="line.506"></a>
+<span class="sourceLineNo">507</span><a name="line.507"></a>
+<span class="sourceLineNo">508</span>  /**<a name="line.508"></a>
+<span class="sourceLineNo">509</span>   * Constructs KeyValue structure filled with specified values.<a name="line.509"></a>
+<span class="sourceLineNo">510</span>   * @param row row key<a name="line.510"></a>
+<span class="sourceLineNo">511</span>   * @param family family name<a name="line.511"></a>
+<span class="sourceLineNo">512</span>   * @param qualifier column qualifier<a name="line.512"></a>
+<span class="sourceLineNo">513</span>   * @param timestamp version timestamp<a name="line.513"></a>
+<span class="sourceLineNo">514</span>   * @param type key type<a name="line.514"></a>
+<span class="sourceLineNo">515</span>   * @param value column value<a name="line.515"></a>
+<span class="sourceLineNo">516</span>   * @throws IllegalArgumentException<a name="line.516"></a>
+<span class="sourceLineNo">517</span>   */<a name="line.517"></a>
+<span class="sourceLineNo">518</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.518"></a>
+<span class="sourceLineNo">519</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.519"></a>
+<span class="sourceLineNo">520</span>      final byte[] value, final byte[] tags) {<a name="line.520"></a>
+<span class="sourceLineNo">521</span>    this(row, family, qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.521"></a>
+<span class="sourceLineNo">522</span>        timestamp, type, value, 0, value==null ? 0 : value.length, tags);<a name="line.522"></a>
+<span class="sourceLineNo">523</span>  }<a name="line.523"></a>
+<span class="sourceLineNo">524</span><a name="line.524"></a>
+<span class="sourceLineNo">525</span>  /**<a name="line.525"></a>
+<span class="sourceLineNo">526</span>   * Constructs KeyValue structure filled with specified values.<a name="line.526"></a>
+<span class="sourceLineNo">527</span>   * @param row row key<a name="line.527"></a>
+<span class="sourceLineNo">528</span>   * @param family family name<a name="line.528"></a>
+<span class="sourceLineNo">529</span>   * @param qualifier column qualifier<a name="line.529"></a>
+<span class="sourceLineNo">530</span>   * @param qoffset qualifier offset<a name="line.530"></a>
+<span class="sourceLineNo">531</span>   * @param qlength qualifier length<a name="line.531"></a>
+<span class="sourceLineNo">532</span>   * @param timestamp version timestamp<a name="line.532"></a>
+<span class="sourceLineNo">533</span>   * @param type key type<a name="line.533"></a>
+<span class="sourceLineNo">534</span>   * @param value column value<a name="line.534"></a>
+<span class="sourceLineNo">535</span>   * @param voffset value offset<a name="line.535"></a>
+<span class="sourceLineNo">536</span>   * @param vlength value length<a name="line.536"></a>
+<span class="sourceLineNo">537</span>   * @throws IllegalArgumentException<a name="line.537"></a>
+<span class="sourceLineNo">538</span>   */<a name="line.538"></a>
+<span class="sourceLineNo">539</span>  public KeyValue(byte [] row, byte [] family,<a name="line.539"></a>
+<span class="sourceLineNo">540</span>      byte [] qualifier, int qoffset, int qlength, long timestamp, Type type,<a name="line.540"></a>
+<span class="sourceLineNo">541</span>      byte [] value, int voffset, int vlength, List&lt;Tag&gt; tags) {<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.542"></a>
+<span class="sourceLineNo">543</span>        family, 0, family==null ? 0 : family.length,<a name="line.543"></a>
+<span class="sourceLineNo">544</span>        qualifier, qoffset, qlength, timestamp, type,<a name="line.544"></a>
+<span class="sourceLineNo">545</span>        value, voffset, vlength, tags);<a name="line.545"></a>
+<span class="sourceLineNo">546</span>  }<a name="line.546"></a>
+<span class="sourceLineNo">547</span><a name="line.547"></a>
+<span class="sourceLineNo">548</span>  /**<a name="line.548"></a>
+<span class="sourceLineNo">549</span>   * @param row<a name="line.549"></a>
+<span class="sourceLineNo">550</span>   * @param family<a name="line.550"></a>
+<span class="sourceLineNo">551</span>   * @param qualifier<a name="line.551"></a>
+<span class="sourceLineNo">552</span>   * @param qoffset<a name="line.552"></a>
+<span class="sourceLineNo">553</span>   * @param qlength<a name="line.553"></a>
+<span class="sourceLineNo">554</span>   * @param timestamp<a name="line.554"></a>
+<span class="sourceLineNo">555</span>   * @param type<a name="line.555"></a>
+<span class="sourceLineNo">556</span>   * @param value<a name="line.556"></a>
+<span class="sourceLineNo">557</span>   * @param voffset<a name="line.557"></a>
+<span class="sourceLineNo">558</span>   * @param vlength<a name="line.558"></a>
+<span class="sourceLineNo">559</span>   * @param tags<a name="line.559"></a>
+<span class="sourceLineNo">560</span>   */<a name="line.560"></a>
+<span class="sourceLineNo">561</span>  public KeyValue(byte [] row, byte [] family,<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      byte [] qualifier, int qoffset, int qlength, long timestamp, Type type,<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      byte [] value, int voffset, int vlength, byte[] tags) {<a name="line.563"></a>
+<span class="sourceLineNo">564</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.564"></a>
+<span class="sourceLineNo">565</span>        family, 0, family==null ? 0 : family.length,<a name="line.565"></a>
+<span class="sourceLineNo">566</span>        qualifier, qoffset, qlength, timestamp, type,<a name="line.566"></a>
+<span class="sourceLineNo">567</span>        value, voffset, vlength, tags, 0, tags==null ? 0 : tags.length);<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>  /**<a name="line.570"></a>
+<span class="sourceLineNo">571</span>   * Constructs KeyValue structure filled with specified values.<a name="line.571"></a>
+<span class="sourceLineNo">572</span>   * &lt;p&gt;<a name="line.572"></a>
+<span class="sourceLineNo">573</span>   * Column is split into two fields, family and qualifier.<a name="line.573"></a>
+<span class="sourceLineNo">574</span>   * @param row row key<a name="line.574"></a>
+<span class="sourceLineNo">575</span>   * @throws IllegalArgumentException<a name="line.575"></a>
+<span class="sourceLineNo">576</span>   */<a name="line.576"></a>
+<span class="sourceLineNo">577</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.577"></a>
+<span class="sourceLineNo">578</span>      final byte [] family, final int foffset, final int flength,<a name="line.578"></a>
+<span class="sourceLineNo">579</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      final long timestamp, final Type type,<a name="line.580"></a>
+<span class="sourceLineNo">581</span>      final byte [] value, final int voffset, final int vlength) {<a name="line.581"></a>
+<span class="sourceLineNo">582</span>    this(row, roffset, rlength, family, foffset, flength, qualifier, qoffset,<a name="line.582"></a>
+<span class="sourceLineNo">583</span>      qlength, timestamp, type, value, voffset, vlength, null);<a name="line.583"></a>
+<span class="sourceLineNo">584</span>  }<a name="line.584"></a>
+<span class="sourceLineNo">585</span><a name="line.585"></a>
+<span class="sourceLineNo">586</span>  /**<a name="line.586"></a>
+<span class="sourceLineNo">587</span>   * Constructs KeyValue structure filled with specified values. Uses the provided buffer as the<a name="line.587"></a>
+<span class="sourceLineNo">588</span>   * data buffer.<a name="line.588"></a>
+<span class="sourceLineNo">589</span>   * &lt;p&gt;<a name="line.589"></a>
+<span class="sourceLineNo">590</span>   * Column is split into two fields, family and qualifier.<a name="line.590"></a>
+<span class="sourceLineNo">591</span>   *<a name="line.591"></a>
+<span class="sourceLineNo">592</span>   * @param buffer the bytes buffer to use<a name="line.592"></a>
+<span class="sourceLineNo">593</span>   * @param boffset buffer offset<a name="line.593"></a>
+<span class="sourceLineNo">594</span>   * @param row row key<a name="line.594"></a>
+<span class="sourceLineNo">595</span>   * @param roffset row offset<a name="line.595"></a>
+<span class="sourceLineNo">596</span>   * @param rlength row length<a name="line.596"></a>
+<span class="sourceLineNo">597</span>   * @param family family name<a name="line.597"></a>
+<span class="sourceLineNo">598</span>   * @param foffset family offset<a name="line.598"></a>
+<span class="sourceLineNo">599</span>   * @param flength family length<a name="line.599"></a>
+<span class="sourceLineNo">600</span>   * @param qualifier column qualifier<a name="line.600"></a>
+<span class="sourceLineNo">601</span>   * @param qoffset qualifier offset<a name="line.601"></a>
+<span class="sourceLineNo">602</span>   * @param qlength qualifier length<a name="line.602"></a>
+<span class="sourceLineNo">603</span>   * @param timestamp version timestamp<a name="line.603"></a>
+<span class="sourceLineNo">604</span>   * @param type key type<a name="line.604"></a>
+<span class="sourceLineNo">605</span>   * @param value column value<a name="line.605"></a>
+<span class="sourceLineNo">606</span>   * @param voffset value offset<a name="line.606"></a>
+<span class="sourceLineNo">607</span>   * @param vlength value length<a name="line.607"></a>
+<span class="sourceLineNo">608</span>   * @param tags non-empty list of tags or null<a name="line.608"></a>
+<span class="sourceLineNo">609</span>   * @throws IllegalArgumentException an illegal value was passed or there is insufficient space<a name="line.609"></a>
+<span class="sourceLineNo">610</span>   * remaining in the buffer<a name="line.610"></a>
+<span class="sourceLineNo">611</span>   */<a name="line.611"></a>
+<span class="sourceLineNo">612</span>  public KeyValue(byte [] buffer, final int boffset,<a name="line.612"></a>
+<span class="sourceLineNo">613</span>      final byte [] row, final int roffset, final int rlength,<a name="line.613"></a>
+<span class="sourceLineNo">614</span>      final byte [] family, final int foffset, final int flength,<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.615"></a>
+<span class="sourceLineNo">616</span>      final long timestamp, final Type type,<a name="line.616"></a>
+<span class="sourceLineNo">617</span>      final byte [] value, final int voffset, final int vlength,<a name="line.617"></a>
+<span class="sourceLineNo">618</span>      final Tag[] tags) {<a name="line.618"></a>
+<span class="sourceLineNo">619</span>     this.bytes  = buffer;<a name="line.619"></a>
+<span class="sourceLineNo">620</span>     this.length = writeByteArray(buffer, boffset,<a name="line.620"></a>
+<span class="sourceLineNo">621</span>         row, roffset, rlength,<a name="line.621"></a>
+<span class="sourceLineNo">622</span>         family, foffset, flength, qualifier, qoffset, qlength,<a name="line.622"></a>
+<span class="sourceLineNo">623</span>        timestamp, type, value, voffset, vlength, tags);<a name="line.623"></a>
+<span class="sourceLineNo">624</span>     this.offset = boffset;<a name="line.624"></a>
+<span class="sourceLineNo">625</span>   }<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">628</span>   * Constructs KeyValue structure filled with specified values.<a name="line.628"></a>
+<span class="sourceLineNo">629</span>   * &lt;p&gt;<a name="line.629"></a>
+<span class="sourceLineNo">630</span>   * Column is split into two fields, family and qualifier.<a name="line.630"></a>
+<span class="sourceLineNo">631</span>   * @param row row key<a name="line.631"></a>
+<span class="sourceLineNo">632</span>   * @param roffset row offset<a name="line.632"></a>
+<span class="sourceLineNo">633</span>   * @param rlength row length<a name="line.633"></a>
+<span class="sourceLineNo">634</span>   * @param family family name<a name="line.634"></a>
+<span class="sourceLineNo">635</span>   * @param foffset family offset<a name="line.635"></a>
+<span class="sourceLineNo">636</span>   * @param flength family length<a name="line.636"></a>
+<span class="sourceLineNo">637</span>   * @param qualifier column qualifier<a name="line.637"></a>
+<span class="sourceLineNo">638</span>   * @param qoffset qualifier offset<a name="line.638"></a>
+<span class="sourceLineNo">639</span>   * @param qlength qualifier length<a name="line.639"></a>
+<span class="sourceLineNo">640</span>   * @param timestamp version timestamp<a name="line.640"></a>
+<span class="sourceLineNo">641</span>   * @param type key type<a name="line.641"></a>
+<span class="sourceLineNo">642</span>   * @param value column value<a name="line.642"></a>
+<span class="sourceLineNo">643</span>   * @param voffset value offset<a name="line.643"></a>
+<span class="sourceLineNo">644</span>   * @param vlength value length<a name="line.644"></a>
+<span class="sourceLineNo">645</span>   * @param tags tags<a name="line.645"></a>
+<span class="sourceLineNo">646</span>   * @throws IllegalArgumentException<a name="line.646"></a>
+<span class="sourceLineNo">647</span>   */<a name="line.647"></a>
+<span class="sourceLineNo">648</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.648"></a>
+<span class="sourceLineNo">649</span>      final byte [] family, final int foffset, final int flength,<a name="line.649"></a>
+<span class="sourceLineNo">650</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.650"></a>
+<span class="sourceLineNo">651</span>      final long timestamp, final Type type,<a name="line.651"></a>
+<span class="sourceLineNo">652</span>      final byte [] value, final int voffset, final int vlength,<a name="line.652"></a>
+<span class="sourceLineNo">653</span>      final List&lt;Tag&gt; tags) {<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    this.bytes = createByteArray(row, roffset, rlength,<a name="line.654"></a>
+<span class="sourceLineNo">655</span>        family, foffset, flength, qualifier, qoffset, qlength,<a name="line.655"></a>
+<span class="sourceLineNo">656</span>        timestamp, type, value, voffset, vlength, tags);<a name="line.656"></a>
+<span class="sourceLineNo">657</span>    this.length = bytes.length;<a name="line.657"></a>
+<span class="sourceLineNo">658</span>    this.offset = 0;<a name="line.658"></a>
+<span class="sourceLineNo">659</span>  }<a name="line.659"></a>
+<span class="sourceLineNo">660</span><a name="line.660"></a>
+<span class="sourceLineNo">661</span>  /**<a name="line.661"></a>
+<span class="sourceLineNo">662</span>   * @param row<a name="line.662"></a>
+<span class="sourceLineNo">663</span>   * @param roffset<a name="line.663"></a>
+<span class="sourceLineNo">664</span>   * @param rlength<a name="line.664"></a>
+<span class="sourceLineNo">665</span>   * @param family<a name="line.665"></a>
+<span class="sourceLineNo">666</span>   * @param foffset<a name="line.666"></a>
+<span class="sourceLineNo">667</span>   * @param flength<a name="line.667"></a>
+<span class="sourceLineNo">668</span>   * @param qualifier<a name="line.668"></a>
+<span class="sourceLineNo">669</span>   * @param qoffset<a name="line.669"></a>
+<span class="sourceLineNo">670</span>   * @param qlength<a name="line.670"></a>
+<span class="sourceLineNo">671</span>   * @param timestamp<a name="line.671"></a>
+<span class="sourceLineNo">672</span>   * @param type<a name="line.672"></a>
+<span class="sourceLineNo">673</span>   * @param value<a name="line.673"></a>
+<span class="sourceLineNo">674</span>   * @param voffset<a name="line.674"></a>
+<span class="sourceLineNo">675</span>   * @param vlength<a name="line.675"></a>
+<span class="sourceLineNo">676</span>   * @param tags<a name="line.676"></a>
+<span class="sourceLineNo">677</span>   */<a name="line.677"></a>
+<span class="sourceLineNo">678</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.678"></a>
+<span class="sourceLineNo">679</span>      final byte [] family, final int foffset, final int flength,<a name="line.679"></a>
+<span class="sourceLineNo">680</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.680"></a>
+<span class="sourceLineNo">681</span>      final long timestamp, final Type type,<a name="line.681"></a>
+<span class="sourceLineNo">682</span>      final byte [] value, final int voffset, final int vlength,<a name="line.682"></a>
+<span class="sourceLineNo">683</span>      final byte[] tags, final int tagsOffset, final int tagsLength) {<a name="line.683"></a>
+<span class="sourceLineNo">684</span>    this.bytes = createByteArray(row, roffset, rlength,<a name="line.684"></a>
+<span class="sourceLineNo">685</span>        family, foffset, flength, qualifier, qoffset, qlength,<a name="line.685"></a>
+<span class="sourceLineNo">686</span>        timestamp, type, value, voffset, vlength, tags, tagsOffset, tagsLength);<a name="line.686"></a>
+<span class="sourceLineNo">687</span>    this.length = bytes.length;<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    this.offset = 0;<a name="line.688"></a>
+<span class="sourceLineNo">689</span>  }<a name="line.689"></a>
+<span class="sourceLineNo">690</span><a name="line.690"></a>
+<span class="sourceLineNo">691</span>  /**<a name="line.691"></a>
+<span class="sourceLineNo">692</span>   * Constructs an empty KeyValue structure, with specified sizes.<a name="line.692"></a>
+<span class="sourceLineNo">693</span>   * This can be used to partially fill up KeyValues.<a name="line.693"></a>
+<span class="sourceLineNo">694</span>   * &lt;p&gt;<a name="line.694"></a>
+<span class="sourceLineNo">695</span>   * Column is split into two fields, family and qualifier.<a name="line.695"></a>
+<span class="sourceLineNo">696</span>   * @param rlength row length<a name="line.696"></a>
+<span class="sourceLineNo">697</span>   * @param flength family length<a name="line.697"></a>
+<span class="sourceLineNo">698</span>   * @param qlength qualifier length<a name="line.698"></a>
+<span class="sourceLineNo">699</span>   * @param timestamp version timestamp<a name="line.699"></a>
+<span class="sourceLineNo">700</span>   * @param type key type<a name="line.700"></a>
+<span class="sourceLineNo">701</span>   * @param vlength value length<a name="line.701"></a>
+<span class="sourceLineNo">702</span>   * @throws IllegalArgumentException<a name="line.702"></a>
+<span class="sourceLineNo">703</span>   */<a name="line.703"></a>
+<span class="sourceLineNo">704</span>  public KeyValue(final int rlength,<a name="line.704"></a>
+<span class="sourceLineNo">705</span>      final int flength,<a name="line.705"></a>
+<span class="sourceLineNo">706</span>      final int qlength,<a name="line.706"></a>
+<span class="sourceLineNo">707</span>      final long timestamp, final Type type,<a name="line.707"></a>
+<span class="sourceLineNo">708</span>      final int vlength) {<a name="line.708"></a>
+<span class="sourceLineNo">70

<TRUNCATED>

[15/29] hbase-site git commit: Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/src-html/org/apache/hadoop/hbase/KeyValueUtil.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/KeyValueUtil.html b/devapidocs/src-html/org/apache/hadoop/hbase/KeyValueUtil.html
index 5fcddff..6e51095 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/KeyValueUtil.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/KeyValueUtil.html
@@ -526,163 +526,287 @@
 <span class="sourceLineNo">518</span>    return (long) length + Bytes.SIZEOF_INT;<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>  /**<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   * Create a KeyValue reading from the raw InputStream. Named<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   * &lt;code&gt;iscreate&lt;/code&gt; so doesn't clash with {@link #create(DataInput)}<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   *<a name="line.524"></a>
-<span class="sourceLineNo">525</span>   * @param in<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * @param withTags whether the keyvalue should include tags are not<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * @return Created KeyValue OR if we find a length of zero, we will return<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   *         null which can be useful marking a stream as done.<a name="line.528"></a>
-<span class="sourceLineNo">529</span>   * @throws IOException<a name="line.529"></a>
-<span class="sourceLineNo">530</span>   */<a name="line.530"></a>
-<span class="sourceLineNo">531</span>  public static KeyValue iscreate(final InputStream in, boolean withTags) throws IOException {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    byte[] intBytes = new byte[Bytes.SIZEOF_INT];<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    int bytesRead = 0;<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    while (bytesRead &lt; intBytes.length) {<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      int n = in.read(intBytes, bytesRead, intBytes.length - bytesRead);<a name="line.535"></a>
-<span class="sourceLineNo">536</span>      if (n &lt; 0) {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>        if (bytesRead == 0) {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>          throw new EOFException();<a name="line.538"></a>
-<span class="sourceLineNo">539</span>        }<a name="line.539"></a>
-<span class="sourceLineNo">540</span>        throw new IOException("Failed read of int, read " + bytesRead + " bytes");<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      }<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      bytesRead += n;<a name="line.542"></a>
+<span class="sourceLineNo">521</span>  static String bytesToHex(byte[] buf, int offset, int length) {<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    return ", KeyValueBytesHex=" + Bytes.toStringBinary(buf, offset, length) + ", offset=" + offset<a name="line.522"></a>
+<span class="sourceLineNo">523</span>        + ", length=" + length;<a name="line.523"></a>
+<span class="sourceLineNo">524</span>  }<a name="line.524"></a>
+<span class="sourceLineNo">525</span><a name="line.525"></a>
+<span class="sourceLineNo">526</span>  static void checkKeyValueBytes(byte[] buf, int offset, int length, boolean withTags) {<a name="line.526"></a>
+<span class="sourceLineNo">527</span>    int pos = offset, endOffset = offset + length;<a name="line.527"></a>
+<span class="sourceLineNo">528</span>    // check the key<a name="line.528"></a>
+<span class="sourceLineNo">529</span>    if (pos + Bytes.SIZEOF_INT &gt; endOffset) {<a name="line.529"></a>
+<span class="sourceLineNo">530</span>      throw new IllegalArgumentException(<a name="line.530"></a>
+<span class="sourceLineNo">531</span>          "Overflow when reading key length at position=" + pos + bytesToHex(buf, offset, length));<a name="line.531"></a>
+<span class="sourceLineNo">532</span>    }<a name="line.532"></a>
+<span class="sourceLineNo">533</span>    int keyLen = Bytes.toInt(buf, pos, Bytes.SIZEOF_INT);<a name="line.533"></a>
+<span class="sourceLineNo">534</span>    pos += Bytes.SIZEOF_INT;<a name="line.534"></a>
+<span class="sourceLineNo">535</span>    if (keyLen &lt;= 0 || pos + keyLen &gt; endOffset) {<a name="line.535"></a>
+<span class="sourceLineNo">536</span>      throw new IllegalArgumentException(<a name="line.536"></a>
+<span class="sourceLineNo">537</span>          "Invalid key length in KeyValue. keyLength=" + keyLen + bytesToHex(buf, offset, length));<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    }<a name="line.538"></a>
+<span class="sourceLineNo">539</span>    // check the value<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    if (pos + Bytes.SIZEOF_INT &gt; endOffset) {<a name="line.540"></a>
+<span class="sourceLineNo">541</span>      throw new IllegalArgumentException("Overflow when reading value length at position=" + pos<a name="line.541"></a>
+<span class="sourceLineNo">542</span>          + bytesToHex(buf, offset, length));<a name="line.542"></a>
 <span class="sourceLineNo">543</span>    }<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    // TODO: perhaps some sanity check is needed here.<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    byte[] bytes = new byte[Bytes.toInt(intBytes)];<a name="line.545"></a>
-<span class="sourceLineNo">546</span>    IOUtils.readFully(in, bytes, 0, bytes.length);<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    if (withTags) {<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      return new KeyValue(bytes, 0, bytes.length);<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    } else {<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      return new NoTagsKeyValue(bytes, 0, bytes.length);<a name="line.550"></a>
-<span class="sourceLineNo">551</span>    }<a name="line.551"></a>
-<span class="sourceLineNo">552</span>  }<a name="line.552"></a>
-<span class="sourceLineNo">553</span><a name="line.553"></a>
-<span class="sourceLineNo">554</span>  /**<a name="line.554"></a>
-<span class="sourceLineNo">555</span>   * @param b<a name="line.555"></a>
-<span class="sourceLineNo">556</span>   * @return A KeyValue made of a byte array that holds the key-only part.<a name="line.556"></a>
-<span class="sourceLineNo">557</span>   *         Needed to convert hfile index members to KeyValues.<a name="line.557"></a>
-<span class="sourceLineNo">558</span>   */<a name="line.558"></a>
-<span class="sourceLineNo">559</span>  public static KeyValue createKeyValueFromKey(final byte[] b) {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>    return createKeyValueFromKey(b, 0, b.length);<a name="line.560"></a>
-<span class="sourceLineNo">561</span>  }<a name="line.561"></a>
-<span class="sourceLineNo">562</span><a name="line.562"></a>
-<span class="sourceLineNo">563</span>  /**<a name="line.563"></a>
-<span class="sourceLineNo">564</span>   * @param bb<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   * @return A KeyValue made of a byte buffer that holds the key-only part.<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   *         Needed to convert hfile index members to KeyValues.<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   */<a name="line.567"></a>
-<span class="sourceLineNo">568</span>  public static KeyValue createKeyValueFromKey(final ByteBuffer bb) {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    return createKeyValueFromKey(bb.array(), bb.arrayOffset(), bb.limit());<a name="line.569"></a>
-<span class="sourceLineNo">570</span>  }<a name="line.570"></a>
-<span class="sourceLineNo">571</span><a name="line.571"></a>
-<span class="sourceLineNo">572</span>  /**<a name="line.572"></a>
-<span class="sourceLineNo">573</span>   * @param b<a name="line.573"></a>
-<span class="sourceLineNo">574</span>   * @param o<a name="line.574"></a>
-<span class="sourceLineNo">575</span>   * @param l<a name="line.575"></a>
-<span class="sourceLineNo">576</span>   * @return A KeyValue made of a byte array that holds the key-only part.<a name="line.576"></a>
-<span class="sourceLineNo">577</span>   *         Needed to convert hfile index members to KeyValues.<a name="line.577"></a>
-<span class="sourceLineNo">578</span>   */<a name="line.578"></a>
-<span class="sourceLineNo">579</span>  public static KeyValue createKeyValueFromKey(final byte[] b, final int o, final int l) {<a name="line.579"></a>
-<span class="sourceLineNo">580</span>    byte[] newb = new byte[l + KeyValue.ROW_OFFSET];<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    System.arraycopy(b, o, newb, KeyValue.ROW_OFFSET, l);<a name="line.581"></a>
-<span class="sourceLineNo">582</span>    Bytes.putInt(newb, 0, l);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>    Bytes.putInt(newb, Bytes.SIZEOF_INT, 0);<a name="line.583"></a>
-<span class="sourceLineNo">584</span>    return new KeyValue(newb);<a name="line.584"></a>
-<span class="sourceLineNo">585</span>  }<a name="line.585"></a>
-<span class="sourceLineNo">586</span><a name="line.586"></a>
-<span class="sourceLineNo">587</span>  /**<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   * @param in<a name="line.588"></a>
-<span class="sourceLineNo">589</span>   *          Where to read bytes from. Creates a byte array to hold the<a name="line.589"></a>
-<span class="sourceLineNo">590</span>   *          KeyValue backing bytes copied from the steam.<a name="line.590"></a>
-<span class="sourceLineNo">591</span>   * @return KeyValue created by deserializing from &lt;code&gt;in&lt;/code&gt; OR if we<a name="line.591"></a>
-<span class="sourceLineNo">592</span>   *         find a length of zero, we will return null which can be useful<a name="line.592"></a>
-<span class="sourceLineNo">593</span>   *         marking a stream as done.<a name="line.593"></a>
-<span class="sourceLineNo">594</span>   * @throws IOException<a name="line.594"></a>
-<span class="sourceLineNo">595</span>   */<a name="line.595"></a>
-<span class="sourceLineNo">596</span>  public static KeyValue create(final DataInput in) throws IOException {<a name="line.596"></a>
-<span class="sourceLineNo">597</span>    return create(in.readInt(), in);<a name="line.597"></a>
-<span class="sourceLineNo">598</span>  }<a name="line.598"></a>
-<span class="sourceLineNo">599</span><a name="line.599"></a>
-<span class="sourceLineNo">600</span>  /**<a name="line.600"></a>
-<span class="sourceLineNo">601</span>   * Create a KeyValue reading &lt;code&gt;length&lt;/code&gt; from &lt;code&gt;in&lt;/code&gt;<a name="line.601"></a>
-<span class="sourceLineNo">602</span>   *<a name="line.602"></a>
-<span class="sourceLineNo">603</span>   * @param length<a name="line.603"></a>
-<span class="sourceLineNo">604</span>   * @param in<a name="line.604"></a>
-<span class="sourceLineNo">605</span>   * @return Created KeyValue OR if we find a length of zero, we will return<a name="line.605"></a>
-<span class="sourceLineNo">606</span>   *         null which can be useful marking a stream as done.<a name="line.606"></a>
-<span class="sourceLineNo">607</span>   * @throws IOException<a name="line.607"></a>
-<span class="sourceLineNo">608</span>   */<a name="line.608"></a>
-<span class="sourceLineNo">609</span>  public static KeyValue create(int length, final DataInput in) throws IOException {<a name="line.609"></a>
-<span class="sourceLineNo">610</span><a name="line.610"></a>
-<span class="sourceLineNo">611</span>    if (length &lt;= 0) {<a name="line.611"></a>
-<span class="sourceLineNo">612</span>      if (length == 0)<a name="line.612"></a>
-<span class="sourceLineNo">613</span>        return null;<a name="line.613"></a>
-<span class="sourceLineNo">614</span>      throw new IOException("Failed read " + length + " bytes, stream corrupt?");<a name="line.614"></a>
-<span class="sourceLineNo">615</span>    }<a name="line.615"></a>
-<span class="sourceLineNo">616</span><a name="line.616"></a>
-<span class="sourceLineNo">617</span>    // This is how the old Writables.readFrom used to deserialize. Didn't even<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    // vint.<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    byte[] bytes = new byte[length];<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    in.readFully(bytes);<a name="line.620"></a>
-<span class="sourceLineNo">621</span>    return new KeyValue(bytes, 0, length);<a name="line.621"></a>
-<span class="sourceLineNo">622</span>  }<a name="line.622"></a>
-<span class="sourceLineNo">623</span><a name="line.623"></a>
-<span class="sourceLineNo">624</span>  public static int getSerializedSize(Cell cell, boolean withTags) {<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    if (cell instanceof ExtendedCell) {<a name="line.625"></a>
-<span class="sourceLineNo">626</span>      return ((ExtendedCell) cell).getSerializedSize(withTags);<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    }<a name="line.627"></a>
-<span class="sourceLineNo">628</span>    return length(cell.getRowLength(), cell.getFamilyLength(), cell.getQualifierLength(),<a name="line.628"></a>
-<span class="sourceLineNo">629</span>        cell.getValueLength(), cell.getTagsLength(), withTags);<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>  public static int oswrite(final Cell cell, final OutputStream out, final boolean withTags)<a name="line.632"></a>
-<span class="sourceLineNo">633</span>      throws IOException {<a name="line.633"></a>
-<span class="sourceLineNo">634</span>    if (cell instanceof ExtendedCell) {<a name="line.634"></a>
-<span class="sourceLineNo">635</span>      return ((ExtendedCell)cell).write(out, withTags);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    } else {<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      short rlen = cell.getRowLength();<a name="line.637"></a>
-<span class="sourceLineNo">638</span>      byte flen = cell.getFamilyLength();<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      int qlen = cell.getQualifierLength();<a name="line.639"></a>
-<span class="sourceLineNo">640</span>      int vlen = cell.getValueLength();<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      int tlen = cell.getTagsLength();<a name="line.641"></a>
-<span class="sourceLineNo">642</span>      int size = 0;<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      // write key length<a name="line.643"></a>
-<span class="sourceLineNo">644</span>      int klen = keyLength(rlen, flen, qlen);<a name="line.644"></a>
-<span class="sourceLineNo">645</span>      ByteBufferUtils.putInt(out, klen);<a name="line.645"></a>
-<span class="sourceLineNo">646</span>      // write value length<a name="line.646"></a>
-<span class="sourceLineNo">647</span>      ByteBufferUtils.putInt(out, vlen);<a name="line.647"></a>
-<span class="sourceLineNo">648</span>      // Write rowkey - 2 bytes rk length followed by rowkey bytes<a name="line.648"></a>
-<span class="sourceLineNo">649</span>      StreamUtils.writeShort(out, rlen);<a name="line.649"></a>
-<span class="sourceLineNo">650</span>      out.write(cell.getRowArray(), cell.getRowOffset(), rlen);<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      // Write cf - 1 byte of cf length followed by the family bytes<a name="line.651"></a>
-<span class="sourceLineNo">652</span>      out.write(flen);<a name="line.652"></a>
-<span class="sourceLineNo">653</span>      out.write(cell.getFamilyArray(), cell.getFamilyOffset(), flen);<a name="line.653"></a>
-<span class="sourceLineNo">654</span>      // write qualifier<a name="line.654"></a>
-<span class="sourceLineNo">655</span>      out.write(cell.getQualifierArray(), cell.getQualifierOffset(), qlen);<a name="line.655"></a>
-<span class="sourceLineNo">656</span>      // write timestamp<a name="line.656"></a>
-<span class="sourceLineNo">657</span>      StreamUtils.writeLong(out, cell.getTimestamp());<a name="line.657"></a>
-<span class="sourceLineNo">658</span>      // write the type<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      out.write(cell.getTypeByte());<a name="line.659"></a>
-<span class="sourceLineNo">660</span>      // write value<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      out.write(cell.getValueArray(), cell.getValueOffset(), vlen);<a name="line.661"></a>
-<span class="sourceLineNo">662</span>      size = klen + vlen + KeyValue.KEYVALUE_INFRASTRUCTURE_SIZE;<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      // write tags if we have to<a name="line.663"></a>
-<span class="sourceLineNo">664</span>      if (withTags &amp;&amp; tlen &gt; 0) {<a name="line.664"></a>
-<span class="sourceLineNo">665</span>        // 2 bytes tags length followed by tags bytes<a name="line.665"></a>
-<span class="sourceLineNo">666</span>        // tags length is serialized with 2 bytes only(short way) even if the<a name="line.666"></a>
-<span class="sourceLineNo">667</span>        // type is int. As this<a name="line.667"></a>
-<span class="sourceLineNo">668</span>        // is non -ve numbers, we save the sign bit. See HBASE-11437<a name="line.668"></a>
-<span class="sourceLineNo">669</span>        out.write((byte) (0xff &amp; (tlen &gt;&gt; 8)));<a name="line.669"></a>
-<span class="sourceLineNo">670</span>        out.write((byte) (0xff &amp; tlen));<a name="line.670"></a>
-<span class="sourceLineNo">671</span>        out.write(cell.getTagsArray(), cell.getTagsOffset(), tlen);<a name="line.671"></a>
-<span class="sourceLineNo">672</span>        size += tlen + KeyValue.TAGS_LENGTH_SIZE;<a name="line.672"></a>
-<span class="sourceLineNo">673</span>      }<a name="line.673"></a>
-<span class="sourceLineNo">674</span>      return size;<a name="line.674"></a>
-<span class="sourceLineNo">675</span>    }<a name="line.675"></a>
+<span class="sourceLineNo">544</span>    int valLen = Bytes.toInt(buf, pos, Bytes.SIZEOF_INT);<a name="line.544"></a>
+<span class="sourceLineNo">545</span>    pos += Bytes.SIZEOF_INT;<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    if (valLen &lt; 0 || pos + valLen &gt; endOffset) {<a name="line.546"></a>
+<span class="sourceLineNo">547</span>      throw new IllegalArgumentException("Invalid value length in KeyValue, valueLength=" + valLen<a name="line.547"></a>
+<span class="sourceLineNo">548</span>          + bytesToHex(buf, offset, length));<a name="line.548"></a>
+<span class="sourceLineNo">549</span>    }<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    // check the row<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    if (pos + Bytes.SIZEOF_SHORT &gt; endOffset) {<a name="line.551"></a>
+<span class="sourceLineNo">552</span>      throw new IllegalArgumentException(<a name="line.552"></a>
+<span class="sourceLineNo">553</span>          "Overflow when reading row length at position=" + pos + bytesToHex(buf, offset, length));<a name="line.553"></a>
+<span class="sourceLineNo">554</span>    }<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    short rowLen = Bytes.toShort(buf, pos, Bytes.SIZEOF_SHORT);<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    pos += Bytes.SIZEOF_SHORT;<a name="line.556"></a>
+<span class="sourceLineNo">557</span>    if (rowLen &lt; 0 || pos + rowLen &gt; endOffset) {<a name="line.557"></a>
+<span class="sourceLineNo">558</span>      throw new IllegalArgumentException(<a name="line.558"></a>
+<span class="sourceLineNo">559</span>          "Invalid row length in KeyValue, rowLength=" + rowLen + bytesToHex(buf, offset, length));<a name="line.559"></a>
+<span class="sourceLineNo">560</span>    }<a name="line.560"></a>
+<span class="sourceLineNo">561</span>    pos += rowLen;<a name="line.561"></a>
+<span class="sourceLineNo">562</span>    // check the family<a name="line.562"></a>
+<span class="sourceLineNo">563</span>    if (pos + Bytes.SIZEOF_BYTE &gt; endOffset) {<a name="line.563"></a>
+<span class="sourceLineNo">564</span>      throw new IllegalArgumentException("Overflow when reading family length at position=" + pos<a name="line.564"></a>
+<span class="sourceLineNo">565</span>          + bytesToHex(buf, offset, length));<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    }<a name="line.566"></a>
+<span class="sourceLineNo">567</span>    int familyLen = buf[pos];<a name="line.567"></a>
+<span class="sourceLineNo">568</span>    pos += Bytes.SIZEOF_BYTE;<a name="line.568"></a>
+<span class="sourceLineNo">569</span>    if (familyLen &lt; 0 || pos + familyLen &gt; endOffset) {<a name="line.569"></a>
+<span class="sourceLineNo">570</span>      throw new IllegalArgumentException("Invalid family length in KeyValue, familyLength="<a name="line.570"></a>
+<span class="sourceLineNo">571</span>          + familyLen + bytesToHex(buf, offset, length));<a name="line.571"></a>
+<span class="sourceLineNo">572</span>    }<a name="line.572"></a>
+<span class="sourceLineNo">573</span>    pos += familyLen;<a name="line.573"></a>
+<span class="sourceLineNo">574</span>    // check the qualifier<a name="line.574"></a>
+<span class="sourceLineNo">575</span>    int qualifierLen = keyLen - Bytes.SIZEOF_SHORT - rowLen - Bytes.SIZEOF_BYTE - familyLen<a name="line.575"></a>
+<span class="sourceLineNo">576</span>        - Bytes.SIZEOF_LONG - Bytes.SIZEOF_BYTE;<a name="line.576"></a>
+<span class="sourceLineNo">577</span>    if (qualifierLen &lt; 0 || pos + qualifierLen &gt; endOffset) {<a name="line.577"></a>
+<span class="sourceLineNo">578</span>      throw new IllegalArgumentException("Invalid qualifier length in KeyValue, qualifierLen="<a name="line.578"></a>
+<span class="sourceLineNo">579</span>          + qualifierLen + bytesToHex(buf, offset, length));<a name="line.579"></a>
+<span class="sourceLineNo">580</span>    }<a name="line.580"></a>
+<span class="sourceLineNo">581</span>    pos += qualifierLen;<a name="line.581"></a>
+<span class="sourceLineNo">582</span>    // check the timestamp<a name="line.582"></a>
+<span class="sourceLineNo">583</span>    if (pos + Bytes.SIZEOF_LONG &gt; endOffset) {<a name="line.583"></a>
+<span class="sourceLineNo">584</span>      throw new IllegalArgumentException(<a name="line.584"></a>
+<span class="sourceLineNo">585</span>          "Overflow when reading timestamp at position=" + pos + bytesToHex(buf, offset, length));<a name="line.585"></a>
+<span class="sourceLineNo">586</span>    }<a name="line.586"></a>
+<span class="sourceLineNo">587</span>    long timestamp = Bytes.toLong(buf, pos, Bytes.SIZEOF_LONG);<a name="line.587"></a>
+<span class="sourceLineNo">588</span>    if (timestamp &lt; 0) {<a name="line.588"></a>
+<span class="sourceLineNo">589</span>      throw new IllegalArgumentException(<a name="line.589"></a>
+<span class="sourceLineNo">590</span>          "Timestamp cannot be negative, ts=" + timestamp + bytesToHex(buf, offset, length));<a name="line.590"></a>
+<span class="sourceLineNo">591</span>    }<a name="line.591"></a>
+<span class="sourceLineNo">592</span>    pos += Bytes.SIZEOF_LONG;<a name="line.592"></a>
+<span class="sourceLineNo">593</span>    // check the type<a name="line.593"></a>
+<span class="sourceLineNo">594</span>    if (pos + Bytes.SIZEOF_BYTE &gt; endOffset) {<a name="line.594"></a>
+<span class="sourceLineNo">595</span>      throw new IllegalArgumentException(<a name="line.595"></a>
+<span class="sourceLineNo">596</span>          "Overflow when reading type at position=" + pos + bytesToHex(buf, offset, length));<a name="line.596"></a>
+<span class="sourceLineNo">597</span>    }<a name="line.597"></a>
+<span class="sourceLineNo">598</span>    byte type = buf[pos];<a name="line.598"></a>
+<span class="sourceLineNo">599</span>    if (!Type.isValidType(type)) {<a name="line.599"></a>
+<span class="sourceLineNo">600</span>      throw new IllegalArgumentException(<a name="line.600"></a>
+<span class="sourceLineNo">601</span>          "Invalid type in KeyValue, type=" + type + bytesToHex(buf, offset, length));<a name="line.601"></a>
+<span class="sourceLineNo">602</span>    }<a name="line.602"></a>
+<span class="sourceLineNo">603</span>    pos += Bytes.SIZEOF_BYTE;<a name="line.603"></a>
+<span class="sourceLineNo">604</span>    // check the value<a name="line.604"></a>
+<span class="sourceLineNo">605</span>    if (pos + valLen &gt; endOffset) {<a name="line.605"></a>
+<span class="sourceLineNo">606</span>      throw new IllegalArgumentException(<a name="line.606"></a>
+<span class="sourceLineNo">607</span>          "Overflow when reading value part at position=" + pos + bytesToHex(buf, offset, length));<a name="line.607"></a>
+<span class="sourceLineNo">608</span>    }<a name="line.608"></a>
+<span class="sourceLineNo">609</span>    pos += valLen;<a name="line.609"></a>
+<span class="sourceLineNo">610</span>    // check the tags<a name="line.610"></a>
+<span class="sourceLineNo">611</span>    if (withTags) {<a name="line.611"></a>
+<span class="sourceLineNo">612</span>      if (pos == endOffset) {<a name="line.612"></a>
+<span class="sourceLineNo">613</span>        // withTags is true but no tag in the cell.<a name="line.613"></a>
+<span class="sourceLineNo">614</span>        return;<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      }<a name="line.615"></a>
+<span class="sourceLineNo">616</span>      if (pos + Bytes.SIZEOF_SHORT &gt; endOffset) {<a name="line.616"></a>
+<span class="sourceLineNo">617</span>        throw new IllegalArgumentException("Overflow when reading tags length at position=" + pos<a name="line.617"></a>
+<span class="sourceLineNo">618</span>            + bytesToHex(buf, offset, length));<a name="line.618"></a>
+<span class="sourceLineNo">619</span>      }<a name="line.619"></a>
+<span class="sourceLineNo">620</span>      short tagsLen = Bytes.toShort(buf, pos);<a name="line.620"></a>
+<span class="sourceLineNo">621</span>      pos += Bytes.SIZEOF_SHORT;<a name="line.621"></a>
+<span class="sourceLineNo">622</span>      if (tagsLen &lt; 0 || pos + tagsLen &gt; endOffset) {<a name="line.622"></a>
+<span class="sourceLineNo">623</span>        throw new IllegalArgumentException("Invalid tags length in KeyValue at position="<a name="line.623"></a>
+<span class="sourceLineNo">624</span>            + (pos - Bytes.SIZEOF_SHORT) + bytesToHex(buf, offset, length));<a name="line.624"></a>
+<span class="sourceLineNo">625</span>      }<a name="line.625"></a>
+<span class="sourceLineNo">626</span>      int tagsEndOffset = pos + tagsLen;<a name="line.626"></a>
+<span class="sourceLineNo">627</span>      for (; pos &lt; tagsEndOffset;) {<a name="line.627"></a>
+<span class="sourceLineNo">628</span>        if (pos + Tag.TAG_LENGTH_SIZE &gt; endOffset) {<a name="line.628"></a>
+<span class="sourceLineNo">629</span>          throw new IllegalArgumentException("Overflow when reading tag length at position=" + pos<a name="line.629"></a>
+<span class="sourceLineNo">630</span>              + bytesToHex(buf, offset, length));<a name="line.630"></a>
+<span class="sourceLineNo">631</span>        }<a name="line.631"></a>
+<span class="sourceLineNo">632</span>        short tagLen = Bytes.toShort(buf, pos);<a name="line.632"></a>
+<span class="sourceLineNo">633</span>        pos += Tag.TAG_LENGTH_SIZE;<a name="line.633"></a>
+<span class="sourceLineNo">634</span>        // tagLen contains one byte tag type, so must be not less than 1.<a name="line.634"></a>
+<span class="sourceLineNo">635</span>        if (tagLen &lt; 1 || pos + tagLen &gt; endOffset) {<a name="line.635"></a>
+<span class="sourceLineNo">636</span>          throw new IllegalArgumentException(<a name="line.636"></a>
+<span class="sourceLineNo">637</span>              "Invalid tag length at position=" + (pos - Tag.TAG_LENGTH_SIZE) + ", tagLength="<a name="line.637"></a>
+<span class="sourceLineNo">638</span>                  + tagLen + bytesToHex(buf, offset, length));<a name="line.638"></a>
+<span class="sourceLineNo">639</span>        }<a name="line.639"></a>
+<span class="sourceLineNo">640</span>        pos += tagLen;<a name="line.640"></a>
+<span class="sourceLineNo">641</span>      }<a name="line.641"></a>
+<span class="sourceLineNo">642</span>    }<a name="line.642"></a>
+<span class="sourceLineNo">643</span>    if (pos != endOffset) {<a name="line.643"></a>
+<span class="sourceLineNo">644</span>      throw new IllegalArgumentException("Some redundant bytes in KeyValue's buffer, startOffset="<a name="line.644"></a>
+<span class="sourceLineNo">645</span>          + pos + ", endOffset=" + endOffset + bytesToHex(buf, offset, length));<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><a name="line.648"></a>
+<span class="sourceLineNo">649</span>  /**<a name="line.649"></a>
+<span class="sourceLineNo">650</span>   * Create a KeyValue reading from the raw InputStream. Named<a name="line.650"></a>
+<span class="sourceLineNo">651</span>   * &lt;code&gt;createKeyValueFromInputStream&lt;/code&gt; so doesn't clash with {@link #create(DataInput)}<a name="line.651"></a>
+<span class="sourceLineNo">652</span>   * @param in inputStream to read.<a name="line.652"></a>
+<span class="sourceLineNo">653</span>   * @param withTags whether the keyvalue should include tags are not<a name="line.653"></a>
+<span class="sourceLineNo">654</span>   * @return Created KeyValue OR if we find a length of zero, we will return null which can be<a name="line.654"></a>
+<span class="sourceLineNo">655</span>   *         useful marking a stream as done.<a name="line.655"></a>
+<span class="sourceLineNo">656</span>   * @throws IOException<a name="line.656"></a>
+<span class="sourceLineNo">657</span>   */<a name="line.657"></a>
+<span class="sourceLineNo">658</span>  public static KeyValue createKeyValueFromInputStream(InputStream in, boolean withTags)<a name="line.658"></a>
+<span class="sourceLineNo">659</span>      throws IOException {<a name="line.659"></a>
+<span class="sourceLineNo">660</span>    byte[] intBytes = new byte[Bytes.SIZEOF_INT];<a name="line.660"></a>
+<span class="sourceLineNo">661</span>    int bytesRead = 0;<a name="line.661"></a>
+<span class="sourceLineNo">662</span>    while (bytesRead &lt; intBytes.length) {<a name="line.662"></a>
+<span class="sourceLineNo">663</span>      int n = in.read(intBytes, bytesRead, intBytes.length - bytesRead);<a name="line.663"></a>
+<span class="sourceLineNo">664</span>      if (n &lt; 0) {<a name="line.664"></a>
+<span class="sourceLineNo">665</span>        if (bytesRead == 0) {<a name="line.665"></a>
+<span class="sourceLineNo">666</span>          throw new EOFException();<a name="line.666"></a>
+<span class="sourceLineNo">667</span>        }<a name="line.667"></a>
+<span class="sourceLineNo">668</span>        throw new IOException("Failed read of int, read " + bytesRead + " bytes");<a name="line.668"></a>
+<span class="sourceLineNo">669</span>      }<a name="line.669"></a>
+<span class="sourceLineNo">670</span>      bytesRead += n;<a name="line.670"></a>
+<span class="sourceLineNo">671</span>    }<a name="line.671"></a>
+<span class="sourceLineNo">672</span>    byte[] bytes = new byte[Bytes.toInt(intBytes)];<a name="line.672"></a>
+<span class="sourceLineNo">673</span>    IOUtils.readFully(in, bytes, 0, bytes.length);<a name="line.673"></a>
+<span class="sourceLineNo">674</span>    return withTags ? new KeyValue(bytes, 0, bytes.length)<a name="line.674"></a>
+<span class="sourceLineNo">675</span>        : new NoTagsKeyValue(bytes, 0, bytes.length);<a name="line.675"></a>
 <span class="sourceLineNo">676</span>  }<a name="line.676"></a>
-<span class="sourceLineNo">677</span>}<a name="line.677"></a>
+<span class="sourceLineNo">677</span><a name="line.677"></a>
+<span class="sourceLineNo">678</span>  /**<a name="line.678"></a>
+<span class="sourceLineNo">679</span>   * @param b<a name="line.679"></a>
+<span class="sourceLineNo">680</span>   * @return A KeyValue made of a byte array that holds the key-only part.<a name="line.680"></a>
+<span class="sourceLineNo">681</span>   *         Needed to convert hfile index members to KeyValues.<a name="line.681"></a>
+<span class="sourceLineNo">682</span>   */<a name="line.682"></a>
+<span class="sourceLineNo">683</span>  public static KeyValue createKeyValueFromKey(final byte[] b) {<a name="line.683"></a>
+<span class="sourceLineNo">684</span>    return createKeyValueFromKey(b, 0, b.length);<a name="line.684"></a>
+<span class="sourceLineNo">685</span>  }<a name="line.685"></a>
+<span class="sourceLineNo">686</span><a name="line.686"></a>
+<span class="sourceLineNo">687</span>  /**<a name="line.687"></a>
+<span class="sourceLineNo">688</span>   * @param bb<a name="line.688"></a>
+<span class="sourceLineNo">689</span>   * @return A KeyValue made of a byte buffer that holds the key-only part.<a name="line.689"></a>
+<span class="sourceLineNo">690</span>   *         Needed to convert hfile index members to KeyValues.<a name="line.690"></a>
+<span class="sourceLineNo">691</span>   */<a name="line.691"></a>
+<span class="sourceLineNo">692</span>  public static KeyValue createKeyValueFromKey(final ByteBuffer bb) {<a name="line.692"></a>
+<span class="sourceLineNo">693</span>    return createKeyValueFromKey(bb.array(), bb.arrayOffset(), bb.limit());<a name="line.693"></a>
+<span class="sourceLineNo">694</span>  }<a name="line.694"></a>
+<span class="sourceLineNo">695</span><a name="line.695"></a>
+<span class="sourceLineNo">696</span>  /**<a name="line.696"></a>
+<span class="sourceLineNo">697</span>   * @param b<a name="line.697"></a>
+<span class="sourceLineNo">698</span>   * @param o<a name="line.698"></a>
+<span class="sourceLineNo">699</span>   * @param l<a name="line.699"></a>
+<span class="sourceLineNo">700</span>   * @return A KeyValue made of a byte array that holds the key-only part.<a name="line.700"></a>
+<span class="sourceLineNo">701</span>   *         Needed to convert hfile index members to KeyValues.<a name="line.701"></a>
+<span class="sourceLineNo">702</span>   */<a name="line.702"></a>
+<span class="sourceLineNo">703</span>  public static KeyValue createKeyValueFromKey(final byte[] b, final int o, final int l) {<a name="line.703"></a>
+<span class="sourceLineNo">704</span>    byte[] newb = new byte[l + KeyValue.ROW_OFFSET];<a name="line.704"></a>
+<span class="sourceLineNo">705</span>    System.arraycopy(b, o, newb, KeyValue.ROW_OFFSET, l);<a name="line.705"></a>
+<span class="sourceLineNo">706</span>    Bytes.putInt(newb, 0, l);<a name="line.706"></a>
+<span class="sourceLineNo">707</span>    Bytes.putInt(newb, Bytes.SIZEOF_INT, 0);<a name="line.707"></a>
+<span class="sourceLineNo">708</span>    return new KeyValue(newb);<a name="line.708"></a>
+<span class="sourceLineNo">709</span>  }<a name="line.709"></a>
+<span class="sourceLineNo">710</span><a name="line.710"></a>
+<span class="sourceLineNo">711</span>  /**<a name="line.711"></a>
+<span class="sourceLineNo">712</span>   * @param in<a name="line.712"></a>
+<span class="sourceLineNo">713</span>   *          Where to read bytes from. Creates a byte array to hold the<a name="line.713"></a>
+<span class="sourceLineNo">714</span>   *          KeyValue backing bytes copied from the steam.<a name="line.714"></a>
+<span class="sourceLineNo">715</span>   * @return KeyValue created by deserializing from &lt;code&gt;in&lt;/code&gt; OR if we<a name="line.715"></a>
+<span class="sourceLineNo">716</span>   *         find a length of zero, we will return null which can be useful<a name="line.716"></a>
+<span class="sourceLineNo">717</span>   *         marking a stream as done.<a name="line.717"></a>
+<span class="sourceLineNo">718</span>   * @throws IOException<a name="line.718"></a>
+<span class="sourceLineNo">719</span>   */<a name="line.719"></a>
+<span class="sourceLineNo">720</span>  public static KeyValue create(final DataInput in) throws IOException {<a name="line.720"></a>
+<span class="sourceLineNo">721</span>    return create(in.readInt(), in);<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>   * Create a KeyValue reading &lt;code&gt;length&lt;/code&gt; from &lt;code&gt;in&lt;/code&gt;<a name="line.725"></a>
+<span class="sourceLineNo">726</span>   *<a name="line.726"></a>
+<span class="sourceLineNo">727</span>   * @param length<a name="line.727"></a>
+<span class="sourceLineNo">728</span>   * @param in<a name="line.728"></a>
+<span class="sourceLineNo">729</span>   * @return Created KeyValue OR if we find a length of zero, we will return<a name="line.729"></a>
+<span class="sourceLineNo">730</span>   *         null which can be useful marking a stream as done.<a name="line.730"></a>
+<span class="sourceLineNo">731</span>   * @throws IOException<a name="line.731"></a>
+<span class="sourceLineNo">732</span>   */<a name="line.732"></a>
+<span class="sourceLineNo">733</span>  public static KeyValue create(int length, final DataInput in) throws IOException {<a name="line.733"></a>
+<span class="sourceLineNo">734</span><a name="line.734"></a>
+<span class="sourceLineNo">735</span>    if (length &lt;= 0) {<a name="line.735"></a>
+<span class="sourceLineNo">736</span>      if (length == 0)<a name="line.736"></a>
+<span class="sourceLineNo">737</span>        return null;<a name="line.737"></a>
+<span class="sourceLineNo">738</span>      throw new IOException("Failed read " + length + " bytes, stream corrupt?");<a name="line.738"></a>
+<span class="sourceLineNo">739</span>    }<a name="line.739"></a>
+<span class="sourceLineNo">740</span><a name="line.740"></a>
+<span class="sourceLineNo">741</span>    // This is how the old Writables.readFrom used to deserialize. Didn't even<a name="line.741"></a>
+<span class="sourceLineNo">742</span>    // vint.<a name="line.742"></a>
+<span class="sourceLineNo">743</span>    byte[] bytes = new byte[length];<a name="line.743"></a>
+<span class="sourceLineNo">744</span>    in.readFully(bytes);<a name="line.744"></a>
+<span class="sourceLineNo">745</span>    return new KeyValue(bytes, 0, length);<a name="line.745"></a>
+<span class="sourceLineNo">746</span>  }<a name="line.746"></a>
+<span class="sourceLineNo">747</span><a name="line.747"></a>
+<span class="sourceLineNo">748</span>  public static int getSerializedSize(Cell cell, boolean withTags) {<a name="line.748"></a>
+<span class="sourceLineNo">749</span>    if (cell instanceof ExtendedCell) {<a name="line.749"></a>
+<span class="sourceLineNo">750</span>      return ((ExtendedCell) cell).getSerializedSize(withTags);<a name="line.750"></a>
+<span class="sourceLineNo">751</span>    }<a name="line.751"></a>
+<span class="sourceLineNo">752</span>    return length(cell.getRowLength(), cell.getFamilyLength(), cell.getQualifierLength(),<a name="line.752"></a>
+<span class="sourceLineNo">753</span>        cell.getValueLength(), cell.getTagsLength(), withTags);<a name="line.753"></a>
+<span class="sourceLineNo">754</span>  }<a name="line.754"></a>
+<span class="sourceLineNo">755</span><a name="line.755"></a>
+<span class="sourceLineNo">756</span>  public static int oswrite(final Cell cell, final OutputStream out, final boolean withTags)<a name="line.756"></a>
+<span class="sourceLineNo">757</span>      throws IOException {<a name="line.757"></a>
+<span class="sourceLineNo">758</span>    if (cell instanceof ExtendedCell) {<a name="line.758"></a>
+<span class="sourceLineNo">759</span>      return ((ExtendedCell)cell).write(out, withTags);<a name="line.759"></a>
+<span class="sourceLineNo">760</span>    } else {<a name="line.760"></a>
+<span class="sourceLineNo">761</span>      short rlen = cell.getRowLength();<a name="line.761"></a>
+<span class="sourceLineNo">762</span>      byte flen = cell.getFamilyLength();<a name="line.762"></a>
+<span class="sourceLineNo">763</span>      int qlen = cell.getQualifierLength();<a name="line.763"></a>
+<span class="sourceLineNo">764</span>      int vlen = cell.getValueLength();<a name="line.764"></a>
+<span class="sourceLineNo">765</span>      int tlen = cell.getTagsLength();<a name="line.765"></a>
+<span class="sourceLineNo">766</span>      int size = 0;<a name="line.766"></a>
+<span class="sourceLineNo">767</span>      // write key length<a name="line.767"></a>
+<span class="sourceLineNo">768</span>      int klen = keyLength(rlen, flen, qlen);<a name="line.768"></a>
+<span class="sourceLineNo">769</span>      ByteBufferUtils.putInt(out, klen);<a name="line.769"></a>
+<span class="sourceLineNo">770</span>      // write value length<a name="line.770"></a>
+<span class="sourceLineNo">771</span>      ByteBufferUtils.putInt(out, vlen);<a name="line.771"></a>
+<span class="sourceLineNo">772</span>      // Write rowkey - 2 bytes rk length followed by rowkey bytes<a name="line.772"></a>
+<span class="sourceLineNo">773</span>      StreamUtils.writeShort(out, rlen);<a name="line.773"></a>
+<span class="sourceLineNo">774</span>      out.write(cell.getRowArray(), cell.getRowOffset(), rlen);<a name="line.774"></a>
+<span class="sourceLineNo">775</span>      // Write cf - 1 byte of cf length followed by the family bytes<a name="line.775"></a>
+<span class="sourceLineNo">776</span>      out.write(flen);<a name="line.776"></a>
+<span class="sourceLineNo">777</span>      out.write(cell.getFamilyArray(), cell.getFamilyOffset(), flen);<a name="line.777"></a>
+<span class="sourceLineNo">778</span>      // write qualifier<a name="line.778"></a>
+<span class="sourceLineNo">779</span>      out.write(cell.getQualifierArray(), cell.getQualifierOffset(), qlen);<a name="line.779"></a>
+<span class="sourceLineNo">780</span>      // write timestamp<a name="line.780"></a>
+<span class="sourceLineNo">781</span>      StreamUtils.writeLong(out, cell.getTimestamp());<a name="line.781"></a>
+<span class="sourceLineNo">782</span>      // write the type<a name="line.782"></a>
+<span class="sourceLineNo">783</span>      out.write(cell.getTypeByte());<a name="line.783"></a>
+<span class="sourceLineNo">784</span>      // write value<a name="line.784"></a>
+<span class="sourceLineNo">785</span>      out.write(cell.getValueArray(), cell.getValueOffset(), vlen);<a name="line.785"></a>
+<span class="sourceLineNo">786</span>      size = klen + vlen + KeyValue.KEYVALUE_INFRASTRUCTURE_SIZE;<a name="line.786"></a>
+<span class="sourceLineNo">787</span>      // write tags if we have to<a name="line.787"></a>
+<span class="sourceLineNo">788</span>      if (withTags &amp;&amp; tlen &gt; 0) {<a name="line.788"></a>
+<span class="sourceLineNo">789</span>        // 2 bytes tags length followed by tags bytes<a name="line.789"></a>
+<span class="sourceLineNo">790</span>        // tags length is serialized with 2 bytes only(short way) even if the<a name="line.790"></a>
+<span class="sourceLineNo">791</span>        // type is int. As this<a name="line.791"></a>
+<span class="sourceLineNo">792</span>        // is non -ve numbers, we save the sign bit. See HBASE-11437<a name="line.792"></a>
+<span class="sourceLineNo">793</span>        out.write((byte) (0xff &amp; (tlen &gt;&gt; 8)));<a name="line.793"></a>
+<span class="sourceLineNo">794</span>        out.write((byte) (0xff &amp; tlen));<a name="line.794"></a>
+<span class="sourceLineNo">795</span>        out.write(cell.getTagsArray(), cell.getTagsOffset(), tlen);<a name="line.795"></a>
+<span class="sourceLineNo">796</span>        size += tlen + KeyValue.TAGS_LENGTH_SIZE;<a name="line.796"></a>
+<span class="sourceLineNo">797</span>      }<a name="line.797"></a>
+<span class="sourceLineNo">798</span>      return size;<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/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 c579d19..7e371b7 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
@@ -18,9 +18,9 @@
 <span class="sourceLineNo">010</span>  public static final String version = "3.0.0-SNAPSHOT";<a name="line.10"></a>
 <span class="sourceLineNo">011</span>  public static final String revision = "";<a name="line.11"></a>
 <span class="sourceLineNo">012</span>  public static final String user = "jenkins";<a name="line.12"></a>
-<span class="sourceLineNo">013</span>  public static final String date = "Thu Dec 20 10:41:19 UTC 2018";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String date = "Fri Dec 21 17:43:39 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 = "cac6c13f455cde23001f256bae768095";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String srcChecksum = "e8a6d48f3e561a4ebcc03375fa9805fd";<a name="line.15"></a>
 <span class="sourceLineNo">016</span>}<a name="line.16"></a>
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodec.ByteBuffKeyValueDecoder.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodec.ByteBuffKeyValueDecoder.html b/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodec.ByteBuffKeyValueDecoder.html
index b8989eb..12e718e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodec.ByteBuffKeyValueDecoder.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodec.ByteBuffKeyValueDecoder.html
@@ -80,7 +80,7 @@
 <span class="sourceLineNo">072</span>    @Override<a name="line.72"></a>
 <span class="sourceLineNo">073</span>    protected Cell parseCell() throws IOException {<a name="line.73"></a>
 <span class="sourceLineNo">074</span>      // No tags here<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      return KeyValueUtil.iscreate(in, false);<a name="line.75"></a>
+<span class="sourceLineNo">075</span>      return KeyValueUtil.createKeyValueFromInputStream(in, false);<a name="line.75"></a>
 <span class="sourceLineNo">076</span>    }<a name="line.76"></a>
 <span class="sourceLineNo">077</span>  }<a name="line.77"></a>
 <span class="sourceLineNo">078</span><a name="line.78"></a>
@@ -122,27 +122,26 @@
 <span class="sourceLineNo">114</span>      // We know there is not going to be any tags.<a name="line.114"></a>
 <span class="sourceLineNo">115</span>      return new NoTagsByteBufferKeyValue(bb, pos, len);<a name="line.115"></a>
 <span class="sourceLineNo">116</span>    }<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>  }<a name="line.118"></a>
-<span class="sourceLineNo">119</span><a name="line.119"></a>
-<span class="sourceLineNo">120</span>  /**<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   * Implementation depends on {@link InputStream#available()}<a name="line.121"></a>
-<span class="sourceLineNo">122</span>   */<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  @Override<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  public Decoder getDecoder(final InputStream is) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    return new KeyValueDecoder(is);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  }<a name="line.126"></a>
-<span class="sourceLineNo">127</span><a name="line.127"></a>
-<span class="sourceLineNo">128</span>  @Override<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  public Decoder getDecoder(ByteBuff buf) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    return new ByteBuffKeyValueDecoder(buf);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  }<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>  @Override<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  public Encoder getEncoder(OutputStream os) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    return new KeyValueEncoder(os);<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">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>   * Implementation depends on {@link InputStream#available()}<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 Decoder getDecoder(final InputStream is) {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    return new KeyValueDecoder(is);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  }<a name="line.125"></a>
+<span class="sourceLineNo">126</span><a name="line.126"></a>
+<span class="sourceLineNo">127</span>  @Override<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  public Decoder getDecoder(ByteBuff buf) {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    return new ByteBuffKeyValueDecoder(buf);<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  }<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>  @Override<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  public Encoder getEncoder(OutputStream os) {<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    return new KeyValueEncoder(os);<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodec.KeyValueDecoder.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodec.KeyValueDecoder.html b/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodec.KeyValueDecoder.html
index b8989eb..12e718e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodec.KeyValueDecoder.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodec.KeyValueDecoder.html
@@ -80,7 +80,7 @@
 <span class="sourceLineNo">072</span>    @Override<a name="line.72"></a>
 <span class="sourceLineNo">073</span>    protected Cell parseCell() throws IOException {<a name="line.73"></a>
 <span class="sourceLineNo">074</span>      // No tags here<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      return KeyValueUtil.iscreate(in, false);<a name="line.75"></a>
+<span class="sourceLineNo">075</span>      return KeyValueUtil.createKeyValueFromInputStream(in, false);<a name="line.75"></a>
 <span class="sourceLineNo">076</span>    }<a name="line.76"></a>
 <span class="sourceLineNo">077</span>  }<a name="line.77"></a>
 <span class="sourceLineNo">078</span><a name="line.78"></a>
@@ -122,27 +122,26 @@
 <span class="sourceLineNo">114</span>      // We know there is not going to be any tags.<a name="line.114"></a>
 <span class="sourceLineNo">115</span>      return new NoTagsByteBufferKeyValue(bb, pos, len);<a name="line.115"></a>
 <span class="sourceLineNo">116</span>    }<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>  }<a name="line.118"></a>
-<span class="sourceLineNo">119</span><a name="line.119"></a>
-<span class="sourceLineNo">120</span>  /**<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   * Implementation depends on {@link InputStream#available()}<a name="line.121"></a>
-<span class="sourceLineNo">122</span>   */<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  @Override<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  public Decoder getDecoder(final InputStream is) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    return new KeyValueDecoder(is);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  }<a name="line.126"></a>
-<span class="sourceLineNo">127</span><a name="line.127"></a>
-<span class="sourceLineNo">128</span>  @Override<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  public Decoder getDecoder(ByteBuff buf) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    return new ByteBuffKeyValueDecoder(buf);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  }<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>  @Override<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  public Encoder getEncoder(OutputStream os) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    return new KeyValueEncoder(os);<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">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>   * Implementation depends on {@link InputStream#available()}<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 Decoder getDecoder(final InputStream is) {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    return new KeyValueDecoder(is);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  }<a name="line.125"></a>
+<span class="sourceLineNo">126</span><a name="line.126"></a>
+<span class="sourceLineNo">127</span>  @Override<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  public Decoder getDecoder(ByteBuff buf) {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    return new ByteBuffKeyValueDecoder(buf);<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  }<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>  @Override<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  public Encoder getEncoder(OutputStream os) {<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    return new KeyValueEncoder(os);<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodec.KeyValueEncoder.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodec.KeyValueEncoder.html b/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodec.KeyValueEncoder.html
index b8989eb..12e718e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodec.KeyValueEncoder.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodec.KeyValueEncoder.html
@@ -80,7 +80,7 @@
 <span class="sourceLineNo">072</span>    @Override<a name="line.72"></a>
 <span class="sourceLineNo">073</span>    protected Cell parseCell() throws IOException {<a name="line.73"></a>
 <span class="sourceLineNo">074</span>      // No tags here<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      return KeyValueUtil.iscreate(in, false);<a name="line.75"></a>
+<span class="sourceLineNo">075</span>      return KeyValueUtil.createKeyValueFromInputStream(in, false);<a name="line.75"></a>
 <span class="sourceLineNo">076</span>    }<a name="line.76"></a>
 <span class="sourceLineNo">077</span>  }<a name="line.77"></a>
 <span class="sourceLineNo">078</span><a name="line.78"></a>
@@ -122,27 +122,26 @@
 <span class="sourceLineNo">114</span>      // We know there is not going to be any tags.<a name="line.114"></a>
 <span class="sourceLineNo">115</span>      return new NoTagsByteBufferKeyValue(bb, pos, len);<a name="line.115"></a>
 <span class="sourceLineNo">116</span>    }<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>  }<a name="line.118"></a>
-<span class="sourceLineNo">119</span><a name="line.119"></a>
-<span class="sourceLineNo">120</span>  /**<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   * Implementation depends on {@link InputStream#available()}<a name="line.121"></a>
-<span class="sourceLineNo">122</span>   */<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  @Override<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  public Decoder getDecoder(final InputStream is) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    return new KeyValueDecoder(is);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  }<a name="line.126"></a>
-<span class="sourceLineNo">127</span><a name="line.127"></a>
-<span class="sourceLineNo">128</span>  @Override<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  public Decoder getDecoder(ByteBuff buf) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    return new ByteBuffKeyValueDecoder(buf);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  }<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>  @Override<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  public Encoder getEncoder(OutputStream os) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    return new KeyValueEncoder(os);<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">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>   * Implementation depends on {@link InputStream#available()}<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 Decoder getDecoder(final InputStream is) {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    return new KeyValueDecoder(is);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  }<a name="line.125"></a>
+<span class="sourceLineNo">126</span><a name="line.126"></a>
+<span class="sourceLineNo">127</span>  @Override<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  public Decoder getDecoder(ByteBuff buf) {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    return new ByteBuffKeyValueDecoder(buf);<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  }<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>  @Override<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  public Encoder getEncoder(OutputStream os) {<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    return new KeyValueEncoder(os);<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodec.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodec.html b/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodec.html
index b8989eb..12e718e 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodec.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodec.html
@@ -80,7 +80,7 @@
 <span class="sourceLineNo">072</span>    @Override<a name="line.72"></a>
 <span class="sourceLineNo">073</span>    protected Cell parseCell() throws IOException {<a name="line.73"></a>
 <span class="sourceLineNo">074</span>      // No tags here<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      return KeyValueUtil.iscreate(in, false);<a name="line.75"></a>
+<span class="sourceLineNo">075</span>      return KeyValueUtil.createKeyValueFromInputStream(in, false);<a name="line.75"></a>
 <span class="sourceLineNo">076</span>    }<a name="line.76"></a>
 <span class="sourceLineNo">077</span>  }<a name="line.77"></a>
 <span class="sourceLineNo">078</span><a name="line.78"></a>
@@ -122,27 +122,26 @@
 <span class="sourceLineNo">114</span>      // We know there is not going to be any tags.<a name="line.114"></a>
 <span class="sourceLineNo">115</span>      return new NoTagsByteBufferKeyValue(bb, pos, len);<a name="line.115"></a>
 <span class="sourceLineNo">116</span>    }<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>  }<a name="line.118"></a>
-<span class="sourceLineNo">119</span><a name="line.119"></a>
-<span class="sourceLineNo">120</span>  /**<a name="line.120"></a>
-<span class="sourceLineNo">121</span>   * Implementation depends on {@link InputStream#available()}<a name="line.121"></a>
-<span class="sourceLineNo">122</span>   */<a name="line.122"></a>
-<span class="sourceLineNo">123</span>  @Override<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  public Decoder getDecoder(final InputStream is) {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    return new KeyValueDecoder(is);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  }<a name="line.126"></a>
-<span class="sourceLineNo">127</span><a name="line.127"></a>
-<span class="sourceLineNo">128</span>  @Override<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  public Decoder getDecoder(ByteBuff buf) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    return new ByteBuffKeyValueDecoder(buf);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  }<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>  @Override<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  public Encoder getEncoder(OutputStream os) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    return new KeyValueEncoder(os);<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">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>   * Implementation depends on {@link InputStream#available()}<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 Decoder getDecoder(final InputStream is) {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    return new KeyValueDecoder(is);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  }<a name="line.125"></a>
+<span class="sourceLineNo">126</span><a name="line.126"></a>
+<span class="sourceLineNo">127</span>  @Override<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  public Decoder getDecoder(ByteBuff buf) {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    return new ByteBuffKeyValueDecoder(buf);<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  }<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>  @Override<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  public Encoder getEncoder(OutputStream os) {<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    return new KeyValueEncoder(os);<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodecWithTags.ByteBuffKeyValueDecoder.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodecWithTags.ByteBuffKeyValueDecoder.html b/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodecWithTags.ByteBuffKeyValueDecoder.html
index 80ec837..54e9bbd 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodecWithTags.ByteBuffKeyValueDecoder.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodecWithTags.ByteBuffKeyValueDecoder.html
@@ -86,7 +86,7 @@
 <span class="sourceLineNo">078</span>    @Override<a name="line.78"></a>
 <span class="sourceLineNo">079</span>    protected Cell parseCell() throws IOException {<a name="line.79"></a>
 <span class="sourceLineNo">080</span>      // create KeyValue with tags<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return KeyValueUtil.iscreate(in, true);<a name="line.81"></a>
+<span class="sourceLineNo">081</span>      return KeyValueUtil.createKeyValueFromInputStream(in, true);<a name="line.81"></a>
 <span class="sourceLineNo">082</span>    }<a name="line.82"></a>
 <span class="sourceLineNo">083</span>  }<a name="line.83"></a>
 <span class="sourceLineNo">084</span><a name="line.84"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodecWithTags.KeyValueDecoder.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodecWithTags.KeyValueDecoder.html b/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodecWithTags.KeyValueDecoder.html
index 80ec837..54e9bbd 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodecWithTags.KeyValueDecoder.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodecWithTags.KeyValueDecoder.html
@@ -86,7 +86,7 @@
 <span class="sourceLineNo">078</span>    @Override<a name="line.78"></a>
 <span class="sourceLineNo">079</span>    protected Cell parseCell() throws IOException {<a name="line.79"></a>
 <span class="sourceLineNo">080</span>      // create KeyValue with tags<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return KeyValueUtil.iscreate(in, true);<a name="line.81"></a>
+<span class="sourceLineNo">081</span>      return KeyValueUtil.createKeyValueFromInputStream(in, true);<a name="line.81"></a>
 <span class="sourceLineNo">082</span>    }<a name="line.82"></a>
 <span class="sourceLineNo">083</span>  }<a name="line.83"></a>
 <span class="sourceLineNo">084</span><a name="line.84"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodecWithTags.KeyValueEncoder.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodecWithTags.KeyValueEncoder.html b/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodecWithTags.KeyValueEncoder.html
index 80ec837..54e9bbd 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodecWithTags.KeyValueEncoder.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodecWithTags.KeyValueEncoder.html
@@ -86,7 +86,7 @@
 <span class="sourceLineNo">078</span>    @Override<a name="line.78"></a>
 <span class="sourceLineNo">079</span>    protected Cell parseCell() throws IOException {<a name="line.79"></a>
 <span class="sourceLineNo">080</span>      // create KeyValue with tags<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return KeyValueUtil.iscreate(in, true);<a name="line.81"></a>
+<span class="sourceLineNo">081</span>      return KeyValueUtil.createKeyValueFromInputStream(in, true);<a name="line.81"></a>
 <span class="sourceLineNo">082</span>    }<a name="line.82"></a>
 <span class="sourceLineNo">083</span>  }<a name="line.83"></a>
 <span class="sourceLineNo">084</span><a name="line.84"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodecWithTags.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodecWithTags.html b/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodecWithTags.html
index 80ec837..54e9bbd 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodecWithTags.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/codec/KeyValueCodecWithTags.html
@@ -86,7 +86,7 @@
 <span class="sourceLineNo">078</span>    @Override<a name="line.78"></a>
 <span class="sourceLineNo">079</span>    protected Cell parseCell() throws IOException {<a name="line.79"></a>
 <span class="sourceLineNo">080</span>      // create KeyValue with tags<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      return KeyValueUtil.iscreate(in, true);<a name="line.81"></a>
+<span class="sourceLineNo">081</span>      return KeyValueUtil.createKeyValueFromInputStream(in, true);<a name="line.81"></a>
 <span class="sourceLineNo">082</span>    }<a name="line.82"></a>
 <span class="sourceLineNo">083</span>  }<a name="line.83"></a>
 <span class="sourceLineNo">084</span><a name="line.84"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/src-html/org/apache/hadoop/hbase/ipc/NettyRpcServer.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/NettyRpcServer.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/NettyRpcServer.html
index ef8b46f..052f7a7 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/NettyRpcServer.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/NettyRpcServer.html
@@ -177,27 +177,28 @@
 <span class="sourceLineNo">169</span><a name="line.169"></a>
 <span class="sourceLineNo">170</span>  @Override<a name="line.170"></a>
 <span class="sourceLineNo">171</span>  public int getNumOpenConnections() {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    // allChannels also contains the server channel, so exclude that from the count.<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    return allChannels.size() - 1;<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>  public Pair&lt;Message, CellScanner&gt; call(BlockingService service,<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      MethodDescriptor md, Message param, CellScanner cellScanner,<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      long receiveTime, MonitoredRPCHandler status) throws IOException {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    return call(service, md, param, cellScanner, receiveTime, status,<a name="line.180"></a>
-<span class="sourceLineNo">181</span>        System.currentTimeMillis(), 0);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>  }<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>  @Override<a name="line.184"></a>
-<span class="sourceLineNo">185</span>  public Pair&lt;Message, CellScanner&gt; call(BlockingService service, MethodDescriptor md,<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      Message param, CellScanner cellScanner, long receiveTime, MonitoredRPCHandler status,<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      long startTime, int timeout) throws IOException {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    NettyServerCall fakeCall = new NettyServerCall(-1, service, md, null, param, cellScanner, null,<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        -1, null, receiveTime, timeout, reservoir, cellBlockBuilder, null);<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    return call(fakeCall, status);<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">172</span>    int channelsCount = allChannels.size();<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    // allChannels also contains the server channel, so exclude that from the count.<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    return channelsCount &gt; 0 ? channelsCount - 1 : channelsCount;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>  }<a name="line.175"></a>
+<span class="sourceLineNo">176</span><a name="line.176"></a>
+<span class="sourceLineNo">177</span>  @Override<a name="line.177"></a>
+<span class="sourceLineNo">178</span>  public Pair&lt;Message, CellScanner&gt; call(BlockingService service,<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      MethodDescriptor md, Message param, CellScanner cellScanner,<a name="line.179"></a>
+<span class="sourceLineNo">180</span>      long receiveTime, MonitoredRPCHandler status) throws IOException {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    return call(service, md, param, cellScanner, receiveTime, status,<a name="line.181"></a>
+<span class="sourceLineNo">182</span>        System.currentTimeMillis(), 0);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
+<span class="sourceLineNo">184</span><a name="line.184"></a>
+<span class="sourceLineNo">185</span>  @Override<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  public Pair&lt;Message, CellScanner&gt; call(BlockingService service, MethodDescriptor md,<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      Message param, CellScanner cellScanner, long receiveTime, MonitoredRPCHandler status,<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      long startTime, int timeout) throws IOException {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    NettyServerCall fakeCall = new NettyServerCall(-1, service, md, null, param, cellScanner, null,<a name="line.189"></a>
+<span class="sourceLineNo">190</span>        -1, null, receiveTime, timeout, reservoir, cellBlockBuilder, null);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    return call(fakeCall, status);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
+<span class="sourceLineNo">193</span>}<a name="line.193"></a>
 
 
 


[17/29] hbase-site git commit: Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.Type.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.Type.html b/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.Type.html
index 6428b67..65c197f 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.Type.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.Type.html
@@ -260,2307 +260,2317 @@
 <span class="sourceLineNo">252</span>    }<a name="line.252"></a>
 <span class="sourceLineNo">253</span><a name="line.253"></a>
 <span class="sourceLineNo">254</span>    /**<a name="line.254"></a>
-<span class="sourceLineNo">255</span>     * Cannot rely on enum ordinals . They change if item is removed or moved.<a name="line.255"></a>
-<span class="sourceLineNo">256</span>     * Do our own codes.<a name="line.256"></a>
-<span class="sourceLineNo">257</span>     * @param b<a name="line.257"></a>
-<span class="sourceLineNo">258</span>     * @return Type associated with passed code.<a name="line.258"></a>
-<span class="sourceLineNo">259</span>     */<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    public static Type codeToType(final byte b) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      Type t = codeArray[b &amp; 0xff];<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      if (t != null) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        return t;<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      }<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      throw new RuntimeException("Unknown code " + b);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span>  }<a name="line.267"></a>
-<span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>  /**<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   * Lowest possible key.<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   * Makes a Key with highest possible Timestamp, empty row and column.  No<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   * key can be equal or lower than this one in memstore or in store file.<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   */<a name="line.273"></a>
-<span class="sourceLineNo">274</span>  public static final KeyValue LOWESTKEY =<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    new KeyValue(HConstants.EMPTY_BYTE_ARRAY, HConstants.LATEST_TIMESTAMP);<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>  ////<a name="line.277"></a>
-<span class="sourceLineNo">278</span>  // KeyValue core instance fields.<a name="line.278"></a>
-<span class="sourceLineNo">279</span>  protected byte [] bytes = null;  // an immutable byte array that contains the KV<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  protected int offset = 0;  // offset into bytes buffer KV starts at<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  protected int length = 0;  // length of the KV starting from offset.<a name="line.281"></a>
-<span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  /** Here be dragons **/<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>  /**<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   * used to achieve atomic operations in the memstore.<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   */<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  @Override<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  public long getSequenceId() {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    return seqId;<a name="line.290"></a>
-<span class="sourceLineNo">291</span>  }<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>  @Override<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  public void setSequenceId(long seqId) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    this.seqId = seqId;<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  }<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>  // multi-version concurrency control version.  default value is 0, aka do not care.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>  private long seqId = 0;<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>  /** Dragon time over, return to normal business */<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>  /** Writable Constructor -- DO NOT USE */<a name="line.304"></a>
-<span class="sourceLineNo">305</span>  public KeyValue() {}<a name="line.305"></a>
+<span class="sourceLineNo">255</span>     * True to indicate that the byte b is a valid type.<a name="line.255"></a>
+<span class="sourceLineNo">256</span>     * @param b byte to check<a name="line.256"></a>
+<span class="sourceLineNo">257</span>     * @return true or false<a name="line.257"></a>
+<span class="sourceLineNo">258</span>     */<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    static boolean isValidType(byte b) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      return codeArray[b &amp; 0xff] != null;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    }<a name="line.261"></a>
+<span class="sourceLineNo">262</span><a name="line.262"></a>
+<span class="sourceLineNo">263</span>    /**<a name="line.263"></a>
+<span class="sourceLineNo">264</span>     * Cannot rely on enum ordinals . They change if item is removed or moved.<a name="line.264"></a>
+<span class="sourceLineNo">265</span>     * Do our own codes.<a name="line.265"></a>
+<span class="sourceLineNo">266</span>     * @param b<a name="line.266"></a>
+<span class="sourceLineNo">267</span>     * @return Type associated with passed code.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>     */<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    public static Type codeToType(final byte b) {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      Type t = codeArray[b &amp; 0xff];<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      if (t != null) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        return t;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      throw new RuntimeException("Unknown code " + b);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  }<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>  /**<a name="line.278"></a>
+<span class="sourceLineNo">279</span>   * Lowest possible key.<a name="line.279"></a>
+<span class="sourceLineNo">280</span>   * Makes a Key with highest possible Timestamp, empty row and column.  No<a name="line.280"></a>
+<span class="sourceLineNo">281</span>   * key can be equal or lower than this one in memstore or in store file.<a name="line.281"></a>
+<span class="sourceLineNo">282</span>   */<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  public static final KeyValue LOWESTKEY =<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    new KeyValue(HConstants.EMPTY_BYTE_ARRAY, HConstants.LATEST_TIMESTAMP);<a name="line.284"></a>
+<span class="sourceLineNo">285</span><a name="line.285"></a>
+<span class="sourceLineNo">286</span>  ////<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  // KeyValue core instance fields.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  protected byte [] bytes = null;  // an immutable byte array that contains the KV<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  protected int offset = 0;  // offset into bytes buffer KV starts at<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  protected int length = 0;  // length of the KV starting from offset.<a name="line.290"></a>
+<span class="sourceLineNo">291</span><a name="line.291"></a>
+<span class="sourceLineNo">292</span>  /** Here be dragons **/<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>  /**<a name="line.294"></a>
+<span class="sourceLineNo">295</span>   * used to achieve atomic operations in the memstore.<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   */<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  @Override<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  public long getSequenceId() {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    return seqId;<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>
+<span class="sourceLineNo">303</span>  public void setSequenceId(long seqId) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    this.seqId = seqId;<a name="line.304"></a>
+<span class="sourceLineNo">305</span>  }<a name="line.305"></a>
 <span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>  /**<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * Creates a KeyValue from the start of the specified byte array.<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * Presumes &lt;code&gt;bytes&lt;/code&gt; content is formatted as a KeyValue blob.<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * @param bytes byte array<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   */<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  public KeyValue(final byte [] bytes) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    this(bytes, 0);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
+<span class="sourceLineNo">307</span>  // multi-version concurrency control version.  default value is 0, aka do not care.<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  private long seqId = 0;<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>  /** Dragon time over, return to normal business */<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>  /** Writable Constructor -- DO NOT USE */<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  public KeyValue() {}<a name="line.314"></a>
 <span class="sourceLineNo">315</span><a name="line.315"></a>
 <span class="sourceLineNo">316</span>  /**<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * Creates a KeyValue from the specified byte array and offset.<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * Presumes &lt;code&gt;bytes&lt;/code&gt; content starting at &lt;code&gt;offset&lt;/code&gt; is<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * formatted as a KeyValue blob.<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   * @param bytes byte array<a name="line.320"></a>
-<span class="sourceLineNo">321</span>   * @param offset offset to start of KeyValue<a name="line.321"></a>
-<span class="sourceLineNo">322</span>   */<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  public KeyValue(final byte [] bytes, final int offset) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    this(bytes, offset, getLength(bytes, offset));<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  }<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>  /**<a name="line.327"></a>
-<span class="sourceLineNo">328</span>   * Creates a KeyValue from the specified byte array, starting at offset, and<a name="line.328"></a>
-<span class="sourceLineNo">329</span>   * for length &lt;code&gt;length&lt;/code&gt;.<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   * @param bytes byte array<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   * @param offset offset to start of the KeyValue<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   * @param length length of the KeyValue<a name="line.332"></a>
-<span class="sourceLineNo">333</span>   */<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  public KeyValue(final byte [] bytes, final int offset, final int length) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    this.bytes = bytes;<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    this.offset = offset;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    this.length = length;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  }<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>  /**<a name="line.340"></a>
-<span class="sourceLineNo">341</span>   * Creates a KeyValue from the specified byte array, starting at offset, and<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   * for length &lt;code&gt;length&lt;/code&gt;.<a name="line.342"></a>
-<span class="sourceLineNo">343</span>   *<a name="line.343"></a>
-<span class="sourceLineNo">344</span>   * @param bytes  byte array<a name="line.344"></a>
-<span class="sourceLineNo">345</span>   * @param offset offset to start of the KeyValue<a name="line.345"></a>
-<span class="sourceLineNo">346</span>   * @param length length of the KeyValue<a name="line.346"></a>
-<span class="sourceLineNo">347</span>   * @param ts<a name="line.347"></a>
-<span class="sourceLineNo">348</span>   */<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  public KeyValue(final byte[] bytes, final int offset, final int length, long ts) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    this(bytes, offset, length, null, 0, 0, null, 0, 0, ts, Type.Maximum, null, 0, 0, null);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  /** Constructors that build a new backing byte array from fields */<a name="line.353"></a>
-<span class="sourceLineNo">354</span><a name="line.354"></a>
-<span class="sourceLineNo">355</span>  /**<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   * Constructs KeyValue structure filled with null value.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   * Sets type to {@link KeyValue.Type#Maximum}<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   * @param row - row key (arbitrary byte array)<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   * @param timestamp<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   */<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  public KeyValue(final byte [] row, final long timestamp) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    this(row, null, null, timestamp, Type.Maximum, null);<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  }<a name="line.363"></a>
+<span class="sourceLineNo">317</span>   * Creates a KeyValue from the start of the specified byte array.<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * Presumes &lt;code&gt;bytes&lt;/code&gt; content is formatted as a KeyValue blob.<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * @param bytes byte array<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   */<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  public KeyValue(final byte [] bytes) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    this(bytes, 0);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  }<a name="line.323"></a>
+<span class="sourceLineNo">324</span><a name="line.324"></a>
+<span class="sourceLineNo">325</span>  /**<a name="line.325"></a>
+<span class="sourceLineNo">326</span>   * Creates a KeyValue from the specified byte array and offset.<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   * Presumes &lt;code&gt;bytes&lt;/code&gt; content starting at &lt;code&gt;offset&lt;/code&gt; is<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   * formatted as a KeyValue blob.<a name="line.328"></a>
+<span class="sourceLineNo">329</span>   * @param bytes byte array<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   * @param offset offset to start of KeyValue<a name="line.330"></a>
+<span class="sourceLineNo">331</span>   */<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  public KeyValue(final byte [] bytes, final int offset) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    this(bytes, offset, getLength(bytes, offset));<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  }<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>  /**<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   * Creates a KeyValue from the specified byte array, starting at offset, and<a name="line.337"></a>
+<span class="sourceLineNo">338</span>   * for length &lt;code&gt;length&lt;/code&gt;.<a name="line.338"></a>
+<span class="sourceLineNo">339</span>   * @param bytes byte array<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   * @param offset offset to start of the KeyValue<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * @param length length of the KeyValue<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   */<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  public KeyValue(final byte[] bytes, final int offset, final int length) {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    KeyValueUtil.checkKeyValueBytes(bytes, offset, length, true);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    this.bytes = bytes;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    this.offset = offset;<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    this.length = length;<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>  /**<a name="line.350"></a>
+<span class="sourceLineNo">351</span>   * Creates a KeyValue from the specified byte array, starting at offset, and<a name="line.351"></a>
+<span class="sourceLineNo">352</span>   * for length &lt;code&gt;length&lt;/code&gt;.<a name="line.352"></a>
+<span class="sourceLineNo">353</span>   *<a name="line.353"></a>
+<span class="sourceLineNo">354</span>   * @param bytes  byte array<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * @param offset offset to start of the KeyValue<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * @param length length of the KeyValue<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * @param ts<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   */<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  public KeyValue(final byte[] bytes, final int offset, final int length, long ts) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    this(bytes, offset, length, null, 0, 0, null, 0, 0, ts, Type.Maximum, null, 0, 0, null);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  }<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>  /** Constructors that build a new backing byte array from fields */<a name="line.363"></a>
 <span class="sourceLineNo">364</span><a name="line.364"></a>
 <span class="sourceLineNo">365</span>  /**<a name="line.365"></a>
 <span class="sourceLineNo">366</span>   * Constructs KeyValue structure filled with null value.<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   * @param row - row key (arbitrary byte array)<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   * @param timestamp<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   */<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public KeyValue(final byte [] row, final long timestamp, Type type) {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    this(row, null, null, timestamp, type, null);<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  /**<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   * Constructs KeyValue structure filled with null value.<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   * Sets type to {@link KeyValue.Type#Maximum}<a name="line.376"></a>
+<span class="sourceLineNo">367</span>   * Sets type to {@link KeyValue.Type#Maximum}<a name="line.367"></a>
+<span class="sourceLineNo">368</span>   * @param row - row key (arbitrary byte array)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>   * @param timestamp<a name="line.369"></a>
+<span class="sourceLineNo">370</span>   */<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  public KeyValue(final byte [] row, final long timestamp) {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    this(row, null, null, timestamp, Type.Maximum, null);<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>   * Constructs KeyValue structure filled with null value.<a name="line.376"></a>
 <span class="sourceLineNo">377</span>   * @param row - row key (arbitrary byte array)<a name="line.377"></a>
-<span class="sourceLineNo">378</span>   * @param family family name<a name="line.378"></a>
-<span class="sourceLineNo">379</span>   * @param qualifier column qualifier<a name="line.379"></a>
-<span class="sourceLineNo">380</span>   */<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  public KeyValue(final byte [] row, final byte [] family,<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      final byte [] qualifier) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    this(row, family, qualifier, HConstants.LATEST_TIMESTAMP, Type.Maximum);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  }<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span>  /**<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   * Constructs KeyValue structure as a put filled with specified values and<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * LATEST_TIMESTAMP.<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * @param row - row key (arbitrary byte array)<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   * @param family family name<a name="line.390"></a>
-<span class="sourceLineNo">391</span>   * @param qualifier column qualifier<a name="line.391"></a>
-<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  public KeyValue(final byte [] row, final byte [] family,<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      final byte [] qualifier, final byte [] value) {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    this(row, family, qualifier, HConstants.LATEST_TIMESTAMP, Type.Put, value);<a name="line.395"></a>
-<span class="sourceLineNo">396</span>  }<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>  /**<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * Constructs KeyValue structure filled with specified values.<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * @param row row key<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * @param family family name<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @param qualifier column qualifier<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * @param timestamp version timestamp<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * @param type key type<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   * @throws IllegalArgumentException<a name="line.405"></a>
-<span class="sourceLineNo">406</span>   */<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      final byte[] qualifier, final long timestamp, Type type) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    this(row, family, qualifier, timestamp, type, null);<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>   * Constructs KeyValue structure filled with specified values.<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * @param row row key<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * @param family family name<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * @param qualifier column qualifier<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @param timestamp version timestamp<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @param value column value<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * @throws IllegalArgumentException<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   */<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      final byte[] qualifier, final long timestamp, final byte[] value) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    this(row, family, qualifier, timestamp, Type.Put, value);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>  }<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span>  /**<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * Constructs KeyValue structure filled with specified values.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * @param row row key<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * @param family family name<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   * @param qualifier column qualifier<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   * @param timestamp version timestamp<a name="line.431"></a>
-<span class="sourceLineNo">432</span>   * @param value column value<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   * @param tags tags<a name="line.433"></a>
-<span class="sourceLineNo">434</span>   * @throws IllegalArgumentException<a name="line.434"></a>
-<span class="sourceLineNo">435</span>   */<a name="line.435"></a>
-<span class="sourceLineNo">436</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      final byte[] qualifier, final long timestamp, final byte[] value,<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      final Tag[] tags) {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    this(row, family, qualifier, timestamp, value, tags != null ? Arrays.asList(tags) : null);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>  }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * Constructs KeyValue structure filled with specified values.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * @param row row key<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   * @param family family name<a name="line.445"></a>
-<span class="sourceLineNo">446</span>   * @param qualifier column qualifier<a name="line.446"></a>
-<span class="sourceLineNo">447</span>   * @param timestamp version timestamp<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * @param value column value<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   * @param tags tags non-empty list of tags or null<a name="line.449"></a>
-<span class="sourceLineNo">450</span>   * @throws IllegalArgumentException<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   */<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      final byte[] qualifier, final long timestamp, final byte[] value,<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      final List&lt;Tag&gt; tags) {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.455"></a>
-<span class="sourceLineNo">456</span>      family, 0, family==null ? 0 : family.length,<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      timestamp, Type.Put,<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      value, 0, value==null ? 0 : value.length, tags);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>  }<a name="line.460"></a>
-<span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>  /**<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * Constructs KeyValue structure filled with specified values.<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * @param row row key<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   * @param family family name<a name="line.465"></a>
-<span class="sourceLineNo">466</span>   * @param qualifier column qualifier<a name="line.466"></a>
-<span class="sourceLineNo">467</span>   * @param timestamp version timestamp<a name="line.467"></a>
-<span class="sourceLineNo">468</span>   * @param type key type<a name="line.468"></a>
-<span class="sourceLineNo">469</span>   * @param value column value<a name="line.469"></a>
-<span class="sourceLineNo">470</span>   * @throws IllegalArgumentException<a name="line.470"></a>
-<span class="sourceLineNo">471</span>   */<a name="line.471"></a>
-<span class="sourceLineNo">472</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      final byte[] value) {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    this(row, 0, len(row),   family, 0, len(family),   qualifier, 0, len(qualifier),<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        timestamp, type,   value, 0, len(value));<a name="line.476"></a>
-<span class="sourceLineNo">477</span>  }<a name="line.477"></a>
-<span class="sourceLineNo">478</span><a name="line.478"></a>
-<span class="sourceLineNo">479</span>  /**<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * Constructs KeyValue structure filled with specified values.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * &lt;p&gt;<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * Column is split into two fields, family and qualifier.<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * @param row row key<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   * @param family family name<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   * @param qualifier column qualifier<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * @param timestamp version timestamp<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * @param type key type<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * @param value column value<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   * @throws IllegalArgumentException<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   */<a name="line.490"></a>
-<span class="sourceLineNo">491</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      final byte[] value, final List&lt;Tag&gt; tags) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    this(row, family, qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.494"></a>
-<span class="sourceLineNo">495</span>        timestamp, type, value, 0, value==null ? 0 : value.length, tags);<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>  /**<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   * Constructs KeyValue structure filled with specified values.<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   * @param row row key<a name="line.500"></a>
-<span class="sourceLineNo">501</span>   * @param family family name<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   * @param qualifier column qualifier<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   * @param timestamp version timestamp<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   * @param type key type<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @param value column value<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * @throws IllegalArgumentException<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   */<a name="line.507"></a>
-<span class="sourceLineNo">508</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      final byte[] value, final byte[] tags) {<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    this(row, family, qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.511"></a>
-<span class="sourceLineNo">512</span>        timestamp, type, value, 0, value==null ? 0 : value.length, tags);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>  }<a name="line.513"></a>
-<span class="sourceLineNo">514</span><a name="line.514"></a>
-<span class="sourceLineNo">515</span>  /**<a name="line.515"></a>
-<span class="sourceLineNo">516</span>   * Constructs KeyValue structure filled with specified values.<a name="line.516"></a>
-<span class="sourceLineNo">517</span>   * @param row row key<a name="line.517"></a>
-<span class="sourceLineNo">518</span>   * @param family family name<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * @param qualifier column qualifier<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   * @param qoffset qualifier offset<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * @param qlength qualifier length<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   * @param timestamp version timestamp<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   * @param type key type<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   * @param value column value<a name="line.524"></a>
-<span class="sourceLineNo">525</span>   * @param voffset value offset<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * @param vlength value length<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * @throws IllegalArgumentException<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   */<a name="line.528"></a>
-<span class="sourceLineNo">529</span>  public KeyValue(byte [] row, byte [] family,<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      byte [] qualifier, int qoffset, int qlength, long timestamp, Type type,<a name="line.530"></a>
-<span class="sourceLineNo">531</span>      byte [] value, int voffset, int vlength, List&lt;Tag&gt; tags) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.532"></a>
-<span class="sourceLineNo">533</span>        family, 0, family==null ? 0 : family.length,<a name="line.533"></a>
-<span class="sourceLineNo">534</span>        qualifier, qoffset, qlength, timestamp, type,<a name="line.534"></a>
-<span class="sourceLineNo">535</span>        value, voffset, vlength, tags);<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  }<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>  /**<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * @param row<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   * @param family<a name="line.540"></a>
-<span class="sourceLineNo">541</span>   * @param qualifier<a name="line.541"></a>
-<span class="sourceLineNo">542</span>   * @param qoffset<a name="line.542"></a>
-<span class="sourceLineNo">543</span>   * @param qlength<a name="line.543"></a>
-<span class="sourceLineNo">544</span>   * @param timestamp<a name="line.544"></a>
-<span class="sourceLineNo">545</span>   * @param type<a name="line.545"></a>
-<span class="sourceLineNo">546</span>   * @param value<a name="line.546"></a>
-<span class="sourceLineNo">547</span>   * @param voffset<a name="line.547"></a>
-<span class="sourceLineNo">548</span>   * @param vlength<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * @param tags<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   */<a name="line.550"></a>
-<span class="sourceLineNo">551</span>  public KeyValue(byte [] row, byte [] family,<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      byte [] qualifier, int qoffset, int qlength, long timestamp, Type type,<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      byte [] value, int voffset, int vlength, byte[] tags) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.554"></a>
-<span class="sourceLineNo">555</span>        family, 0, family==null ? 0 : family.length,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>        qualifier, qoffset, qlength, timestamp, type,<a name="line.556"></a>
-<span class="sourceLineNo">557</span>        value, voffset, vlength, tags, 0, tags==null ? 0 : tags.length);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>  }<a name="line.558"></a>
-<span class="sourceLineNo">559</span><a name="line.559"></a>
-<span class="sourceLineNo">560</span>  /**<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   * Constructs KeyValue structure filled with specified values.<a name="line.561"></a>
-<span class="sourceLineNo">562</span>   * &lt;p&gt;<a name="line.562"></a>
-<span class="sourceLineNo">563</span>   * Column is split into two fields, family and qualifier.<a name="line.563"></a>
-<span class="sourceLineNo">564</span>   * @param row row key<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   * @throws IllegalArgumentException<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   */<a name="line.566"></a>
-<span class="sourceLineNo">567</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      final byte [] family, final int foffset, final int flength,<a name="line.568"></a>
-<span class="sourceLineNo">569</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      final long timestamp, final Type type,<a name="line.570"></a>
-<span class="sourceLineNo">571</span>      final byte [] value, final int voffset, final int vlength) {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    this(row, roffset, rlength, family, foffset, flength, qualifier, qoffset,<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      qlength, timestamp, type, value, voffset, vlength, null);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>  }<a name="line.574"></a>
-<span class="sourceLineNo">575</span><a name="line.575"></a>
-<span class="sourceLineNo">576</span>  /**<a name="line.576"></a>
-<span class="sourceLineNo">577</span>   * Constructs KeyValue structure filled with specified values. Uses the provided buffer as the<a name="line.577"></a>
-<span class="sourceLineNo">578</span>   * data buffer.<a name="line.578"></a>
-<span class="sourceLineNo">579</span>   * &lt;p&gt;<a name="line.579"></a>
-<span class="sourceLineNo">580</span>   * Column is split into two fields, family and qualifier.<a name="line.580"></a>
-<span class="sourceLineNo">581</span>   *<a name="line.581"></a>
-<span class="sourceLineNo">582</span>   * @param buffer the bytes buffer to use<a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * @param boffset buffer offset<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   * @param row row key<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   * @param roffset row offset<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   * @param rlength row length<a name="line.586"></a>
-<span class="sourceLineNo">587</span>   * @param family family name<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   * @param foffset family offset<a name="line.588"></a>
-<span class="sourceLineNo">589</span>   * @param flength family length<a name="line.589"></a>
-<span class="sourceLineNo">590</span>   * @param qualifier column qualifier<a name="line.590"></a>
-<span class="sourceLineNo">591</span>   * @param qoffset qualifier offset<a name="line.591"></a>
-<span class="sourceLineNo">592</span>   * @param qlength qualifier length<a name="line.592"></a>
-<span class="sourceLineNo">593</span>   * @param timestamp version timestamp<a name="line.593"></a>
-<span class="sourceLineNo">594</span>   * @param type key type<a name="line.594"></a>
-<span class="sourceLineNo">595</span>   * @param value column value<a name="line.595"></a>
-<span class="sourceLineNo">596</span>   * @param voffset value offset<a name="line.596"></a>
-<span class="sourceLineNo">597</span>   * @param vlength value length<a name="line.597"></a>
-<span class="sourceLineNo">598</span>   * @param tags non-empty list of tags or null<a name="line.598"></a>
-<span class="sourceLineNo">599</span>   * @throws IllegalArgumentException an illegal value was passed or there is insufficient space<a name="line.599"></a>
-<span class="sourceLineNo">600</span>   * remaining in the buffer<a name="line.600"></a>
-<span class="sourceLineNo">601</span>   */<a name="line.601"></a>
-<span class="sourceLineNo">602</span>  public KeyValue(byte [] buffer, final int boffset,<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      final byte [] row, final int roffset, final int rlength,<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      final byte [] family, final int foffset, final int flength,<a name="line.604"></a>
-<span class="sourceLineNo">605</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.605"></a>
-<span class="sourceLineNo">606</span>      final long timestamp, final Type type,<a name="line.606"></a>
-<span class="sourceLineNo">607</span>      final byte [] value, final int voffset, final int vlength,<a name="line.607"></a>
-<span class="sourceLineNo">608</span>      final Tag[] tags) {<a name="line.608"></a>
-<span class="sourceLineNo">609</span>     this.bytes  = buffer;<a name="line.609"></a>
-<span class="sourceLineNo">610</span>     this.length = writeByteArray(buffer, boffset,<a name="line.610"></a>
-<span class="sourceLineNo">611</span>         row, roffset, rlength,<a name="line.611"></a>
-<span class="sourceLineNo">612</span>         family, foffset, flength, qualifier, qoffset, qlength,<a name="line.612"></a>
-<span class="sourceLineNo">613</span>        timestamp, type, value, voffset, vlength, tags);<a name="line.613"></a>
-<span class="sourceLineNo">614</span>     this.offset = boffset;<a name="line.614"></a>
-<span class="sourceLineNo">615</span>   }<a name="line.615"></a>
-<span class="sourceLineNo">616</span><a name="line.616"></a>
-<span class="sourceLineNo">617</span>  /**<a name="line.617"></a>
-<span class="sourceLineNo">618</span>   * Constructs KeyValue structure filled with specified values.<a name="line.618"></a>
-<span class="sourceLineNo">619</span>   * &lt;p&gt;<a name="line.619"></a>
-<span class="sourceLineNo">620</span>   * Column is split into two fields, family and qualifier.<a name="line.620"></a>
-<span class="sourceLineNo">621</span>   * @param row row key<a name="line.621"></a>
-<span class="sourceLineNo">622</span>   * @param roffset row offset<a name="line.622"></a>
-<span class="sourceLineNo">623</span>   * @param rlength row length<a name="line.623"></a>
-<span class="sourceLineNo">624</span>   * @param family family name<a name="line.624"></a>
-<span class="sourceLineNo">625</span>   * @param foffset family offset<a name="line.625"></a>
-<span class="sourceLineNo">626</span>   * @param flength family length<a name="line.626"></a>
-<span class="sourceLineNo">627</span>   * @param qualifier column qualifier<a name="line.627"></a>
-<span class="sourceLineNo">628</span>   * @param qoffset qualifier offset<a name="line.628"></a>
-<span class="sourceLineNo">629</span>   * @param qlength qualifier length<a name="line.629"></a>
-<span class="sourceLineNo">630</span>   * @param timestamp version timestamp<a name="line.630"></a>
-<span class="sourceLineNo">631</span>   * @param type key type<a name="line.631"></a>
-<span class="sourceLineNo">632</span>   * @param value column value<a name="line.632"></a>
-<span class="sourceLineNo">633</span>   * @param voffset value offset<a name="line.633"></a>
-<span class="sourceLineNo">634</span>   * @param vlength value length<a name="line.634"></a>
-<span class="sourceLineNo">635</span>   * @param tags tags<a name="line.635"></a>
-<span class="sourceLineNo">636</span>   * @throws IllegalArgumentException<a name="line.636"></a>
-<span class="sourceLineNo">637</span>   */<a name="line.637"></a>
-<span class="sourceLineNo">638</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      final byte [] family, final int foffset, final int flength,<a name="line.639"></a>
-<span class="sourceLineNo">640</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      final long timestamp, final Type type,<a name="line.641"></a>
-<span class="sourceLineNo">642</span>      final byte [] value, final int voffset, final int vlength,<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      final List&lt;Tag&gt; tags) {<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    this.bytes = createByteArray(row, roffset, rlength,<a name="line.644"></a>
-<span class="sourceLineNo">645</span>        family, foffset, flength, qualifier, qoffset, qlength,<a name="line.645"></a>
-<span class="sourceLineNo">646</span>        timestamp, type, value, voffset, vlength, tags);<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    this.length = bytes.length;<a name="line.647"></a>
-<span class="sourceLineNo">648</span>    this.offset = 0;<a name="line.648"></a>
-<span class="sourceLineNo">649</span>  }<a name="line.649"></a>
-<span class="sourceLineNo">650</span><a name="line.650"></a>
-<span class="sourceLineNo">651</span>  /**<a name="line.651"></a>
-<span class="sourceLineNo">652</span>   * @param row<a name="line.652"></a>
-<span class="sourceLineNo">653</span>   * @param roffset<a name="line.653"></a>
-<span class="sourceLineNo">654</span>   * @param rlength<a name="line.654"></a>
-<span class="sourceLineNo">655</span>   * @param family<a name="line.655"></a>
-<span class="sourceLineNo">656</span>   * @param foffset<a name="line.656"></a>
-<span class="sourceLineNo">657</span>   * @param flength<a name="line.657"></a>
-<span class="sourceLineNo">658</span>   * @param qualifier<a name="line.658"></a>
-<span class="sourceLineNo">659</span>   * @param qoffset<a name="line.659"></a>
-<span class="sourceLineNo">660</span>   * @param qlength<a name="line.660"></a>
-<span class="sourceLineNo">661</span>   * @param timestamp<a name="line.661"></a>
-<span class="sourceLineNo">662</span>   * @param type<a name="line.662"></a>
-<span class="sourceLineNo">663</span>   * @param value<a name="line.663"></a>
-<span class="sourceLineNo">664</span>   * @param voffset<a name="line.664"></a>
-<span class="sourceLineNo">665</span>   * @param vlength<a name="line.665"></a>
-<span class="sourceLineNo">666</span>   * @param tags<a name="line.666"></a>
-<span class="sourceLineNo">667</span>   */<a name="line.667"></a>
-<span class="sourceLineNo">668</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.668"></a>
-<span class="sourceLineNo">669</span>      final byte [] family, final int foffset, final int flength,<a name="line.669"></a>
-<span class="sourceLineNo">670</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.670"></a>
-<span class="sourceLineNo">671</span>      final long timestamp, final Type type,<a name="line.671"></a>
-<span class="sourceLineNo">672</span>      final byte [] value, final int voffset, final int vlength,<a name="line.672"></a>
-<span class="sourceLineNo">673</span>      final byte[] tags, final int tagsOffset, final int tagsLength) {<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    this.bytes = createByteArray(row, roffset, rlength,<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        family, foffset, flength, qualifier, qoffset, qlength,<a name="line.675"></a>
-<span class="sourceLineNo">676</span>        timestamp, type, value, voffset, vlength, tags, tagsOffset, tagsLength);<a name="line.676"></a>
-<span class="sourceLineNo">677</span>    this.length = bytes.length;<a name="line.677"></a>
-<span class="sourceLineNo">678</span>    this.offset = 0;<a name="line.678"></a>
-<span class="sourceLineNo">679</span>  }<a name="line.679"></a>
-<span class="sourceLineNo">680</span><a name="line.680"></a>
-<span class="sourceLineNo">681</span>  /**<a name="line.681"></a>
-<span class="sourceLineNo">682</span>   * Constructs an empty KeyValue structure, with specified sizes.<a name="line.682"></a>
-<span class="sourceLineNo">683</span>   * This can be used to partially fill up KeyValues.<a name="line.683"></a>
-<span class="sourceLineNo">684</span>   * &lt;p&gt;<a name="line.684"></a>
-<span class="sourceLineNo">685</span>   * Column is split into two fields, family and qualifier.<a name="line.685"></a>
-<span class="sourceLineNo">686</span>   * @param rlength row length<a name="line.686"></a>
-<span class="sourceLineNo">687</span>   * @param flength family length<a name="line.687"></a>
-<span class="sourceLineNo">688</span>   * @param qlength qualifier length<a name="line.688"></a>
-<span class="sourceLineNo">689</span>   * @param timestamp version timestamp<a name="line.689"></a>
-<span class="sourceLineNo">690</span>   * @param type key type<a name="line.690"></a>
-<span class="sourceLineNo">691</span>   * @param vlength value length<a name="line.691"></a>
-<span class="sourceLineNo">692</span>   * @throws IllegalArgumentException<a name="line.692"></a>
-<span class="sourceLineNo">693</span>   */<a name="line.693"></a>
-<span class="sourceLineNo">694</span>  public KeyValue(final int rlength,<a name="line.694"></a>
-<span class="sourceLineNo">695</span>      final int flength,<a name="line.695"></a>
-<span class="sourceLineNo">696</span>      final int qlength,<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      final long timestamp, final Type type,<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      final int vlength) {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>    this(rlength, flength, qlength, timestamp, type, vlength, 0);<a name="line.699"></a>
-<span class="sourceLineNo">700</span>  }<a name="line.700"></a>
-<span class="sourceLineNo">701</span><a name="line.701"></a>
-<span class="sourceLineNo">702</span>  /**<a name="line.702"></a>
-<span class="sourceLineNo">703</span>   * Constructs an empty KeyValue structure, with specified sizes.<a name="line.703"></a>
-<span class="sourceLineNo">704</span>   * This can be used to partially fill up KeyValues.<a name="line.704"></a>
-<span class="sourceLineNo">705</span>   * &lt;p&gt;<a name="line.705"></a>
-<span class="sourceLineNo">706</span>   * Column is split into two fields, family and qualifier.<a name="line.706"></a>
-<span class="sourceLineNo">707</span>   * @param rlength row length<a name="line.707"></a>
-<span class="sourceLineNo">708</span>   * @param flength family length<a name="line.708"></a>
-<span class="sourceLineNo">709</span>   * @param qlength qualifier length<a name="line.709"></a>
-<span class="sourceLineNo">710</span>   * @param timestamp version timestamp<a name="line.710"></a>
-<span class="sourceLineNo">711</span>   * @param type key type<a name="line.711"></a>
-<span class="sourceLineNo">712</span>   * @param vlength value length<a name="line.712"></a>
-<span class="sourceLineNo">713</span>   * @param tagsLength<a name="line.713"></a>
-<span class="sourceLineNo">714</span>   * @throws IllegalArgumentException<a name="line.714"></a>
-<span class="sourceLineNo">715</span>   */<a name="line.715"></a>
-<span class="sourceLineNo">716</span>  public KeyValue(final int rlength,<a name="line.716"></a>
-<span class="sourceLineNo">717</span>      final int flength,<a name="line.717"></a>
-<span class="sourceLineNo">718</span>      final int qlength,<a name="line.718"></a>
-<span class="sourceLineNo">719</span>      final long timestamp, final Type type,<a name="line.719"></a>
-<span class="sourceLineNo">720</span>      final int vlength, final int tagsLength) {<a name="line.720"></a>
-<span class="sourceLineNo">721</span>    this.bytes = createEmptyByteArray(rlength, flength, qlength, timestamp, type, vlength,<a name="line.721"></a>
-<span class="sourceLineNo">722</span>        tagsLength);<a name="line.722"></a>
-<span class="sourceLineNo">723</span>    this.length = bytes.length;<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    this.offset = 0;<a name="line.724"></a>
-<span class="sourceLineNo">725</span>  }<a name="line.725"></a>
-<span class="sourceLineNo">726</span><a name="line.726"></a>
-<span class="sourceLineNo">727</span><a name="line.727"></a>
-<span class="sourceLineNo">728</span>  public KeyValue(byte[] row, int roffset, int rlength,<a name="line.728"></a>
-<span class="sourceLineNo">729</span>                  byte[] family, int foffset, int flength,<a name="line.729"></a>
-<span class="sourceLineNo">730</span>                  ByteBuffer qualifier, long ts, Type type, ByteBuffer value, List&lt;Tag&gt; tags) {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    this.bytes = createByteArray(row, roffset, rlength, family, foffset, flength,<a name="line.731"></a>
-<span class="sourceLineNo">732</span>        qualifier, 0, qualifier == null ? 0 : qualifier.remaining(), ts, type,<a name="line.732"></a>
-<span class="sourceLineNo">733</span>        value, 0, value == null ? 0 : value.remaining(), tags);<a name="line.733"></a>
-<span class="sourceLineNo">734</span>    this.length = bytes.length;<a name="line.734"></a>
-<span class="sourceLineNo">735</span>    this.offset = 0;<a name="line.735"></a>
-<span class="sourceLineNo">736</span>  }<a name="line.736"></a>
+<span class="sourceLineNo">378</span>   * @param timestamp<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   */<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  public KeyValue(final byte [] row, final long timestamp, Type type) {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    this(row, null, null, timestamp, type, null);<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>
+<span class="sourceLineNo">385</span>   * Constructs KeyValue structure filled with null value.<a name="line.385"></a>
+<span class="sourceLineNo">386</span>   * Sets type to {@link KeyValue.Type#Maximum}<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * @param row - row key (arbitrary byte array)<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * @param family family name<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * @param qualifier column qualifier<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   */<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  public KeyValue(final byte [] row, final byte [] family,<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      final byte [] qualifier) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    this(row, family, qualifier, HConstants.LATEST_TIMESTAMP, Type.Maximum);<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>   * Constructs KeyValue structure as a put filled with specified values and<a name="line.397"></a>
+<span class="sourceLineNo">398</span>   * LATEST_TIMESTAMP.<a name="line.398"></a>
+<span class="sourceLineNo">399</span>   * @param row - row key (arbitrary byte array)<a name="line.399"></a>
+<span class="sourceLineNo">400</span>   * @param family family name<a name="line.400"></a>
+<span class="sourceLineNo">401</span>   * @param qualifier column qualifier<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
+<span class="sourceLineNo">403</span>  public KeyValue(final byte [] row, final byte [] family,<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      final byte [] qualifier, final byte [] value) {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    this(row, family, qualifier, HConstants.LATEST_TIMESTAMP, Type.Put, value);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  }<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>  /**<a name="line.408"></a>
+<span class="sourceLineNo">409</span>   * Constructs KeyValue structure filled with specified values.<a name="line.409"></a>
+<span class="sourceLineNo">410</span>   * @param row row key<a name="line.410"></a>
+<span class="sourceLineNo">411</span>   * @param family family name<a name="line.411"></a>
+<span class="sourceLineNo">412</span>   * @param qualifier column qualifier<a name="line.412"></a>
+<span class="sourceLineNo">413</span>   * @param timestamp version timestamp<a name="line.413"></a>
+<span class="sourceLineNo">414</span>   * @param type key type<a name="line.414"></a>
+<span class="sourceLineNo">415</span>   * @throws IllegalArgumentException<a name="line.415"></a>
+<span class="sourceLineNo">416</span>   */<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      final byte[] qualifier, final long timestamp, Type type) {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    this(row, family, qualifier, timestamp, type, null);<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>   * Constructs KeyValue structure filled with specified values.<a name="line.423"></a>
+<span class="sourceLineNo">424</span>   * @param row row key<a name="line.424"></a>
+<span class="sourceLineNo">425</span>   * @param family family name<a name="line.425"></a>
+<span class="sourceLineNo">426</span>   * @param qualifier column qualifier<a name="line.426"></a>
+<span class="sourceLineNo">427</span>   * @param timestamp version timestamp<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   * @param value column value<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * @throws IllegalArgumentException<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   */<a name="line.430"></a>
+<span class="sourceLineNo">431</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      final byte[] qualifier, final long timestamp, final byte[] value) {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    this(row, family, qualifier, timestamp, Type.Put, value);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  }<a name="line.434"></a>
+<span class="sourceLineNo">435</span><a name="line.435"></a>
+<span class="sourceLineNo">436</span>  /**<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   * Constructs KeyValue structure filled with specified values.<a name="line.437"></a>
+<span class="sourceLineNo">438</span>   * @param row row key<a name="line.438"></a>
+<span class="sourceLineNo">439</span>   * @param family family name<a name="line.439"></a>
+<span class="sourceLineNo">440</span>   * @param qualifier column qualifier<a name="line.440"></a>
+<span class="sourceLineNo">441</span>   * @param timestamp version timestamp<a name="line.441"></a>
+<span class="sourceLineNo">442</span>   * @param value column value<a name="line.442"></a>
+<span class="sourceLineNo">443</span>   * @param tags tags<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   * @throws IllegalArgumentException<a name="line.444"></a>
+<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
+<span class="sourceLineNo">446</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      final byte[] qualifier, final long timestamp, final byte[] value,<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      final Tag[] tags) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    this(row, family, qualifier, timestamp, value, tags != null ? Arrays.asList(tags) : null);<a name="line.449"></a>
+<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>  /**<a name="line.452"></a>
+<span class="sourceLineNo">453</span>   * Constructs KeyValue structure filled with specified values.<a name="line.453"></a>
+<span class="sourceLineNo">454</span>   * @param row row key<a name="line.454"></a>
+<span class="sourceLineNo">455</span>   * @param family family name<a name="line.455"></a>
+<span class="sourceLineNo">456</span>   * @param qualifier column qualifier<a name="line.456"></a>
+<span class="sourceLineNo">457</span>   * @param timestamp version timestamp<a name="line.457"></a>
+<span class="sourceLineNo">458</span>   * @param value column value<a name="line.458"></a>
+<span class="sourceLineNo">459</span>   * @param tags tags non-empty list of tags or null<a name="line.459"></a>
+<span class="sourceLineNo">460</span>   * @throws IllegalArgumentException<a name="line.460"></a>
+<span class="sourceLineNo">461</span>   */<a name="line.461"></a>
+<span class="sourceLineNo">462</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      final byte[] qualifier, final long timestamp, final byte[] value,<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      final List&lt;Tag&gt; tags) {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      family, 0, family==null ? 0 : family.length,<a name="line.466"></a>
+<span class="sourceLineNo">467</span>      qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      timestamp, Type.Put,<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      value, 0, value==null ? 0 : value.length, tags);<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  }<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
+<span class="sourceLineNo">472</span>  /**<a name="line.472"></a>
+<span class="sourceLineNo">473</span>   * Constructs KeyValue structure filled with specified values.<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   * @param row row key<a name="line.474"></a>
+<span class="sourceLineNo">475</span>   * @param family family name<a name="line.475"></a>
+<span class="sourceLineNo">476</span>   * @param qualifier column qualifier<a name="line.476"></a>
+<span class="sourceLineNo">477</span>   * @param timestamp version timestamp<a name="line.477"></a>
+<span class="sourceLineNo">478</span>   * @param type key type<a name="line.478"></a>
+<span class="sourceLineNo">479</span>   * @param value column value<a name="line.479"></a>
+<span class="sourceLineNo">480</span>   * @throws IllegalArgumentException<a name="line.480"></a>
+<span class="sourceLineNo">481</span>   */<a name="line.481"></a>
+<span class="sourceLineNo">482</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      final byte[] value) {<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    this(row, 0, len(row),   family, 0, len(family),   qualifier, 0, len(qualifier),<a name="line.485"></a>
+<span class="sourceLineNo">486</span>        timestamp, type,   value, 0, len(value));<a name="line.486"></a>
+<span class="sourceLineNo">487</span>  }<a name="line.487"></a>
+<span class="sourceLineNo">488</span><a name="line.488"></a>
+<span class="sourceLineNo">489</span>  /**<a name="line.489"></a>
+<span class="sourceLineNo">490</span>   * Constructs KeyValue structure filled with specified values.<a name="line.490"></a>
+<span class="sourceLineNo">491</span>   * &lt;p&gt;<a name="line.491"></a>
+<span class="sourceLineNo">492</span>   * Column is split into two fields, family and qualifier.<a name="line.492"></a>
+<span class="sourceLineNo">493</span>   * @param row row key<a name="line.493"></a>
+<span class="sourceLineNo">494</span>   * @param family family name<a name="line.494"></a>
+<span class="sourceLineNo">495</span>   * @param qualifier column qualifier<a name="line.495"></a>
+<span class="sourceLineNo">496</span>   * @param timestamp version timestamp<a name="line.496"></a>
+<span class="sourceLineNo">497</span>   * @param type key type<a name="line.497"></a>
+<span class="sourceLineNo">498</span>   * @param value column value<a name="line.498"></a>
+<span class="sourceLineNo">499</span>   * @throws IllegalArgumentException<a name="line.499"></a>
+<span class="sourceLineNo">500</span>   */<a name="line.500"></a>
+<span class="sourceLineNo">501</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.501"></a>
+<span class="sourceLineNo">502</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      final byte[] value, final List&lt;Tag&gt; tags) {<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    this(row, family, qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.504"></a>
+<span class="sourceLineNo">505</span>        timestamp, type, value, 0, value==null ? 0 : value.length, tags);<a name="line.505"></a>
+<span class="sourceLineNo">506</span>  }<a name="line.506"></a>
+<span class="sourceLineNo">507</span><a name="line.507"></a>
+<span class="sourceLineNo">508</span>  /**<a name="line.508"></a>
+<span class="sourceLineNo">509</span>   * Constructs KeyValue structure filled with specified values.<a name="line.509"></a>
+<span class="sourceLineNo">510</span>   * @param row row key<a name="line.510"></a>
+<span class="sourceLineNo">511</span>   * @param family family name<a name="line.511"></a>
+<span class="sourceLineNo">512</span>   * @param qualifier column qualifier<a name="line.512"></a>
+<span class="sourceLineNo">513</span>   * @param timestamp version timestamp<a name="line.513"></a>
+<span class="sourceLineNo">514</span>   * @param type key type<a name="line.514"></a>
+<span class="sourceLineNo">515</span>   * @param value column value<a name="line.515"></a>
+<span class="sourceLineNo">516</span>   * @throws IllegalArgumentException<a name="line.516"></a>
+<span class="sourceLineNo">517</span>   */<a name="line.517"></a>
+<span class="sourceLineNo">518</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.518"></a>
+<span class="sourceLineNo">519</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.519"></a>
+<span class="sourceLineNo">520</span>      final byte[] value, final byte[] tags) {<a name="line.520"></a>
+<span class="sourceLineNo">521</span>    this(row, family, qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.521"></a>
+<span class="sourceLineNo">522</span>        timestamp, type, value, 0, value==null ? 0 : value.length, tags);<a name="line.522"></a>
+<span class="sourceLineNo">523</span>  }<a name="line.523"></a>
+<span class="sourceLineNo">524</span><a name="line.524"></a>
+<span class="sourceLineNo">525</span>  /**<a name="line.525"></a>
+<span class="sourceLineNo">526</span>   * Constructs KeyValue structure filled with specified values.<a name="line.526"></a>
+<span class="sourceLineNo">527</span>   * @param row row key<a name="line.527"></a>
+<span class="sourceLineNo">528</span>   * @param family family name<a name="line.528"></a>
+<span class="sourceLineNo">529</span>   * @param qualifier column qualifier<a name="line.529"></a>
+<span class="sourceLineNo">530</span>   * @param qoffset qualifier offset<a name="line.530"></a>
+<span class="sourceLineNo">531</span>   * @param qlength qualifier length<a name="line.531"></a>
+<span class="sourceLineNo">532</span>   * @param timestamp version timestamp<a name="line.532"></a>
+<span class="sourceLineNo">533</span>   * @param type key type<a name="line.533"></a>
+<span class="sourceLineNo">534</span>   * @param value column value<a name="line.534"></a>
+<span class="sourceLineNo">535</span>   * @param voffset value offset<a name="line.535"></a>
+<span class="sourceLineNo">536</span>   * @param vlength value length<a name="line.536"></a>
+<span class="sourceLineNo">537</span>   * @throws IllegalArgumentException<a name="line.537"></a>
+<span class="sourceLineNo">538</span>   */<a name="line.538"></a>
+<span class="sourceLineNo">539</span>  public KeyValue(byte [] row, byte [] family,<a name="line.539"></a>
+<span class="sourceLineNo">540</span>      byte [] qualifier, int qoffset, int qlength, long timestamp, Type type,<a name="line.540"></a>
+<span class="sourceLineNo">541</span>      byte [] value, int voffset, int vlength, List&lt;Tag&gt; tags) {<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.542"></a>
+<span class="sourceLineNo">543</span>        family, 0, family==null ? 0 : family.length,<a name="line.543"></a>
+<span class="sourceLineNo">544</span>        qualifier, qoffset, qlength, timestamp, type,<a name="line.544"></a>
+<span class="sourceLineNo">545</span>        value, voffset, vlength, tags);<a name="line.545"></a>
+<span class="sourceLineNo">546</span>  }<a name="line.546"></a>
+<span class="sourceLineNo">547</span><a name="line.547"></a>
+<span class="sourceLineNo">548</span>  /**<a name="line.548"></a>
+<span class="sourceLineNo">549</span>   * @param row<a name="line.549"></a>
+<span class="sourceLineNo">550</span>   * @param family<a name="line.550"></a>
+<span class="sourceLineNo">551</span>   * @param qualifier<a name="line.551"></a>
+<span class="sourceLineNo">552</span>   * @param qoffset<a name="line.552"></a>
+<span class="sourceLineNo">553</span>   * @param qlength<a name="line.553"></a>
+<span class="sourceLineNo">554</span>   * @param timestamp<a name="line.554"></a>
+<span class="sourceLineNo">555</span>   * @param type<a name="line.555"></a>
+<span class="sourceLineNo">556</span>   * @param value<a name="line.556"></a>
+<span class="sourceLineNo">557</span>   * @param voffset<a name="line.557"></a>
+<span class="sourceLineNo">558</span>   * @param vlength<a name="line.558"></a>
+<span class="sourceLineNo">559</span>   * @param tags<a name="line.559"></a>
+<span class="sourceLineNo">560</span>   */<a name="line.560"></a>
+<span class="sourceLineNo">561</span>  public KeyValue(byte [] row, byte [] family,<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      byte [] qualifier, int qoffset, int qlength, long timestamp, Type type,<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      byte [] value, int voffset, int vlength, byte[] tags) {<a name="line.563"></a>
+<span class="sourceLineNo">564</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.564"></a>
+<span class="sourceLineNo">565</span>        family, 0, family==null ? 0 : family.length,<a name="line.565"></a>
+<span class="sourceLineNo">566</span>        qualifier, qoffset, qlength, timestamp, type,<a name="line.566"></a>
+<span class="sourceLineNo">567</span>        value, voffset, vlength, tags, 0, tags==null ? 0 : tags.length);<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>  /**<a name="line.570"></a>
+<span class="sourceLineNo">571</span>   * Constructs KeyValue structure filled with specified values.<a name="line.571"></a>
+<span class="sourceLineNo">572</span>   * &lt;p&gt;<a name="line.572"></a>
+<span class="sourceLineNo">573</span>   * Column is split into two fields, family and qualifier.<a name="line.573"></a>
+<span class="sourceLineNo">574</span>   * @param row row key<a name="line.574"></a>
+<span class="sourceLineNo">575</span>   * @throws IllegalArgumentException<a name="line.575"></a>
+<span class="sourceLineNo">576</span>   */<a name="line.576"></a>
+<span class="sourceLineNo">577</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.577"></a>
+<span class="sourceLineNo">578</span>      final byte [] family, final int foffset, final int flength,<a name="line.578"></a>
+<span class="sourceLineNo">579</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      final long timestamp, final Type type,<a name="line.580"></a>
+<span class="sourceLineNo">581</span>      final byte [] value, final int voffset, final int vlength) {<a name="line.581"></a>
+<span class="sourceLineNo">582</span>    this(row, roffset, rlength, family, foffset, flength, qualifier, qoffset,<a name="line.582"></a>
+<span class="sourceLineNo">583</span>      qlength, timestamp, type, value, voffset, vlength, null);<a name="line.583"></a>
+<span class="sourceLineNo">584</span>  }<a name="line.584"></a>
+<span class="sourceLineNo">585</span><a name="line.585"></a>
+<span class="sourceLineNo">586</span>  /**<a name="line.586"></a>
+<span class="sourceLineNo">587</span>   * Constructs KeyValue structure filled with specified values. Uses the provided buffer as the<a name="line.587"></a>
+<span class="sourceLineNo">588</span>   * data buffer.<a name="line.588"></a>
+<span class="sourceLineNo">589</span>   * &lt;p&gt;<a name="line.589"></a>
+<span class="sourceLineNo">590</span>   * Column is split into two fields, family and qualifier.<a name="line.590"></a>
+<span class="sourceLineNo">591</span>   *<a name="line.591"></a>
+<span class="sourceLineNo">592</span>   * @param buffer the bytes buffer to use<a name="line.592"></a>
+<span class="sourceLineNo">593</span>   * @param boffset buffer offset<a name="line.593"></a>
+<span class="sourceLineNo">594</span>   * @param row row key<a name="line.594"></a>
+<span class="sourceLineNo">595</span>   * @param roffset row offset<a name="line.595"></a>
+<span class="sourceLineNo">596</span>   * @param rlength row length<a name="line.596"></a>
+<span class="sourceLineNo">597</span>   * @param family family name<a name="line.597"></a>
+<span class="sourceLineNo">598</span>   * @param foffset family offset<a name="line.598"></a>
+<span class="sourceLineNo">599</span>   * @param flength family length<a name="line.599"></a>
+<span class="sourceLineNo">600</span>   * @param qualifier column qualifier<a name="line.600"></a>
+<span class="sourceLineNo">601</span>   * @param qoffset qualifier offset<a name="line.601"></a>
+<span class="sourceLineNo">602</span>   * @param qlength qualifier length<a name="line.602"></a>
+<span class="sourceLineNo">603</span>   * @param timestamp version timestamp<a name="line.603"></a>
+<span class="sourceLineNo">604</span>   * @param type key type<a name="line.604"></a>
+<span class="sourceLineNo">605</span>   * @param value column value<a name="line.605"></a>
+<span class="sourceLineNo">606</span>   * @param voffset value offset<a name="line.606"></a>
+<span class="sourceLineNo">607</span>   * @param vlength value length<a name="line.607"></a>
+<span class="sourceLineNo">608</span>   * @param tags non-empty list of tags or null<a name="line.608"></a>
+<span class="sourceLineNo">609</span>   * @throws IllegalArgumentException an illegal value was passed or there is insufficient space<a name="line.609"></a>
+<span class="sourceLineNo">610</span>   * remaining in the buffer<a name="line.610"></a>
+<span class="sourceLineNo">611</span>   */<a name="line.611"></a>
+<span class="sourceLineNo">612</span>  public KeyValue(byte [] buffer, final int boffset,<a name="line.612"></a>
+<span class="sourceLineNo">613</span>      final byte [] row, final int roffset, final int rlength,<a name="line.613"></a>
+<span class="sourceLineNo">614</span>      final byte [] family, final int foffset, final int flength,<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.615"></a>
+<span class="sourceLineNo">616</span>      final long timestamp, final Type type,<a name="line.616"></a>
+<span class="sourceLineNo">617</span>      final byte [] value, final int voffset, final int vlength,<a name="line.617"></a>
+<span class="sourceLineNo">618</span>      final Tag[] tags) {<a name="line.618"></a>
+<span class="sourceLineNo">619</span>     this.bytes  = buffer;<a name="line.619"></a>
+<span class="sourceLineNo">620</span>     this.length = writeByteArray(buffer, boffset,<a name="line.620"></a>
+<span class="sourceLineNo">621</span>         row, roffset, rlength,<a name="line.621"></a>
+<span class="sourceLineNo">622</span>         family, foffset, flength, qualifier, qoffset, qlength,<a name="line.622"></a>
+<span class="sourceLineNo">623</span>        timestamp, type, value, voffset, vlength, tags);<a name="line.623"></a>
+<span class="sourceLineNo">624</span>     this.offset = boffset;<a name="line.624"></a>
+<span class="sourceLineNo">625</span>   }<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">628</span>   * Constructs KeyValue structure filled with specified values.<a name="line.628"></a>
+<span class="sourceLineNo">629</span>   * &lt;p&gt;<a name="line.629"></a>
+<span class="sourceLineNo">630</span>   * Column is split into two fields, family and qualifier.<a name="line.630"></a>
+<span class="sourceLineNo">631</span>   * @param row row key<a name="line.631"></a>
+<span class="sourceLineNo">632</span>   * @param roffset row offset<a name="line.632"></a>
+<span class="sourceLineNo">633</span>   * @param rlength row length<a name="line.633"></a>
+<span class="sourceLineNo">634</span>   * @param family family name<a name="line.634"></a>
+<span class="sourceLineNo">635</span>   * @param foffset family offset<a name="line.635"></a>
+<span class="sourceLineNo">636</span>   * @param flength family length<a name="line.636"></a>
+<span class="sourceLineNo">637</span>   * @param qualifier column qualifier<a name="line.637"></a>
+<span class="sourceLineNo">638</span>   * @param qoffset qualifier offset<a name="line.638"></a>
+<span class="sourceLineNo">639</span>   * @param qlength qualifier length<a name="line.639"></a>
+<span class="sourceLineNo">640</span>   * @param timestamp version timestamp<a name="line.640"></a>
+<span class="sourceLineNo">641</span>   * @param type key type<a name="line.641"></a>
+<span class="sourceLineNo">642</span>   * @param value column value<a name="line.642"></a>
+<span class="sourceLineNo">643</span>   * @param voffset value offset<a name="line.643"></a>
+<span class="sourceLineNo">644</span>   * @param vlength value length<a name="line.644"></a>
+<span class="sourceLineNo">645</span>   * @param tags tags<a name="line.645"></a>
+<span class="sourceLineNo">646</span>   * @throws IllegalArgumentException<a name="line.646"></a>
+<span class="sourceLineNo">647</span>   */<a name="line.647"></a>
+<span class="sourceLineNo">648</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.648"></a>
+<span class="sourceLineNo">649</span>      final byte [] family, final int foffset, final int flength,<a name="line.649"></a>
+<span class="sourceLineNo">650</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.650"></a>
+<span class="sourceLineNo">651</span>      final long timestamp, final Type type,<a name="line.651"></a>
+<span class="sourceLineNo">652</span>      final byte [] value, final int voffset, final int vlength,<a name="line.652"></a>
+<span class="sourceLineNo">653</span>      final List&lt;Tag&gt; tags) {<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    this.bytes = createByteArray(row, roffset, rlength,<a name="line.654"></a>
+<span class="sourceLineNo">655</span>        family, foffset, flength, qualifier, qoffset, qlength,<a name="line.655"></a>
+<span class="sourceLineNo">656</span>        timestamp, type, value, voffset, vlength, tags);<a name="line.656"></a>
+<span class="sourceLineNo">657</span>    this.length = bytes.length;<a name="line.657"></a>
+<span class="sourceLineNo">658</span>    this.offset = 0;<a name="line.658"></a>
+<span class="sourceLineNo">659</span>  }<a name="line.659"></a>
+<span class="sourceLineNo">660</span><a name="line.660"></a>
+<span class="sourceLineNo">661</span>  /**<a name="line.661"></a>
+<span class="sourceLineNo">662</span>   * @param row<a name="line.662"></a>
+<span class="sourceLineNo">663</span>   * @param roffset<a name="line.663"></a>
+<span class="sourceLineNo">664</span>   * @param rlength<a name="line.664"></a>
+<span class="sourceLineNo">665</span>   * @param family<a name="line.665"></a>
+<span class="sourceLineNo">666</span>   * @param foffset<a name="line.666"></a>
+<span class="sourceLineNo">667</span>   * @param flength<a name="line.667"></a>
+<span class="sourceLineNo">668</span>   * @param qualifier<a name="line.668"></a>
+<span class="sourceLineNo">669</span>   * @param qoffset<a name="line.669"></a>
+<span class="sourceLineNo">670</span>   * @param qlength<a name="line.670"></a>
+<span class="sourceLineNo">671</span>   * @param timestamp<a name="line.671"></a>
+<span class="sourceLineNo">672</span>   * @param type<a name="line.672"></a>
+<span class="sourceLineNo">673</span>   * @param value<a name="line.673"></a>
+<span class="sourceLineNo">674</span>   * @param voffset<a name="line.674"></a>
+<span class="sourceLineNo">675</span>   * @param vlength<a name="line.675"></a>
+<span class="sourceLineNo">676</span>   * @param tags<a name="line.676"></a>
+<span class="sourceLineNo">677</span>   */<a name="line.677"></a>
+<span class="sourceLineNo">678</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.678"></a>
+<span class="sourceLineNo">679</span>      final byte [] family, final int foffset, final int flength,<a name="line.679"></a>
+<span class="sourceLineNo">680</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.680"></a>
+<span class="sourceLineNo">681</span>      final long timestamp, final Type type,<a name="line.681"></a>
+<span class="sourceLineNo">682</span>      final byte [] value, final int voffset, final int vlength,<a name="line.682"></a>
+<span class="sourceLineNo">683</span>      final byte[] tags, final int tagsOffset, final int tagsLength) {<a name="line.683"></a>
+<span class="sourceLineNo">684</span>    this.bytes = createByteArray(row, roffset, rlength,<a name="line.684"></a>
+<span class="sourceLineNo">685</span>        family, foffset, flength, qualifier, qoffset, qlength,<a name="line.685"></a>
+<span class="sourceLineNo">686</span>        timestamp, type, value, voffset, vlength, tags, tagsOffset, tagsLength);<a name="line.686"></a>
+<span class="sourceLineNo">687</span>    this.length = bytes.length;<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    this.offset = 0;<a name="line.688"></a>
+<span class="sourceLineNo">689</span>  }<a name="line.689"></a>
+<span class="sourceLineNo">690</span><a name="line.690"></a>
+<span class="sourceLineNo">691</span>  /**<a name="line.691"></a>
+<span class="sourceLineNo">692</span>   * Constructs an empty KeyValue structure, with specified sizes.<a name="line.692"></a>
+<span class="sourceLineNo">693</span>   * This can be used to partially fill up KeyValues.<a name="line.693"></a>
+<span class="sourceLineNo">694</span>   * &lt;p&gt;<a name="line.694"></a>
+<span class="sourceLineNo">695</span>   * Column is split into two fields, family and qualifier.<a name="line.695"></a>
+<span class="sourceLineNo">696</span>   * @param rlength row length<a name="line.696"></a>
+<span class="sourceLineNo">697</span>   * @param flength family length<a name="line.697"></a>
+<span class="sourceLineNo">698</span>   * @param qlength qualifier length<a name="line.698"></a>
+<span class="sourceLineNo">699</span>   * @param timestamp version timestamp<a name="line.699"></a>
+<span class="sourceLineNo">700</span>   * @param type key type<a name="line.700"></a>
+<span class="sourceLineNo">701</span>   * @param vlength value length<a name="line.701"></a>
+<span class="sourceLineNo">702</span>   * @throws IllegalArgumentException<a name="line.702"></a>
+<span class="sourceLineNo">703</span>   */<a name="line.703"></a>
+<span class="sourceLineNo">704</span>  public KeyValue(final int rlength,<a name="line.704"></a>
+<span class="sourceLineNo">705</span>      final int flength,<a name="line.705"></a>
+<span class="sourceLineNo">706</span>      final int qlength,<a name="line.706"></a>
+<span class="sourceLineNo">707</span>      final long timestamp, final Type type,<a name="line.707"></a>
+<span class="sourceLineNo">708</span>      final int vlength) {<a name="line.708"></a>
+<span class="sourceLineNo">709</span>    this(rlength, flength, qlength, timestamp, type, vlength, 0);<a name

<TRUNCATED>

[20/29] hbase-site git commit: Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html b/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html
index 6428b67..65c197f 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html
@@ -260,2307 +260,2317 @@
 <span class="sourceLineNo">252</span>    }<a name="line.252"></a>
 <span class="sourceLineNo">253</span><a name="line.253"></a>
 <span class="sourceLineNo">254</span>    /**<a name="line.254"></a>
-<span class="sourceLineNo">255</span>     * Cannot rely on enum ordinals . They change if item is removed or moved.<a name="line.255"></a>
-<span class="sourceLineNo">256</span>     * Do our own codes.<a name="line.256"></a>
-<span class="sourceLineNo">257</span>     * @param b<a name="line.257"></a>
-<span class="sourceLineNo">258</span>     * @return Type associated with passed code.<a name="line.258"></a>
-<span class="sourceLineNo">259</span>     */<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    public static Type codeToType(final byte b) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      Type t = codeArray[b &amp; 0xff];<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      if (t != null) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        return t;<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      }<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      throw new RuntimeException("Unknown code " + b);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span>  }<a name="line.267"></a>
-<span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>  /**<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   * Lowest possible key.<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   * Makes a Key with highest possible Timestamp, empty row and column.  No<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   * key can be equal or lower than this one in memstore or in store file.<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   */<a name="line.273"></a>
-<span class="sourceLineNo">274</span>  public static final KeyValue LOWESTKEY =<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    new KeyValue(HConstants.EMPTY_BYTE_ARRAY, HConstants.LATEST_TIMESTAMP);<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>  ////<a name="line.277"></a>
-<span class="sourceLineNo">278</span>  // KeyValue core instance fields.<a name="line.278"></a>
-<span class="sourceLineNo">279</span>  protected byte [] bytes = null;  // an immutable byte array that contains the KV<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  protected int offset = 0;  // offset into bytes buffer KV starts at<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  protected int length = 0;  // length of the KV starting from offset.<a name="line.281"></a>
-<span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  /** Here be dragons **/<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>  /**<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   * used to achieve atomic operations in the memstore.<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   */<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  @Override<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  public long getSequenceId() {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    return seqId;<a name="line.290"></a>
-<span class="sourceLineNo">291</span>  }<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>  @Override<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  public void setSequenceId(long seqId) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    this.seqId = seqId;<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  }<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>  // multi-version concurrency control version.  default value is 0, aka do not care.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>  private long seqId = 0;<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>  /** Dragon time over, return to normal business */<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>  /** Writable Constructor -- DO NOT USE */<a name="line.304"></a>
-<span class="sourceLineNo">305</span>  public KeyValue() {}<a name="line.305"></a>
+<span class="sourceLineNo">255</span>     * True to indicate that the byte b is a valid type.<a name="line.255"></a>
+<span class="sourceLineNo">256</span>     * @param b byte to check<a name="line.256"></a>
+<span class="sourceLineNo">257</span>     * @return true or false<a name="line.257"></a>
+<span class="sourceLineNo">258</span>     */<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    static boolean isValidType(byte b) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      return codeArray[b &amp; 0xff] != null;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    }<a name="line.261"></a>
+<span class="sourceLineNo">262</span><a name="line.262"></a>
+<span class="sourceLineNo">263</span>    /**<a name="line.263"></a>
+<span class="sourceLineNo">264</span>     * Cannot rely on enum ordinals . They change if item is removed or moved.<a name="line.264"></a>
+<span class="sourceLineNo">265</span>     * Do our own codes.<a name="line.265"></a>
+<span class="sourceLineNo">266</span>     * @param b<a name="line.266"></a>
+<span class="sourceLineNo">267</span>     * @return Type associated with passed code.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>     */<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    public static Type codeToType(final byte b) {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      Type t = codeArray[b &amp; 0xff];<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      if (t != null) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        return t;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      throw new RuntimeException("Unknown code " + b);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  }<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>  /**<a name="line.278"></a>
+<span class="sourceLineNo">279</span>   * Lowest possible key.<a name="line.279"></a>
+<span class="sourceLineNo">280</span>   * Makes a Key with highest possible Timestamp, empty row and column.  No<a name="line.280"></a>
+<span class="sourceLineNo">281</span>   * key can be equal or lower than this one in memstore or in store file.<a name="line.281"></a>
+<span class="sourceLineNo">282</span>   */<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  public static final KeyValue LOWESTKEY =<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    new KeyValue(HConstants.EMPTY_BYTE_ARRAY, HConstants.LATEST_TIMESTAMP);<a name="line.284"></a>
+<span class="sourceLineNo">285</span><a name="line.285"></a>
+<span class="sourceLineNo">286</span>  ////<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  // KeyValue core instance fields.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  protected byte [] bytes = null;  // an immutable byte array that contains the KV<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  protected int offset = 0;  // offset into bytes buffer KV starts at<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  protected int length = 0;  // length of the KV starting from offset.<a name="line.290"></a>
+<span class="sourceLineNo">291</span><a name="line.291"></a>
+<span class="sourceLineNo">292</span>  /** Here be dragons **/<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>  /**<a name="line.294"></a>
+<span class="sourceLineNo">295</span>   * used to achieve atomic operations in the memstore.<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   */<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  @Override<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  public long getSequenceId() {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    return seqId;<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>
+<span class="sourceLineNo">303</span>  public void setSequenceId(long seqId) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    this.seqId = seqId;<a name="line.304"></a>
+<span class="sourceLineNo">305</span>  }<a name="line.305"></a>
 <span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>  /**<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * Creates a KeyValue from the start of the specified byte array.<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * Presumes &lt;code&gt;bytes&lt;/code&gt; content is formatted as a KeyValue blob.<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * @param bytes byte array<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   */<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  public KeyValue(final byte [] bytes) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    this(bytes, 0);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
+<span class="sourceLineNo">307</span>  // multi-version concurrency control version.  default value is 0, aka do not care.<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  private long seqId = 0;<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>  /** Dragon time over, return to normal business */<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>  /** Writable Constructor -- DO NOT USE */<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  public KeyValue() {}<a name="line.314"></a>
 <span class="sourceLineNo">315</span><a name="line.315"></a>
 <span class="sourceLineNo">316</span>  /**<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * Creates a KeyValue from the specified byte array and offset.<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * Presumes &lt;code&gt;bytes&lt;/code&gt; content starting at &lt;code&gt;offset&lt;/code&gt; is<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * formatted as a KeyValue blob.<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   * @param bytes byte array<a name="line.320"></a>
-<span class="sourceLineNo">321</span>   * @param offset offset to start of KeyValue<a name="line.321"></a>
-<span class="sourceLineNo">322</span>   */<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  public KeyValue(final byte [] bytes, final int offset) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    this(bytes, offset, getLength(bytes, offset));<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  }<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>  /**<a name="line.327"></a>
-<span class="sourceLineNo">328</span>   * Creates a KeyValue from the specified byte array, starting at offset, and<a name="line.328"></a>
-<span class="sourceLineNo">329</span>   * for length &lt;code&gt;length&lt;/code&gt;.<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   * @param bytes byte array<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   * @param offset offset to start of the KeyValue<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   * @param length length of the KeyValue<a name="line.332"></a>
-<span class="sourceLineNo">333</span>   */<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  public KeyValue(final byte [] bytes, final int offset, final int length) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    this.bytes = bytes;<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    this.offset = offset;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    this.length = length;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  }<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>  /**<a name="line.340"></a>
-<span class="sourceLineNo">341</span>   * Creates a KeyValue from the specified byte array, starting at offset, and<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   * for length &lt;code&gt;length&lt;/code&gt;.<a name="line.342"></a>
-<span class="sourceLineNo">343</span>   *<a name="line.343"></a>
-<span class="sourceLineNo">344</span>   * @param bytes  byte array<a name="line.344"></a>
-<span class="sourceLineNo">345</span>   * @param offset offset to start of the KeyValue<a name="line.345"></a>
-<span class="sourceLineNo">346</span>   * @param length length of the KeyValue<a name="line.346"></a>
-<span class="sourceLineNo">347</span>   * @param ts<a name="line.347"></a>
-<span class="sourceLineNo">348</span>   */<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  public KeyValue(final byte[] bytes, final int offset, final int length, long ts) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    this(bytes, offset, length, null, 0, 0, null, 0, 0, ts, Type.Maximum, null, 0, 0, null);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  /** Constructors that build a new backing byte array from fields */<a name="line.353"></a>
-<span class="sourceLineNo">354</span><a name="line.354"></a>
-<span class="sourceLineNo">355</span>  /**<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   * Constructs KeyValue structure filled with null value.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   * Sets type to {@link KeyValue.Type#Maximum}<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   * @param row - row key (arbitrary byte array)<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   * @param timestamp<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   */<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  public KeyValue(final byte [] row, final long timestamp) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    this(row, null, null, timestamp, Type.Maximum, null);<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  }<a name="line.363"></a>
+<span class="sourceLineNo">317</span>   * Creates a KeyValue from the start of the specified byte array.<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * Presumes &lt;code&gt;bytes&lt;/code&gt; content is formatted as a KeyValue blob.<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * @param bytes byte array<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   */<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  public KeyValue(final byte [] bytes) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    this(bytes, 0);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  }<a name="line.323"></a>
+<span class="sourceLineNo">324</span><a name="line.324"></a>
+<span class="sourceLineNo">325</span>  /**<a name="line.325"></a>
+<span class="sourceLineNo">326</span>   * Creates a KeyValue from the specified byte array and offset.<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   * Presumes &lt;code&gt;bytes&lt;/code&gt; content starting at &lt;code&gt;offset&lt;/code&gt; is<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   * formatted as a KeyValue blob.<a name="line.328"></a>
+<span class="sourceLineNo">329</span>   * @param bytes byte array<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   * @param offset offset to start of KeyValue<a name="line.330"></a>
+<span class="sourceLineNo">331</span>   */<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  public KeyValue(final byte [] bytes, final int offset) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    this(bytes, offset, getLength(bytes, offset));<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  }<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>  /**<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   * Creates a KeyValue from the specified byte array, starting at offset, and<a name="line.337"></a>
+<span class="sourceLineNo">338</span>   * for length &lt;code&gt;length&lt;/code&gt;.<a name="line.338"></a>
+<span class="sourceLineNo">339</span>   * @param bytes byte array<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   * @param offset offset to start of the KeyValue<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * @param length length of the KeyValue<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   */<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  public KeyValue(final byte[] bytes, final int offset, final int length) {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    KeyValueUtil.checkKeyValueBytes(bytes, offset, length, true);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    this.bytes = bytes;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    this.offset = offset;<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    this.length = length;<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>  /**<a name="line.350"></a>
+<span class="sourceLineNo">351</span>   * Creates a KeyValue from the specified byte array, starting at offset, and<a name="line.351"></a>
+<span class="sourceLineNo">352</span>   * for length &lt;code&gt;length&lt;/code&gt;.<a name="line.352"></a>
+<span class="sourceLineNo">353</span>   *<a name="line.353"></a>
+<span class="sourceLineNo">354</span>   * @param bytes  byte array<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * @param offset offset to start of the KeyValue<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * @param length length of the KeyValue<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * @param ts<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   */<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  public KeyValue(final byte[] bytes, final int offset, final int length, long ts) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    this(bytes, offset, length, null, 0, 0, null, 0, 0, ts, Type.Maximum, null, 0, 0, null);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  }<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>  /** Constructors that build a new backing byte array from fields */<a name="line.363"></a>
 <span class="sourceLineNo">364</span><a name="line.364"></a>
 <span class="sourceLineNo">365</span>  /**<a name="line.365"></a>
 <span class="sourceLineNo">366</span>   * Constructs KeyValue structure filled with null value.<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   * @param row - row key (arbitrary byte array)<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   * @param timestamp<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   */<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public KeyValue(final byte [] row, final long timestamp, Type type) {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    this(row, null, null, timestamp, type, null);<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  /**<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   * Constructs KeyValue structure filled with null value.<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   * Sets type to {@link KeyValue.Type#Maximum}<a name="line.376"></a>
+<span class="sourceLineNo">367</span>   * Sets type to {@link KeyValue.Type#Maximum}<a name="line.367"></a>
+<span class="sourceLineNo">368</span>   * @param row - row key (arbitrary byte array)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>   * @param timestamp<a name="line.369"></a>
+<span class="sourceLineNo">370</span>   */<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  public KeyValue(final byte [] row, final long timestamp) {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    this(row, null, null, timestamp, Type.Maximum, null);<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>   * Constructs KeyValue structure filled with null value.<a name="line.376"></a>
 <span class="sourceLineNo">377</span>   * @param row - row key (arbitrary byte array)<a name="line.377"></a>
-<span class="sourceLineNo">378</span>   * @param family family name<a name="line.378"></a>
-<span class="sourceLineNo">379</span>   * @param qualifier column qualifier<a name="line.379"></a>
-<span class="sourceLineNo">380</span>   */<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  public KeyValue(final byte [] row, final byte [] family,<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      final byte [] qualifier) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    this(row, family, qualifier, HConstants.LATEST_TIMESTAMP, Type.Maximum);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  }<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span>  /**<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   * Constructs KeyValue structure as a put filled with specified values and<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * LATEST_TIMESTAMP.<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * @param row - row key (arbitrary byte array)<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   * @param family family name<a name="line.390"></a>
-<span class="sourceLineNo">391</span>   * @param qualifier column qualifier<a name="line.391"></a>
-<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  public KeyValue(final byte [] row, final byte [] family,<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      final byte [] qualifier, final byte [] value) {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    this(row, family, qualifier, HConstants.LATEST_TIMESTAMP, Type.Put, value);<a name="line.395"></a>
-<span class="sourceLineNo">396</span>  }<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>  /**<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * Constructs KeyValue structure filled with specified values.<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * @param row row key<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * @param family family name<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @param qualifier column qualifier<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * @param timestamp version timestamp<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * @param type key type<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   * @throws IllegalArgumentException<a name="line.405"></a>
-<span class="sourceLineNo">406</span>   */<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      final byte[] qualifier, final long timestamp, Type type) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    this(row, family, qualifier, timestamp, type, null);<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>   * Constructs KeyValue structure filled with specified values.<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * @param row row key<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * @param family family name<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * @param qualifier column qualifier<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @param timestamp version timestamp<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @param value column value<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * @throws IllegalArgumentException<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   */<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      final byte[] qualifier, final long timestamp, final byte[] value) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    this(row, family, qualifier, timestamp, Type.Put, value);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>  }<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span>  /**<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * Constructs KeyValue structure filled with specified values.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * @param row row key<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * @param family family name<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   * @param qualifier column qualifier<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   * @param timestamp version timestamp<a name="line.431"></a>
-<span class="sourceLineNo">432</span>   * @param value column value<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   * @param tags tags<a name="line.433"></a>
-<span class="sourceLineNo">434</span>   * @throws IllegalArgumentException<a name="line.434"></a>
-<span class="sourceLineNo">435</span>   */<a name="line.435"></a>
-<span class="sourceLineNo">436</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      final byte[] qualifier, final long timestamp, final byte[] value,<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      final Tag[] tags) {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    this(row, family, qualifier, timestamp, value, tags != null ? Arrays.asList(tags) : null);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>  }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * Constructs KeyValue structure filled with specified values.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * @param row row key<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   * @param family family name<a name="line.445"></a>
-<span class="sourceLineNo">446</span>   * @param qualifier column qualifier<a name="line.446"></a>
-<span class="sourceLineNo">447</span>   * @param timestamp version timestamp<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * @param value column value<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   * @param tags tags non-empty list of tags or null<a name="line.449"></a>
-<span class="sourceLineNo">450</span>   * @throws IllegalArgumentException<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   */<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      final byte[] qualifier, final long timestamp, final byte[] value,<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      final List&lt;Tag&gt; tags) {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.455"></a>
-<span class="sourceLineNo">456</span>      family, 0, family==null ? 0 : family.length,<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      timestamp, Type.Put,<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      value, 0, value==null ? 0 : value.length, tags);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>  }<a name="line.460"></a>
-<span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>  /**<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * Constructs KeyValue structure filled with specified values.<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * @param row row key<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   * @param family family name<a name="line.465"></a>
-<span class="sourceLineNo">466</span>   * @param qualifier column qualifier<a name="line.466"></a>
-<span class="sourceLineNo">467</span>   * @param timestamp version timestamp<a name="line.467"></a>
-<span class="sourceLineNo">468</span>   * @param type key type<a name="line.468"></a>
-<span class="sourceLineNo">469</span>   * @param value column value<a name="line.469"></a>
-<span class="sourceLineNo">470</span>   * @throws IllegalArgumentException<a name="line.470"></a>
-<span class="sourceLineNo">471</span>   */<a name="line.471"></a>
-<span class="sourceLineNo">472</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      final byte[] value) {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    this(row, 0, len(row),   family, 0, len(family),   qualifier, 0, len(qualifier),<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        timestamp, type,   value, 0, len(value));<a name="line.476"></a>
-<span class="sourceLineNo">477</span>  }<a name="line.477"></a>
-<span class="sourceLineNo">478</span><a name="line.478"></a>
-<span class="sourceLineNo">479</span>  /**<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * Constructs KeyValue structure filled with specified values.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * &lt;p&gt;<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * Column is split into two fields, family and qualifier.<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * @param row row key<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   * @param family family name<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   * @param qualifier column qualifier<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * @param timestamp version timestamp<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * @param type key type<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * @param value column value<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   * @throws IllegalArgumentException<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   */<a name="line.490"></a>
-<span class="sourceLineNo">491</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      final byte[] value, final List&lt;Tag&gt; tags) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    this(row, family, qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.494"></a>
-<span class="sourceLineNo">495</span>        timestamp, type, value, 0, value==null ? 0 : value.length, tags);<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>  /**<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   * Constructs KeyValue structure filled with specified values.<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   * @param row row key<a name="line.500"></a>
-<span class="sourceLineNo">501</span>   * @param family family name<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   * @param qualifier column qualifier<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   * @param timestamp version timestamp<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   * @param type key type<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @param value column value<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * @throws IllegalArgumentException<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   */<a name="line.507"></a>
-<span class="sourceLineNo">508</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      final byte[] value, final byte[] tags) {<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    this(row, family, qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.511"></a>
-<span class="sourceLineNo">512</span>        timestamp, type, value, 0, value==null ? 0 : value.length, tags);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>  }<a name="line.513"></a>
-<span class="sourceLineNo">514</span><a name="line.514"></a>
-<span class="sourceLineNo">515</span>  /**<a name="line.515"></a>
-<span class="sourceLineNo">516</span>   * Constructs KeyValue structure filled with specified values.<a name="line.516"></a>
-<span class="sourceLineNo">517</span>   * @param row row key<a name="line.517"></a>
-<span class="sourceLineNo">518</span>   * @param family family name<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * @param qualifier column qualifier<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   * @param qoffset qualifier offset<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * @param qlength qualifier length<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   * @param timestamp version timestamp<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   * @param type key type<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   * @param value column value<a name="line.524"></a>
-<span class="sourceLineNo">525</span>   * @param voffset value offset<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * @param vlength value length<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * @throws IllegalArgumentException<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   */<a name="line.528"></a>
-<span class="sourceLineNo">529</span>  public KeyValue(byte [] row, byte [] family,<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      byte [] qualifier, int qoffset, int qlength, long timestamp, Type type,<a name="line.530"></a>
-<span class="sourceLineNo">531</span>      byte [] value, int voffset, int vlength, List&lt;Tag&gt; tags) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.532"></a>
-<span class="sourceLineNo">533</span>        family, 0, family==null ? 0 : family.length,<a name="line.533"></a>
-<span class="sourceLineNo">534</span>        qualifier, qoffset, qlength, timestamp, type,<a name="line.534"></a>
-<span class="sourceLineNo">535</span>        value, voffset, vlength, tags);<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  }<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>  /**<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * @param row<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   * @param family<a name="line.540"></a>
-<span class="sourceLineNo">541</span>   * @param qualifier<a name="line.541"></a>
-<span class="sourceLineNo">542</span>   * @param qoffset<a name="line.542"></a>
-<span class="sourceLineNo">543</span>   * @param qlength<a name="line.543"></a>
-<span class="sourceLineNo">544</span>   * @param timestamp<a name="line.544"></a>
-<span class="sourceLineNo">545</span>   * @param type<a name="line.545"></a>
-<span class="sourceLineNo">546</span>   * @param value<a name="line.546"></a>
-<span class="sourceLineNo">547</span>   * @param voffset<a name="line.547"></a>
-<span class="sourceLineNo">548</span>   * @param vlength<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * @param tags<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   */<a name="line.550"></a>
-<span class="sourceLineNo">551</span>  public KeyValue(byte [] row, byte [] family,<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      byte [] qualifier, int qoffset, int qlength, long timestamp, Type type,<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      byte [] value, int voffset, int vlength, byte[] tags) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.554"></a>
-<span class="sourceLineNo">555</span>        family, 0, family==null ? 0 : family.length,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>        qualifier, qoffset, qlength, timestamp, type,<a name="line.556"></a>
-<span class="sourceLineNo">557</span>        value, voffset, vlength, tags, 0, tags==null ? 0 : tags.length);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>  }<a name="line.558"></a>
-<span class="sourceLineNo">559</span><a name="line.559"></a>
-<span class="sourceLineNo">560</span>  /**<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   * Constructs KeyValue structure filled with specified values.<a name="line.561"></a>
-<span class="sourceLineNo">562</span>   * &lt;p&gt;<a name="line.562"></a>
-<span class="sourceLineNo">563</span>   * Column is split into two fields, family and qualifier.<a name="line.563"></a>
-<span class="sourceLineNo">564</span>   * @param row row key<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   * @throws IllegalArgumentException<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   */<a name="line.566"></a>
-<span class="sourceLineNo">567</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      final byte [] family, final int foffset, final int flength,<a name="line.568"></a>
-<span class="sourceLineNo">569</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      final long timestamp, final Type type,<a name="line.570"></a>
-<span class="sourceLineNo">571</span>      final byte [] value, final int voffset, final int vlength) {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    this(row, roffset, rlength, family, foffset, flength, qualifier, qoffset,<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      qlength, timestamp, type, value, voffset, vlength, null);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>  }<a name="line.574"></a>
-<span class="sourceLineNo">575</span><a name="line.575"></a>
-<span class="sourceLineNo">576</span>  /**<a name="line.576"></a>
-<span class="sourceLineNo">577</span>   * Constructs KeyValue structure filled with specified values. Uses the provided buffer as the<a name="line.577"></a>
-<span class="sourceLineNo">578</span>   * data buffer.<a name="line.578"></a>
-<span class="sourceLineNo">579</span>   * &lt;p&gt;<a name="line.579"></a>
-<span class="sourceLineNo">580</span>   * Column is split into two fields, family and qualifier.<a name="line.580"></a>
-<span class="sourceLineNo">581</span>   *<a name="line.581"></a>
-<span class="sourceLineNo">582</span>   * @param buffer the bytes buffer to use<a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * @param boffset buffer offset<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   * @param row row key<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   * @param roffset row offset<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   * @param rlength row length<a name="line.586"></a>
-<span class="sourceLineNo">587</span>   * @param family family name<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   * @param foffset family offset<a name="line.588"></a>
-<span class="sourceLineNo">589</span>   * @param flength family length<a name="line.589"></a>
-<span class="sourceLineNo">590</span>   * @param qualifier column qualifier<a name="line.590"></a>
-<span class="sourceLineNo">591</span>   * @param qoffset qualifier offset<a name="line.591"></a>
-<span class="sourceLineNo">592</span>   * @param qlength qualifier length<a name="line.592"></a>
-<span class="sourceLineNo">593</span>   * @param timestamp version timestamp<a name="line.593"></a>
-<span class="sourceLineNo">594</span>   * @param type key type<a name="line.594"></a>
-<span class="sourceLineNo">595</span>   * @param value column value<a name="line.595"></a>
-<span class="sourceLineNo">596</span>   * @param voffset value offset<a name="line.596"></a>
-<span class="sourceLineNo">597</span>   * @param vlength value length<a name="line.597"></a>
-<span class="sourceLineNo">598</span>   * @param tags non-empty list of tags or null<a name="line.598"></a>
-<span class="sourceLineNo">599</span>   * @throws IllegalArgumentException an illegal value was passed or there is insufficient space<a name="line.599"></a>
-<span class="sourceLineNo">600</span>   * remaining in the buffer<a name="line.600"></a>
-<span class="sourceLineNo">601</span>   */<a name="line.601"></a>
-<span class="sourceLineNo">602</span>  public KeyValue(byte [] buffer, final int boffset,<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      final byte [] row, final int roffset, final int rlength,<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      final byte [] family, final int foffset, final int flength,<a name="line.604"></a>
-<span class="sourceLineNo">605</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.605"></a>
-<span class="sourceLineNo">606</span>      final long timestamp, final Type type,<a name="line.606"></a>
-<span class="sourceLineNo">607</span>      final byte [] value, final int voffset, final int vlength,<a name="line.607"></a>
-<span class="sourceLineNo">608</span>      final Tag[] tags) {<a name="line.608"></a>
-<span class="sourceLineNo">609</span>     this.bytes  = buffer;<a name="line.609"></a>
-<span class="sourceLineNo">610</span>     this.length = writeByteArray(buffer, boffset,<a name="line.610"></a>
-<span class="sourceLineNo">611</span>         row, roffset, rlength,<a name="line.611"></a>
-<span class="sourceLineNo">612</span>         family, foffset, flength, qualifier, qoffset, qlength,<a name="line.612"></a>
-<span class="sourceLineNo">613</span>        timestamp, type, value, voffset, vlength, tags);<a name="line.613"></a>
-<span class="sourceLineNo">614</span>     this.offset = boffset;<a name="line.614"></a>
-<span class="sourceLineNo">615</span>   }<a name="line.615"></a>
-<span class="sourceLineNo">616</span><a name="line.616"></a>
-<span class="sourceLineNo">617</span>  /**<a name="line.617"></a>
-<span class="sourceLineNo">618</span>   * Constructs KeyValue structure filled with specified values.<a name="line.618"></a>
-<span class="sourceLineNo">619</span>   * &lt;p&gt;<a name="line.619"></a>
-<span class="sourceLineNo">620</span>   * Column is split into two fields, family and qualifier.<a name="line.620"></a>
-<span class="sourceLineNo">621</span>   * @param row row key<a name="line.621"></a>
-<span class="sourceLineNo">622</span>   * @param roffset row offset<a name="line.622"></a>
-<span class="sourceLineNo">623</span>   * @param rlength row length<a name="line.623"></a>
-<span class="sourceLineNo">624</span>   * @param family family name<a name="line.624"></a>
-<span class="sourceLineNo">625</span>   * @param foffset family offset<a name="line.625"></a>
-<span class="sourceLineNo">626</span>   * @param flength family length<a name="line.626"></a>
-<span class="sourceLineNo">627</span>   * @param qualifier column qualifier<a name="line.627"></a>
-<span class="sourceLineNo">628</span>   * @param qoffset qualifier offset<a name="line.628"></a>
-<span class="sourceLineNo">629</span>   * @param qlength qualifier length<a name="line.629"></a>
-<span class="sourceLineNo">630</span>   * @param timestamp version timestamp<a name="line.630"></a>
-<span class="sourceLineNo">631</span>   * @param type key type<a name="line.631"></a>
-<span class="sourceLineNo">632</span>   * @param value column value<a name="line.632"></a>
-<span class="sourceLineNo">633</span>   * @param voffset value offset<a name="line.633"></a>
-<span class="sourceLineNo">634</span>   * @param vlength value length<a name="line.634"></a>
-<span class="sourceLineNo">635</span>   * @param tags tags<a name="line.635"></a>
-<span class="sourceLineNo">636</span>   * @throws IllegalArgumentException<a name="line.636"></a>
-<span class="sourceLineNo">637</span>   */<a name="line.637"></a>
-<span class="sourceLineNo">638</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      final byte [] family, final int foffset, final int flength,<a name="line.639"></a>
-<span class="sourceLineNo">640</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      final long timestamp, final Type type,<a name="line.641"></a>
-<span class="sourceLineNo">642</span>      final byte [] value, final int voffset, final int vlength,<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      final List&lt;Tag&gt; tags) {<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    this.bytes = createByteArray(row, roffset, rlength,<a name="line.644"></a>
-<span class="sourceLineNo">645</span>        family, foffset, flength, qualifier, qoffset, qlength,<a name="line.645"></a>
-<span class="sourceLineNo">646</span>        timestamp, type, value, voffset, vlength, tags);<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    this.length = bytes.length;<a name="line.647"></a>
-<span class="sourceLineNo">648</span>    this.offset = 0;<a name="line.648"></a>
-<span class="sourceLineNo">649</span>  }<a name="line.649"></a>
-<span class="sourceLineNo">650</span><a name="line.650"></a>
-<span class="sourceLineNo">651</span>  /**<a name="line.651"></a>
-<span class="sourceLineNo">652</span>   * @param row<a name="line.652"></a>
-<span class="sourceLineNo">653</span>   * @param roffset<a name="line.653"></a>
-<span class="sourceLineNo">654</span>   * @param rlength<a name="line.654"></a>
-<span class="sourceLineNo">655</span>   * @param family<a name="line.655"></a>
-<span class="sourceLineNo">656</span>   * @param foffset<a name="line.656"></a>
-<span class="sourceLineNo">657</span>   * @param flength<a name="line.657"></a>
-<span class="sourceLineNo">658</span>   * @param qualifier<a name="line.658"></a>
-<span class="sourceLineNo">659</span>   * @param qoffset<a name="line.659"></a>
-<span class="sourceLineNo">660</span>   * @param qlength<a name="line.660"></a>
-<span class="sourceLineNo">661</span>   * @param timestamp<a name="line.661"></a>
-<span class="sourceLineNo">662</span>   * @param type<a name="line.662"></a>
-<span class="sourceLineNo">663</span>   * @param value<a name="line.663"></a>
-<span class="sourceLineNo">664</span>   * @param voffset<a name="line.664"></a>
-<span class="sourceLineNo">665</span>   * @param vlength<a name="line.665"></a>
-<span class="sourceLineNo">666</span>   * @param tags<a name="line.666"></a>
-<span class="sourceLineNo">667</span>   */<a name="line.667"></a>
-<span class="sourceLineNo">668</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.668"></a>
-<span class="sourceLineNo">669</span>      final byte [] family, final int foffset, final int flength,<a name="line.669"></a>
-<span class="sourceLineNo">670</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.670"></a>
-<span class="sourceLineNo">671</span>      final long timestamp, final Type type,<a name="line.671"></a>
-<span class="sourceLineNo">672</span>      final byte [] value, final int voffset, final int vlength,<a name="line.672"></a>
-<span class="sourceLineNo">673</span>      final byte[] tags, final int tagsOffset, final int tagsLength) {<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    this.bytes = createByteArray(row, roffset, rlength,<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        family, foffset, flength, qualifier, qoffset, qlength,<a name="line.675"></a>
-<span class="sourceLineNo">676</span>        timestamp, type, value, voffset, vlength, tags, tagsOffset, tagsLength);<a name="line.676"></a>
-<span class="sourceLineNo">677</span>    this.length = bytes.length;<a name="line.677"></a>
-<span class="sourceLineNo">678</span>    this.offset = 0;<a name="line.678"></a>
-<span class="sourceLineNo">679</span>  }<a name="line.679"></a>
-<span class="sourceLineNo">680</span><a name="line.680"></a>
-<span class="sourceLineNo">681</span>  /**<a name="line.681"></a>
-<span class="sourceLineNo">682</span>   * Constructs an empty KeyValue structure, with specified sizes.<a name="line.682"></a>
-<span class="sourceLineNo">683</span>   * This can be used to partially fill up KeyValues.<a name="line.683"></a>
-<span class="sourceLineNo">684</span>   * &lt;p&gt;<a name="line.684"></a>
-<span class="sourceLineNo">685</span>   * Column is split into two fields, family and qualifier.<a name="line.685"></a>
-<span class="sourceLineNo">686</span>   * @param rlength row length<a name="line.686"></a>
-<span class="sourceLineNo">687</span>   * @param flength family length<a name="line.687"></a>
-<span class="sourceLineNo">688</span>   * @param qlength qualifier length<a name="line.688"></a>
-<span class="sourceLineNo">689</span>   * @param timestamp version timestamp<a name="line.689"></a>
-<span class="sourceLineNo">690</span>   * @param type key type<a name="line.690"></a>
-<span class="sourceLineNo">691</span>   * @param vlength value length<a name="line.691"></a>
-<span class="sourceLineNo">692</span>   * @throws IllegalArgumentException<a name="line.692"></a>
-<span class="sourceLineNo">693</span>   */<a name="line.693"></a>
-<span class="sourceLineNo">694</span>  public KeyValue(final int rlength,<a name="line.694"></a>
-<span class="sourceLineNo">695</span>      final int flength,<a name="line.695"></a>
-<span class="sourceLineNo">696</span>      final int qlength,<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      final long timestamp, final Type type,<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      final int vlength) {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>    this(rlength, flength, qlength, timestamp, type, vlength, 0);<a name="line.699"></a>
-<span class="sourceLineNo">700</span>  }<a name="line.700"></a>
-<span class="sourceLineNo">701</span><a name="line.701"></a>
-<span class="sourceLineNo">702</span>  /**<a name="line.702"></a>
-<span class="sourceLineNo">703</span>   * Constructs an empty KeyValue structure, with specified sizes.<a name="line.703"></a>
-<span class="sourceLineNo">704</span>   * This can be used to partially fill up KeyValues.<a name="line.704"></a>
-<span class="sourceLineNo">705</span>   * &lt;p&gt;<a name="line.705"></a>
-<span class="sourceLineNo">706</span>   * Column is split into two fields, family and qualifier.<a name="line.706"></a>
-<span class="sourceLineNo">707</span>   * @param rlength row length<a name="line.707"></a>
-<span class="sourceLineNo">708</span>   * @param flength family length<a name="line.708"></a>
-<span class="sourceLineNo">709</span>   * @param qlength qualifier length<a name="line.709"></a>
-<span class="sourceLineNo">710</span>   * @param timestamp version timestamp<a name="line.710"></a>
-<span class="sourceLineNo">711</span>   * @param type key type<a name="line.711"></a>
-<span class="sourceLineNo">712</span>   * @param vlength value length<a name="line.712"></a>
-<span class="sourceLineNo">713</span>   * @param tagsLength<a name="line.713"></a>
-<span class="sourceLineNo">714</span>   * @throws IllegalArgumentException<a name="line.714"></a>
-<span class="sourceLineNo">715</span>   */<a name="line.715"></a>
-<span class="sourceLineNo">716</span>  public KeyValue(final int rlength,<a name="line.716"></a>
-<span class="sourceLineNo">717</span>      final int flength,<a name="line.717"></a>
-<span class="sourceLineNo">718</span>      final int qlength,<a name="line.718"></a>
-<span class="sourceLineNo">719</span>      final long timestamp, final Type type,<a name="line.719"></a>
-<span class="sourceLineNo">720</span>      final int vlength, final int tagsLength) {<a name="line.720"></a>
-<span class="sourceLineNo">721</span>    this.bytes = createEmptyByteArray(rlength, flength, qlength, timestamp, type, vlength,<a name="line.721"></a>
-<span class="sourceLineNo">722</span>        tagsLength);<a name="line.722"></a>
-<span class="sourceLineNo">723</span>    this.length = bytes.length;<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    this.offset = 0;<a name="line.724"></a>
-<span class="sourceLineNo">725</span>  }<a name="line.725"></a>
-<span class="sourceLineNo">726</span><a name="line.726"></a>
-<span class="sourceLineNo">727</span><a name="line.727"></a>
-<span class="sourceLineNo">728</span>  public KeyValue(byte[] row, int roffset, int rlength,<a name="line.728"></a>
-<span class="sourceLineNo">729</span>                  byte[] family, int foffset, int flength,<a name="line.729"></a>
-<span class="sourceLineNo">730</span>                  ByteBuffer qualifier, long ts, Type type, ByteBuffer value, List&lt;Tag&gt; tags) {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    this.bytes = createByteArray(row, roffset, rlength, family, foffset, flength,<a name="line.731"></a>
-<span class="sourceLineNo">732</span>        qualifier, 0, qualifier == null ? 0 : qualifier.remaining(), ts, type,<a name="line.732"></a>
-<span class="sourceLineNo">733</span>        value, 0, value == null ? 0 : value.remaining(), tags);<a name="line.733"></a>
-<span class="sourceLineNo">734</span>    this.length = bytes.length;<a name="line.734"></a>
-<span class="sourceLineNo">735</span>    this.offset = 0;<a name="line.735"></a>
-<span class="sourceLineNo">736</span>  }<a name="line.736"></a>
+<span class="sourceLineNo">378</span>   * @param timestamp<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   */<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  public KeyValue(final byte [] row, final long timestamp, Type type) {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    this(row, null, null, timestamp, type, null);<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>
+<span class="sourceLineNo">385</span>   * Constructs KeyValue structure filled with null value.<a name="line.385"></a>
+<span class="sourceLineNo">386</span>   * Sets type to {@link KeyValue.Type#Maximum}<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * @param row - row key (arbitrary byte array)<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * @param family family name<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * @param qualifier column qualifier<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   */<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  public KeyValue(final byte [] row, final byte [] family,<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      final byte [] qualifier) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    this(row, family, qualifier, HConstants.LATEST_TIMESTAMP, Type.Maximum);<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>   * Constructs KeyValue structure as a put filled with specified values and<a name="line.397"></a>
+<span class="sourceLineNo">398</span>   * LATEST_TIMESTAMP.<a name="line.398"></a>
+<span class="sourceLineNo">399</span>   * @param row - row key (arbitrary byte array)<a name="line.399"></a>
+<span class="sourceLineNo">400</span>   * @param family family name<a name="line.400"></a>
+<span class="sourceLineNo">401</span>   * @param qualifier column qualifier<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
+<span class="sourceLineNo">403</span>  public KeyValue(final byte [] row, final byte [] family,<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      final byte [] qualifier, final byte [] value) {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    this(row, family, qualifier, HConstants.LATEST_TIMESTAMP, Type.Put, value);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  }<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>  /**<a name="line.408"></a>
+<span class="sourceLineNo">409</span>   * Constructs KeyValue structure filled with specified values.<a name="line.409"></a>
+<span class="sourceLineNo">410</span>   * @param row row key<a name="line.410"></a>
+<span class="sourceLineNo">411</span>   * @param family family name<a name="line.411"></a>
+<span class="sourceLineNo">412</span>   * @param qualifier column qualifier<a name="line.412"></a>
+<span class="sourceLineNo">413</span>   * @param timestamp version timestamp<a name="line.413"></a>
+<span class="sourceLineNo">414</span>   * @param type key type<a name="line.414"></a>
+<span class="sourceLineNo">415</span>   * @throws IllegalArgumentException<a name="line.415"></a>
+<span class="sourceLineNo">416</span>   */<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      final byte[] qualifier, final long timestamp, Type type) {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    this(row, family, qualifier, timestamp, type, null);<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>   * Constructs KeyValue structure filled with specified values.<a name="line.423"></a>
+<span class="sourceLineNo">424</span>   * @param row row key<a name="line.424"></a>
+<span class="sourceLineNo">425</span>   * @param family family name<a name="line.425"></a>
+<span class="sourceLineNo">426</span>   * @param qualifier column qualifier<a name="line.426"></a>
+<span class="sourceLineNo">427</span>   * @param timestamp version timestamp<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   * @param value column value<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * @throws IllegalArgumentException<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   */<a name="line.430"></a>
+<span class="sourceLineNo">431</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      final byte[] qualifier, final long timestamp, final byte[] value) {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    this(row, family, qualifier, timestamp, Type.Put, value);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  }<a name="line.434"></a>
+<span class="sourceLineNo">435</span><a name="line.435"></a>
+<span class="sourceLineNo">436</span>  /**<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   * Constructs KeyValue structure filled with specified values.<a name="line.437"></a>
+<span class="sourceLineNo">438</span>   * @param row row key<a name="line.438"></a>
+<span class="sourceLineNo">439</span>   * @param family family name<a name="line.439"></a>
+<span class="sourceLineNo">440</span>   * @param qualifier column qualifier<a name="line.440"></a>
+<span class="sourceLineNo">441</span>   * @param timestamp version timestamp<a name="line.441"></a>
+<span class="sourceLineNo">442</span>   * @param value column value<a name="line.442"></a>
+<span class="sourceLineNo">443</span>   * @param tags tags<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   * @throws IllegalArgumentException<a name="line.444"></a>
+<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
+<span class="sourceLineNo">446</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      final byte[] qualifier, final long timestamp, final byte[] value,<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      final Tag[] tags) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    this(row, family, qualifier, timestamp, value, tags != null ? Arrays.asList(tags) : null);<a name="line.449"></a>
+<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>  /**<a name="line.452"></a>
+<span class="sourceLineNo">453</span>   * Constructs KeyValue structure filled with specified values.<a name="line.453"></a>
+<span class="sourceLineNo">454</span>   * @param row row key<a name="line.454"></a>
+<span class="sourceLineNo">455</span>   * @param family family name<a name="line.455"></a>
+<span class="sourceLineNo">456</span>   * @param qualifier column qualifier<a name="line.456"></a>
+<span class="sourceLineNo">457</span>   * @param timestamp version timestamp<a name="line.457"></a>
+<span class="sourceLineNo">458</span>   * @param value column value<a name="line.458"></a>
+<span class="sourceLineNo">459</span>   * @param tags tags non-empty list of tags or null<a name="line.459"></a>
+<span class="sourceLineNo">460</span>   * @throws IllegalArgumentException<a name="line.460"></a>
+<span class="sourceLineNo">461</span>   */<a name="line.461"></a>
+<span class="sourceLineNo">462</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      final byte[] qualifier, final long timestamp, final byte[] value,<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      final List&lt;Tag&gt; tags) {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      family, 0, family==null ? 0 : family.length,<a name="line.466"></a>
+<span class="sourceLineNo">467</span>      qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      timestamp, Type.Put,<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      value, 0, value==null ? 0 : value.length, tags);<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  }<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
+<span class="sourceLineNo">472</span>  /**<a name="line.472"></a>
+<span class="sourceLineNo">473</span>   * Constructs KeyValue structure filled with specified values.<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   * @param row row key<a name="line.474"></a>
+<span class="sourceLineNo">475</span>   * @param family family name<a name="line.475"></a>
+<span class="sourceLineNo">476</span>   * @param qualifier column qualifier<a name="line.476"></a>
+<span class="sourceLineNo">477</span>   * @param timestamp version timestamp<a name="line.477"></a>
+<span class="sourceLineNo">478</span>   * @param type key type<a name="line.478"></a>
+<span class="sourceLineNo">479</span>   * @param value column value<a name="line.479"></a>
+<span class="sourceLineNo">480</span>   * @throws IllegalArgumentException<a name="line.480"></a>
+<span class="sourceLineNo">481</span>   */<a name="line.481"></a>
+<span class="sourceLineNo">482</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      final byte[] value) {<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    this(row, 0, len(row),   family, 0, len(family),   qualifier, 0, len(qualifier),<a name="line.485"></a>
+<span class="sourceLineNo">486</span>        timestamp, type,   value, 0, len(value));<a name="line.486"></a>
+<span class="sourceLineNo">487</span>  }<a name="line.487"></a>
+<span class="sourceLineNo">488</span><a name="line.488"></a>
+<span class="sourceLineNo">489</span>  /**<a name="line.489"></a>
+<span class="sourceLineNo">490</span>   * Constructs KeyValue structure filled with specified values.<a name="line.490"></a>
+<span class="sourceLineNo">491</span>   * &lt;p&gt;<a name="line.491"></a>
+<span class="sourceLineNo">492</span>   * Column is split into two fields, family and qualifier.<a name="line.492"></a>
+<span class="sourceLineNo">493</span>   * @param row row key<a name="line.493"></a>
+<span class="sourceLineNo">494</span>   * @param family family name<a name="line.494"></a>
+<span class="sourceLineNo">495</span>   * @param qualifier column qualifier<a name="line.495"></a>
+<span class="sourceLineNo">496</span>   * @param timestamp version timestamp<a name="line.496"></a>
+<span class="sourceLineNo">497</span>   * @param type key type<a name="line.497"></a>
+<span class="sourceLineNo">498</span>   * @param value column value<a name="line.498"></a>
+<span class="sourceLineNo">499</span>   * @throws IllegalArgumentException<a name="line.499"></a>
+<span class="sourceLineNo">500</span>   */<a name="line.500"></a>
+<span class="sourceLineNo">501</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.501"></a>
+<span class="sourceLineNo">502</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      final byte[] value, final List&lt;Tag&gt; tags) {<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    this(row, family, qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.504"></a>
+<span class="sourceLineNo">505</span>        timestamp, type, value, 0, value==null ? 0 : value.length, tags);<a name="line.505"></a>
+<span class="sourceLineNo">506</span>  }<a name="line.506"></a>
+<span class="sourceLineNo">507</span><a name="line.507"></a>
+<span class="sourceLineNo">508</span>  /**<a name="line.508"></a>
+<span class="sourceLineNo">509</span>   * Constructs KeyValue structure filled with specified values.<a name="line.509"></a>
+<span class="sourceLineNo">510</span>   * @param row row key<a name="line.510"></a>
+<span class="sourceLineNo">511</span>   * @param family family name<a name="line.511"></a>
+<span class="sourceLineNo">512</span>   * @param qualifier column qualifier<a name="line.512"></a>
+<span class="sourceLineNo">513</span>   * @param timestamp version timestamp<a name="line.513"></a>
+<span class="sourceLineNo">514</span>   * @param type key type<a name="line.514"></a>
+<span class="sourceLineNo">515</span>   * @param value column value<a name="line.515"></a>
+<span class="sourceLineNo">516</span>   * @throws IllegalArgumentException<a name="line.516"></a>
+<span class="sourceLineNo">517</span>   */<a name="line.517"></a>
+<span class="sourceLineNo">518</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.518"></a>
+<span class="sourceLineNo">519</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.519"></a>
+<span class="sourceLineNo">520</span>      final byte[] value, final byte[] tags) {<a name="line.520"></a>
+<span class="sourceLineNo">521</span>    this(row, family, qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.521"></a>
+<span class="sourceLineNo">522</span>        timestamp, type, value, 0, value==null ? 0 : value.length, tags);<a name="line.522"></a>
+<span class="sourceLineNo">523</span>  }<a name="line.523"></a>
+<span class="sourceLineNo">524</span><a name="line.524"></a>
+<span class="sourceLineNo">525</span>  /**<a name="line.525"></a>
+<span class="sourceLineNo">526</span>   * Constructs KeyValue structure filled with specified values.<a name="line.526"></a>
+<span class="sourceLineNo">527</span>   * @param row row key<a name="line.527"></a>
+<span class="sourceLineNo">528</span>   * @param family family name<a name="line.528"></a>
+<span class="sourceLineNo">529</span>   * @param qualifier column qualifier<a name="line.529"></a>
+<span class="sourceLineNo">530</span>   * @param qoffset qualifier offset<a name="line.530"></a>
+<span class="sourceLineNo">531</span>   * @param qlength qualifier length<a name="line.531"></a>
+<span class="sourceLineNo">532</span>   * @param timestamp version timestamp<a name="line.532"></a>
+<span class="sourceLineNo">533</span>   * @param type key type<a name="line.533"></a>
+<span class="sourceLineNo">534</span>   * @param value column value<a name="line.534"></a>
+<span class="sourceLineNo">535</span>   * @param voffset value offset<a name="line.535"></a>
+<span class="sourceLineNo">536</span>   * @param vlength value length<a name="line.536"></a>
+<span class="sourceLineNo">537</span>   * @throws IllegalArgumentException<a name="line.537"></a>
+<span class="sourceLineNo">538</span>   */<a name="line.538"></a>
+<span class="sourceLineNo">539</span>  public KeyValue(byte [] row, byte [] family,<a name="line.539"></a>
+<span class="sourceLineNo">540</span>      byte [] qualifier, int qoffset, int qlength, long timestamp, Type type,<a name="line.540"></a>
+<span class="sourceLineNo">541</span>      byte [] value, int voffset, int vlength, List&lt;Tag&gt; tags) {<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.542"></a>
+<span class="sourceLineNo">543</span>        family, 0, family==null ? 0 : family.length,<a name="line.543"></a>
+<span class="sourceLineNo">544</span>        qualifier, qoffset, qlength, timestamp, type,<a name="line.544"></a>
+<span class="sourceLineNo">545</span>        value, voffset, vlength, tags);<a name="line.545"></a>
+<span class="sourceLineNo">546</span>  }<a name="line.546"></a>
+<span class="sourceLineNo">547</span><a name="line.547"></a>
+<span class="sourceLineNo">548</span>  /**<a name="line.548"></a>
+<span class="sourceLineNo">549</span>   * @param row<a name="line.549"></a>
+<span class="sourceLineNo">550</span>   * @param family<a name="line.550"></a>
+<span class="sourceLineNo">551</span>   * @param qualifier<a name="line.551"></a>
+<span class="sourceLineNo">552</span>   * @param qoffset<a name="line.552"></a>
+<span class="sourceLineNo">553</span>   * @param qlength<a name="line.553"></a>
+<span class="sourceLineNo">554</span>   * @param timestamp<a name="line.554"></a>
+<span class="sourceLineNo">555</span>   * @param type<a name="line.555"></a>
+<span class="sourceLineNo">556</span>   * @param value<a name="line.556"></a>
+<span class="sourceLineNo">557</span>   * @param voffset<a name="line.557"></a>
+<span class="sourceLineNo">558</span>   * @param vlength<a name="line.558"></a>
+<span class="sourceLineNo">559</span>   * @param tags<a name="line.559"></a>
+<span class="sourceLineNo">560</span>   */<a name="line.560"></a>
+<span class="sourceLineNo">561</span>  public KeyValue(byte [] row, byte [] family,<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      byte [] qualifier, int qoffset, int qlength, long timestamp, Type type,<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      byte [] value, int voffset, int vlength, byte[] tags) {<a name="line.563"></a>
+<span class="sourceLineNo">564</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.564"></a>
+<span class="sourceLineNo">565</span>        family, 0, family==null ? 0 : family.length,<a name="line.565"></a>
+<span class="sourceLineNo">566</span>        qualifier, qoffset, qlength, timestamp, type,<a name="line.566"></a>
+<span class="sourceLineNo">567</span>        value, voffset, vlength, tags, 0, tags==null ? 0 : tags.length);<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>  /**<a name="line.570"></a>
+<span class="sourceLineNo">571</span>   * Constructs KeyValue structure filled with specified values.<a name="line.571"></a>
+<span class="sourceLineNo">572</span>   * &lt;p&gt;<a name="line.572"></a>
+<span class="sourceLineNo">573</span>   * Column is split into two fields, family and qualifier.<a name="line.573"></a>
+<span class="sourceLineNo">574</span>   * @param row row key<a name="line.574"></a>
+<span class="sourceLineNo">575</span>   * @throws IllegalArgumentException<a name="line.575"></a>
+<span class="sourceLineNo">576</span>   */<a name="line.576"></a>
+<span class="sourceLineNo">577</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.577"></a>
+<span class="sourceLineNo">578</span>      final byte [] family, final int foffset, final int flength,<a name="line.578"></a>
+<span class="sourceLineNo">579</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      final long timestamp, final Type type,<a name="line.580"></a>
+<span class="sourceLineNo">581</span>      final byte [] value, final int voffset, final int vlength) {<a name="line.581"></a>
+<span class="sourceLineNo">582</span>    this(row, roffset, rlength, family, foffset, flength, qualifier, qoffset,<a name="line.582"></a>
+<span class="sourceLineNo">583</span>      qlength, timestamp, type, value, voffset, vlength, null);<a name="line.583"></a>
+<span class="sourceLineNo">584</span>  }<a name="line.584"></a>
+<span class="sourceLineNo">585</span><a name="line.585"></a>
+<span class="sourceLineNo">586</span>  /**<a name="line.586"></a>
+<span class="sourceLineNo">587</span>   * Constructs KeyValue structure filled with specified values. Uses the provided buffer as the<a name="line.587"></a>
+<span class="sourceLineNo">588</span>   * data buffer.<a name="line.588"></a>
+<span class="sourceLineNo">589</span>   * &lt;p&gt;<a name="line.589"></a>
+<span class="sourceLineNo">590</span>   * Column is split into two fields, family and qualifier.<a name="line.590"></a>
+<span class="sourceLineNo">591</span>   *<a name="line.591"></a>
+<span class="sourceLineNo">592</span>   * @param buffer the bytes buffer to use<a name="line.592"></a>
+<span class="sourceLineNo">593</span>   * @param boffset buffer offset<a name="line.593"></a>
+<span class="sourceLineNo">594</span>   * @param row row key<a name="line.594"></a>
+<span class="sourceLineNo">595</span>   * @param roffset row offset<a name="line.595"></a>
+<span class="sourceLineNo">596</span>   * @param rlength row length<a name="line.596"></a>
+<span class="sourceLineNo">597</span>   * @param family family name<a name="line.597"></a>
+<span class="sourceLineNo">598</span>   * @param foffset family offset<a name="line.598"></a>
+<span class="sourceLineNo">599</span>   * @param flength family length<a name="line.599"></a>
+<span class="sourceLineNo">600</span>   * @param qualifier column qualifier<a name="line.600"></a>
+<span class="sourceLineNo">601</span>   * @param qoffset qualifier offset<a name="line.601"></a>
+<span class="sourceLineNo">602</span>   * @param qlength qualifier length<a name="line.602"></a>
+<span class="sourceLineNo">603</span>   * @param timestamp version timestamp<a name="line.603"></a>
+<span class="sourceLineNo">604</span>   * @param type key type<a name="line.604"></a>
+<span class="sourceLineNo">605</span>   * @param value column value<a name="line.605"></a>
+<span class="sourceLineNo">606</span>   * @param voffset value offset<a name="line.606"></a>
+<span class="sourceLineNo">607</span>   * @param vlength value length<a name="line.607"></a>
+<span class="sourceLineNo">608</span>   * @param tags non-empty list of tags or null<a name="line.608"></a>
+<span class="sourceLineNo">609</span>   * @throws IllegalArgumentException an illegal value was passed or there is insufficient space<a name="line.609"></a>
+<span class="sourceLineNo">610</span>   * remaining in the buffer<a name="line.610"></a>
+<span class="sourceLineNo">611</span>   */<a name="line.611"></a>
+<span class="sourceLineNo">612</span>  public KeyValue(byte [] buffer, final int boffset,<a name="line.612"></a>
+<span class="sourceLineNo">613</span>      final byte [] row, final int roffset, final int rlength,<a name="line.613"></a>
+<span class="sourceLineNo">614</span>      final byte [] family, final int foffset, final int flength,<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.615"></a>
+<span class="sourceLineNo">616</span>      final long timestamp, final Type type,<a name="line.616"></a>
+<span class="sourceLineNo">617</span>      final byte [] value, final int voffset, final int vlength,<a name="line.617"></a>
+<span class="sourceLineNo">618</span>      final Tag[] tags) {<a name="line.618"></a>
+<span class="sourceLineNo">619</span>     this.bytes  = buffer;<a name="line.619"></a>
+<span class="sourceLineNo">620</span>     this.length = writeByteArray(buffer, boffset,<a name="line.620"></a>
+<span class="sourceLineNo">621</span>         row, roffset, rlength,<a name="line.621"></a>
+<span class="sourceLineNo">622</span>         family, foffset, flength, qualifier, qoffset, qlength,<a name="line.622"></a>
+<span class="sourceLineNo">623</span>        timestamp, type, value, voffset, vlength, tags);<a name="line.623"></a>
+<span class="sourceLineNo">624</span>     this.offset = boffset;<a name="line.624"></a>
+<span class="sourceLineNo">625</span>   }<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">628</span>   * Constructs KeyValue structure filled with specified values.<a name="line.628"></a>
+<span class="sourceLineNo">629</span>   * &lt;p&gt;<a name="line.629"></a>
+<span class="sourceLineNo">630</span>   * Column is split into two fields, family and qualifier.<a name="line.630"></a>
+<span class="sourceLineNo">631</span>   * @param row row key<a name="line.631"></a>
+<span class="sourceLineNo">632</span>   * @param roffset row offset<a name="line.632"></a>
+<span class="sourceLineNo">633</span>   * @param rlength row length<a name="line.633"></a>
+<span class="sourceLineNo">634</span>   * @param family family name<a name="line.634"></a>
+<span class="sourceLineNo">635</span>   * @param foffset family offset<a name="line.635"></a>
+<span class="sourceLineNo">636</span>   * @param flength family length<a name="line.636"></a>
+<span class="sourceLineNo">637</span>   * @param qualifier column qualifier<a name="line.637"></a>
+<span class="sourceLineNo">638</span>   * @param qoffset qualifier offset<a name="line.638"></a>
+<span class="sourceLineNo">639</span>   * @param qlength qualifier length<a name="line.639"></a>
+<span class="sourceLineNo">640</span>   * @param timestamp version timestamp<a name="line.640"></a>
+<span class="sourceLineNo">641</span>   * @param type key type<a name="line.641"></a>
+<span class="sourceLineNo">642</span>   * @param value column value<a name="line.642"></a>
+<span class="sourceLineNo">643</span>   * @param voffset value offset<a name="line.643"></a>
+<span class="sourceLineNo">644</span>   * @param vlength value length<a name="line.644"></a>
+<span class="sourceLineNo">645</span>   * @param tags tags<a name="line.645"></a>
+<span class="sourceLineNo">646</span>   * @throws IllegalArgumentException<a name="line.646"></a>
+<span class="sourceLineNo">647</span>   */<a name="line.647"></a>
+<span class="sourceLineNo">648</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.648"></a>
+<span class="sourceLineNo">649</span>      final byte [] family, final int foffset, final int flength,<a name="line.649"></a>
+<span class="sourceLineNo">650</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.650"></a>
+<span class="sourceLineNo">651</span>      final long timestamp, final Type type,<a name="line.651"></a>
+<span class="sourceLineNo">652</span>      final byte [] value, final int voffset, final int vlength,<a name="line.652"></a>
+<span class="sourceLineNo">653</span>      final List&lt;Tag&gt; tags) {<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    this.bytes = createByteArray(row, roffset, rlength,<a name="line.654"></a>
+<span class="sourceLineNo">655</span>        family, foffset, flength, qualifier, qoffset, qlength,<a name="line.655"></a>
+<span class="sourceLineNo">656</span>        timestamp, type, value, voffset, vlength, tags);<a name="line.656"></a>
+<span class="sourceLineNo">657</span>    this.length = bytes.length;<a name="line.657"></a>
+<span class="sourceLineNo">658</span>    this.offset = 0;<a name="line.658"></a>
+<span class="sourceLineNo">659</span>  }<a name="line.659"></a>
+<span class="sourceLineNo">660</span><a name="line.660"></a>
+<span class="sourceLineNo">661</span>  /**<a name="line.661"></a>
+<span class="sourceLineNo">662</span>   * @param row<a name="line.662"></a>
+<span class="sourceLineNo">663</span>   * @param roffset<a name="line.663"></a>
+<span class="sourceLineNo">664</span>   * @param rlength<a name="line.664"></a>
+<span class="sourceLineNo">665</span>   * @param family<a name="line.665"></a>
+<span class="sourceLineNo">666</span>   * @param foffset<a name="line.666"></a>
+<span class="sourceLineNo">667</span>   * @param flength<a name="line.667"></a>
+<span class="sourceLineNo">668</span>   * @param qualifier<a name="line.668"></a>
+<span class="sourceLineNo">669</span>   * @param qoffset<a name="line.669"></a>
+<span class="sourceLineNo">670</span>   * @param qlength<a name="line.670"></a>
+<span class="sourceLineNo">671</span>   * @param timestamp<a name="line.671"></a>
+<span class="sourceLineNo">672</span>   * @param type<a name="line.672"></a>
+<span class="sourceLineNo">673</span>   * @param value<a name="line.673"></a>
+<span class="sourceLineNo">674</span>   * @param voffset<a name="line.674"></a>
+<span class="sourceLineNo">675</span>   * @param vlength<a name="line.675"></a>
+<span class="sourceLineNo">676</span>   * @param tags<a name="line.676"></a>
+<span class="sourceLineNo">677</span>   */<a name="line.677"></a>
+<span class="sourceLineNo">678</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.678"></a>
+<span class="sourceLineNo">679</span>      final byte [] family, final int foffset, final int flength,<a name="line.679"></a>
+<span class="sourceLineNo">680</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.680"></a>
+<span class="sourceLineNo">681</span>      final long timestamp, final Type type,<a name="line.681"></a>
+<span class="sourceLineNo">682</span>      final byte [] value, final int voffset, final int vlength,<a name="line.682"></a>
+<span class="sourceLineNo">683</span>      final byte[] tags, final int tagsOffset, final int tagsLength) {<a name="line.683"></a>
+<span class="sourceLineNo">684</span>    this.bytes = createByteArray(row, roffset, rlength,<a name="line.684"></a>
+<span class="sourceLineNo">685</span>        family, foffset, flength, qualifier, qoffset, qlength,<a name="line.685"></a>
+<span class="sourceLineNo">686</span>        timestamp, type, value, voffset, vlength, tags, tagsOffset, tagsLength);<a name="line.686"></a>
+<span class="sourceLineNo">687</span>    this.length = bytes.length;<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    this.offset = 0;<a name="line.688"></a>
+<span class="sourceLineNo">689</span>  }<a name="line.689"></a>
+<span class="sourceLineNo">690</span><a name="line.690"></a>
+<span class="sourceLineNo">691</span>  /**<a name="line.691"></a>
+<span class="sourceLineNo">692</span>   * Constructs an empty KeyValue structure, with specified sizes.<a name="line.692"></a>
+<span class="sourceLineNo">693</span>   * This can be used to partially fill up KeyValues.<a name="line.693"></a>
+<span class="sourceLineNo">694</span>   * &lt;p&gt;<a name="line.694"></a>
+<span class="sourceLineNo">695</span>   * Column is split into two fields, family and qualifier.<a name="line.695"></a>
+<span class="sourceLineNo">696</span>   * @param rlength row length<a name="line.696"></a>
+<span class="sourceLineNo">697</span>   * @param flength family length<a name="line.697"></a>
+<span class="sourceLineNo">698</span>   * @param qlength qualifier length<a name="line.698"></a>
+<span class="sourceLineNo">699</span>   * @param timestamp version timestamp<a name="line.699"></a>
+<span class="sourceLineNo">700</span>   * @param type key type<a name="line.700"></a>
+<span class="sourceLineNo">701</span>   * @param vlength value length<a name="line.701"></a>
+<span class="sourceLineNo">702</span>   * @throws IllegalArgumentException<a name="line.702"></a>
+<span class="sourceLineNo">703</span>   */<a name="line.703"></a>
+<span class="sourceLineNo">704</span>  public KeyValue(final int rlength,<a name="line.704"></a>
+<span class="sourceLineNo">705</span>      final int flength,<a name="line.705"></a>
+<span class="sourceLineNo">706</span>      final int qlength,<a name="line.706"></a>
+<span class="sourceLineNo">707</span>      final long timestamp, final Type type,<a name="line.707"></a>
+<span class="sourceLineNo">708</span>      final int vlength) {<a name="line.708"></a>
+<span class="sourceLineNo">709</span>    this(rlength,

<TRUNCATED>

[22/29] hbase-site git commit: Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html b/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html
index 3c7146a..f8e4b11 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/package-tree.html
@@ -160,8 +160,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeer.PeerState.html" title="enum in org.apache.hadoop.hbase.replication"><span class="typeNameLink">ReplicationPeer.PeerState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/SyncReplicationState.html" title="enum in org.apache.hadoop.hbase.replication"><span class="typeNameLink">SyncReplicationState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.replication.<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeer.PeerState.html" title="enum in org.apache.hadoop.hbase.replication"><span class="typeNameLink">ReplicationPeer.PeerState</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
index cd3870f..30c4e73 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
@@ -207,8 +207,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.WorkerState.html" title="enum in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">ReplicationSourceShipper.WorkerState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsReplicationSourceFactoryImpl.SourceHolder.html" title="enum in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">MetricsReplicationSourceFactoryImpl.SourceHolder</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceShipper.WorkerState.html" title="enum in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">ReplicationSourceShipper.WorkerState</span></a></li>
 </ul>
 </li>
 </ul>

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

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

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

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


[04/29] hbase-site git commit: Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/testdevapidocs/src-html/org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.html
index 6f09c2f..29b7b3a 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.html
@@ -340,7 +340,7 @@
 <span class="sourceLineNo">332</span>    byte[] family = new byte[0];<a name="line.332"></a>
 <span class="sourceLineNo">333</span>    byte[] qualifier = new byte[0];<a name="line.333"></a>
 <span class="sourceLineNo">334</span>    byte[] value = new byte[0];<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    KeyValue expectedKV = new KeyValue(row, family, qualifier, -1L, Type.Put, value);<a name="line.335"></a>
+<span class="sourceLineNo">335</span>    KeyValue expectedKV = new KeyValue(row, family, qualifier, 1L, Type.Put, value);<a name="line.335"></a>
 <span class="sourceLineNo">336</span>    kvList.add(expectedKV);<a name="line.336"></a>
 <span class="sourceLineNo">337</span>    DataBlockEncoding encoding = DataBlockEncoding.ROW_INDEX_V1;<a name="line.337"></a>
 <span class="sourceLineNo">338</span>    DataBlockEncoder encoder = encoding.getEncoder();<a name="line.338"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.CacheOnWriteType.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.CacheOnWriteType.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.CacheOnWriteType.html
index 7b81e16..80b55e7 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.CacheOnWriteType.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.CacheOnWriteType.html
@@ -400,11 +400,11 @@
 <span class="sourceLineNo">392</span>        tags[0] = t;<a name="line.392"></a>
 <span class="sourceLineNo">393</span>        kv =<a name="line.393"></a>
 <span class="sourceLineNo">394</span>            new KeyValue(row, 0, row.length, cf, 0, cf.length, qualifier, 0, qualifier.length,<a name="line.394"></a>
-<span class="sourceLineNo">395</span>                rand.nextLong(), generateKeyType(rand), value, 0, value.length, tagList);<a name="line.395"></a>
+<span class="sourceLineNo">395</span>                Math.abs(rand.nextLong()), generateKeyType(rand), value, 0, value.length, tagList);<a name="line.395"></a>
 <span class="sourceLineNo">396</span>      } else {<a name="line.396"></a>
 <span class="sourceLineNo">397</span>        kv =<a name="line.397"></a>
 <span class="sourceLineNo">398</span>            new KeyValue(row, 0, row.length, cf, 0, cf.length, qualifier, 0, qualifier.length,<a name="line.398"></a>
-<span class="sourceLineNo">399</span>                rand.nextLong(), generateKeyType(rand), value, 0, value.length);<a name="line.399"></a>
+<span class="sourceLineNo">399</span>                Math.abs(rand.nextLong()), generateKeyType(rand), value, 0, value.length);<a name="line.399"></a>
 <span class="sourceLineNo">400</span>      }<a name="line.400"></a>
 <span class="sourceLineNo">401</span>      sfw.append(kv);<a name="line.401"></a>
 <span class="sourceLineNo">402</span>    }<a name="line.402"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.html
index 7b81e16..80b55e7 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestCacheOnWrite.html
@@ -400,11 +400,11 @@
 <span class="sourceLineNo">392</span>        tags[0] = t;<a name="line.392"></a>
 <span class="sourceLineNo">393</span>        kv =<a name="line.393"></a>
 <span class="sourceLineNo">394</span>            new KeyValue(row, 0, row.length, cf, 0, cf.length, qualifier, 0, qualifier.length,<a name="line.394"></a>
-<span class="sourceLineNo">395</span>                rand.nextLong(), generateKeyType(rand), value, 0, value.length, tagList);<a name="line.395"></a>
+<span class="sourceLineNo">395</span>                Math.abs(rand.nextLong()), generateKeyType(rand), value, 0, value.length, tagList);<a name="line.395"></a>
 <span class="sourceLineNo">396</span>      } else {<a name="line.396"></a>
 <span class="sourceLineNo">397</span>        kv =<a name="line.397"></a>
 <span class="sourceLineNo">398</span>            new KeyValue(row, 0, row.length, cf, 0, cf.length, qualifier, 0, qualifier.length,<a name="line.398"></a>
-<span class="sourceLineNo">399</span>                rand.nextLong(), generateKeyType(rand), value, 0, value.length);<a name="line.399"></a>
+<span class="sourceLineNo">399</span>                Math.abs(rand.nextLong()), generateKeyType(rand), value, 0, value.length);<a name="line.399"></a>
 <span class="sourceLineNo">400</span>      }<a name="line.400"></a>
 <span class="sourceLineNo">401</span>      sfw.append(kv);<a name="line.401"></a>
 <span class="sourceLineNo">402</span>    }<a name="line.402"></a>


[27/29] hbase-site git commit: Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/checkstyle.rss
----------------------------------------------------------------------
diff --git a/checkstyle.rss b/checkstyle.rss
index af66de1..ed61d9f 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -26,7 +26,7 @@ under the License.
     <copyright>&#169;2007 - 2018 The Apache Software Foundation</copyright>
     <item>
       <title>File: 3823,
-             Errors: 14663,
+             Errors: 14668,
              Warnings: 0,
              Infos: 0
       </title>
@@ -10303,7 +10303,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  3
+                  9
                 </td>
               </tr>
                           <tr>
@@ -16239,7 +16239,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  29
+                  28
                 </td>
               </tr>
                           <tr>

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

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

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

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index dbca586..ab0aec9 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -3831,7 +3831,7 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#date">date</a></code></td>
-<td class="colLast"><code>"Thu Dec 20 10:41:19 UTC 2018"</code></td>
+<td class="colLast"><code>"Fri Dec 21 17:43:39 UTC 2018"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.revision">
@@ -3845,7 +3845,7 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#srcChecksum">srcChecksum</a></code></td>
-<td class="colLast"><code>"cac6c13f455cde23001f256bae768095"</code></td>
+<td class="colLast"><code>"e8a6d48f3e561a4ebcc03375fa9805fd"</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/13ae5225/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index 5e273aa..68287ad 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -8018,6 +8018,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreScanner.html#bytesRead">bytesRead</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreScanner</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/KeyValueUtil.html#bytesToHex-byte:A-int-int-">bytesToHex(byte[], int, int)</a></span> - Static method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/KeyValueUtil.html" title="class in org.apache.hadoop.hbase">KeyValueUtil</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/Bytes.html#bytesToVint-byte:A-">bytesToVint(byte[])</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/Bytes.html" title="class in org.apache.hadoop.hbase.util">Bytes</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/util/ByteStringer.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">ByteStringer</span></a> - Class in <a href="org/apache/hadoop/hbase/util/package-summary.html">org.apache.hadoop.hbase.util</a></dt>
@@ -10831,6 +10833,8 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.HFileScannerImpl.html#checkKeyLen-int-">checkKeyLen(int)</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.HFileScannerImpl.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileReaderImpl.HFileScannerImpl</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/KeyValueUtil.html#checkKeyValueBytes-byte:A-int-int-boolean-">checkKeyValueBytes(byte[], int, int, boolean)</a></span> - Static method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/KeyValueUtil.html" title="class in org.apache.hadoop.hbase">KeyValueUtil</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.HFileScannerImpl.html#checkKeyValueLen--">checkKeyValueLen()</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.HFileScannerImpl.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileReaderImpl.HFileScannerImpl</a></dt>
 <dd>
 <div class="block">Check key and value lengths are wholesome.</div>
@@ -20317,6 +20321,10 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/filter/KeyOnlyFilter.html#createKeyOnlyCell-org.apache.hadoop.hbase.Cell-">createKeyOnlyCell(Cell)</a></span> - Method in class org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/KeyOnlyFilter.html" title="class in org.apache.hadoop.hbase.filter">KeyOnlyFilter</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/KeyValueUtil.html#createKeyValueFromInputStream-java.io.InputStream-boolean-">createKeyValueFromInputStream(InputStream, boolean)</a></span> - Static method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/KeyValueUtil.html" title="class in org.apache.hadoop.hbase">KeyValueUtil</a></dt>
+<dd>
+<div class="block">Create a KeyValue reading from the raw InputStream.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/KeyValueUtil.html#createKeyValueFromKey-byte:A-">createKeyValueFromKey(byte[])</a></span> - Static method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/KeyValueUtil.html" title="class in org.apache.hadoop.hbase">KeyValueUtil</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/KeyValueUtil.html#createKeyValueFromKey-java.nio.ByteBuffer-">createKeyValueFromKey(ByteBuffer)</a></span> - Static method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/KeyValueUtil.html" title="class in org.apache.hadoop.hbase">KeyValueUtil</a></dt>
@@ -63333,10 +63341,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html#isCorrupted-org.apache.hadoop.fs.Path-java.lang.String-org.apache.hadoop.fs.FileSystem-">isCorrupted(Path, String, FileSystem)</a></span> - Static method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKSplitLog</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/KeyValueUtil.html#iscreate-java.io.InputStream-boolean-">iscreate(InputStream, boolean)</a></span> - Static method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/KeyValueUtil.html" title="class in org.apache.hadoop.hbase">KeyValueUtil</a></dt>
-<dd>
-<div class="block">Create a KeyValue reading from the raw InputStream.</div>
-</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tool/LoadIncrementalHFiles.html#isCreateTable--">isCreateTable()</a></span> - Method in class org.apache.hadoop.hbase.tool.<a href="org/apache/hadoop/hbase/tool/LoadIncrementalHFiles.html" title="class in org.apache.hadoop.hbase.tool">LoadIncrementalHFiles</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html#isCurrentKeyRolled--">isCurrentKeyRolled()</a></span> - Method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/AuthenticationTokenSecretManager.html" title="class in org.apache.hadoop.hbase.security.token">AuthenticationTokenSecretManager</a></dt>
@@ -65822,6 +65826,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ScheduledChore.html#isValidTime-long-">isValidTime(long)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/KeyValue.Type.html#isValidType-byte-">isValidType(byte)</a></span> - Static method in enum org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/KeyValue.Type.html" title="enum in org.apache.hadoop.hbase">KeyValue.Type</a></dt>
+<dd>
+<div class="block">True to indicate that the byte b is a valid type.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/CommonFSUtils.html#isValidWALRootDir-org.apache.hadoop.fs.Path-org.apache.hadoop.conf.Configuration-">isValidWALRootDir(Path, Configuration)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/CommonFSUtils.html" title="class in org.apache.hadoop.hbase.util">CommonFSUtils</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/visibility/VisibilityUtils.html#isVisibilityTagsPresent-org.apache.hadoop.hbase.Cell-">isVisibilityTagsPresent(Cell)</a></span> - Static method in class org.apache.hadoop.hbase.security.visibility.<a href="org/apache/hadoop/hbase/security/visibility/VisibilityUtils.html" title="class in org.apache.hadoop.hbase.security.visibility">VisibilityUtils</a></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/org/apache/hadoop/hbase/KeyValue.KVComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/KeyValue.KVComparator.html b/devapidocs/org/apache/hadoop/hbase/KeyValue.KVComparator.html
index 0e57e25..8638728 100644
--- a/devapidocs/org/apache/hadoop/hbase/KeyValue.KVComparator.html
+++ b/devapidocs/org/apache/hadoop/hbase/KeyValue.KVComparator.html
@@ -125,7 +125,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <br>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static class <a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1717">KeyValue.KVComparator</a>
+public static class <a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1727">KeyValue.KVComparator</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements org.apache.hadoop.io.RawComparator&lt;<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;, <a href="../../../../org/apache/hadoop/hbase/KeyValue.SamePrefixComparator.html" title="interface in org.apache.hadoop.hbase">KeyValue.SamePrefixComparator</a>&lt;byte[]&gt;</pre>
 <div class="block">Compare KeyValues.  When we compare KeyValues, we only compare the Key
@@ -446,7 +446,7 @@ implements org.apache.hadoop.io.RawComparator&lt;<a href="../../../../org/apache
 <ul class="blockListLast">
 <li class="blockList">
 <h4>KVComparator</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1717">KVComparator</a>()</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1727">KVComparator</a>()</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 </li>
 </ul>
@@ -464,7 +464,7 @@ implements org.apache.hadoop.io.RawComparator&lt;<a href="../../../../org/apache
 <ul class="blockList">
 <li class="blockList">
 <h4>getLegacyKeyComparatorName</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1725">getLegacyKeyComparatorName</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1735">getLegacyKeyComparatorName</a>()</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 <div class="block">The HFileV2 file format's trailer contains this class name.  We reinterpret this and
  instantiate the appropriate comparator.
@@ -481,7 +481,7 @@ implements org.apache.hadoop.io.RawComparator&lt;<a href="../../../../org/apache
 <ul class="blockList">
 <li class="blockList">
 <h4>compare</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1730">compare</a>(byte[]&nbsp;l,
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1740">compare</a>(byte[]&nbsp;l,
                    int&nbsp;loff,
                    int&nbsp;llen,
                    byte[]&nbsp;r,
@@ -500,7 +500,7 @@ implements org.apache.hadoop.io.RawComparator&lt;<a href="../../../../org/apache
 <ul class="blockList">
 <li class="blockList">
 <h4>compareRowKey</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1741">compareRowKey</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
+<pre>protected&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1751">compareRowKey</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
                             <a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;right)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 <div class="block">Compares the only the user specified portion of a Key.  This is overridden by MetaComparator.</div>
@@ -519,7 +519,7 @@ implements org.apache.hadoop.io.RawComparator&lt;<a href="../../../../org/apache
 <ul class="blockList">
 <li class="blockList">
 <h4>compareFlatKey</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1756">compareFlatKey</a>(byte[]&nbsp;left,
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1766">compareFlatKey</a>(byte[]&nbsp;left,
                           int&nbsp;loffset,
                           int&nbsp;llength,
                           byte[]&nbsp;right,
@@ -547,7 +547,7 @@ implements org.apache.hadoop.io.RawComparator&lt;<a href="../../../../org/apache
 <ul class="blockList">
 <li class="blockList">
 <h4>compareFlatKey</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1774">compareFlatKey</a>(byte[]&nbsp;left,
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1784">compareFlatKey</a>(byte[]&nbsp;left,
                           byte[]&nbsp;right)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 </li>
@@ -558,7 +558,7 @@ implements org.apache.hadoop.io.RawComparator&lt;<a href="../../../../org/apache
 <ul class="blockList">
 <li class="blockList">
 <h4>compareKey</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1779">compareKey</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1789">compareKey</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                       byte[]&nbsp;row,
                       int&nbsp;roff,
                       int&nbsp;rlen,
@@ -579,7 +579,7 @@ implements org.apache.hadoop.io.RawComparator&lt;<a href="../../../../org/apache
 <ul class="blockList">
 <li class="blockList">
 <h4>compareOnlyKeyPortion</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1830">compareOnlyKeyPortion</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1840">compareOnlyKeyPortion</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
                                  <a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;right)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 </li>
@@ -590,7 +590,7 @@ implements org.apache.hadoop.io.RawComparator&lt;<a href="../../../../org/apache
 <ul class="blockList">
 <li class="blockList">
 <h4>compare</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1839">compare</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1849">compare</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
                    <a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;right)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 <div class="block">Compares the Key of a cell -- with fields being more significant in this order:
@@ -607,7 +607,7 @@ implements org.apache.hadoop.io.RawComparator&lt;<a href="../../../../org/apache
 <ul class="blockList">
 <li class="blockList">
 <h4>compareTimestamps</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1844">compareTimestamps</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1854">compareTimestamps</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
                              <a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;right)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 </li>
@@ -618,7 +618,7 @@ implements org.apache.hadoop.io.RawComparator&lt;<a href="../../../../org/apache
 <ul class="blockList">
 <li class="blockList">
 <h4>compareRows</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1853">compareRows</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1863">compareRows</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
                        <a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;right)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 <dl>
@@ -636,7 +636,7 @@ implements org.apache.hadoop.io.RawComparator&lt;<a href="../../../../org/apache
 <ul class="blockList">
 <li class="blockList">
 <h4>compareRows</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1868">compareRows</a>(byte[]&nbsp;left,
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1878">compareRows</a>(byte[]&nbsp;left,
                        int&nbsp;loffset,
                        int&nbsp;llength,
                        byte[]&nbsp;right,
@@ -663,7 +663,7 @@ implements org.apache.hadoop.io.RawComparator&lt;<a href="../../../../org/apache
 <ul class="blockList">
 <li class="blockList">
 <h4>compareColumns</h4>
-<pre>int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1873">compareColumns</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
+<pre>int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1883">compareColumns</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
                    short&nbsp;lrowlength,
                    <a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;right,
                    short&nbsp;rrowlength)</pre>
@@ -676,7 +676,7 @@ implements org.apache.hadoop.io.RawComparator&lt;<a href="../../../../org/apache
 <ul class="blockList">
 <li class="blockList">
 <h4>compareColumns</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1878">compareColumns</a>(byte[]&nbsp;left,
+<pre>protected&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1888">compareColumns</a>(byte[]&nbsp;left,
                              int&nbsp;loffset,
                              int&nbsp;llength,
                              int&nbsp;lfamilylength,
@@ -693,7 +693,7 @@ implements org.apache.hadoop.io.RawComparator&lt;<a href="../../../../org/apache
 <ul class="blockList">
 <li class="blockList">
 <h4>compareTimestamps</h4>
-<pre>static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1893">compareTimestamps</a>(long&nbsp;ltimestamp,
+<pre>static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1903">compareTimestamps</a>(long&nbsp;ltimestamp,
                              long&nbsp;rtimestamp)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 </li>
@@ -704,7 +704,7 @@ implements org.apache.hadoop.io.RawComparator&lt;<a href="../../../../org/apache
 <ul class="blockList">
 <li class="blockList">
 <h4>compareIgnoringPrefix</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1918">compareIgnoringPrefix</a>(int&nbsp;commonPrefix,
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1928">compareIgnoringPrefix</a>(int&nbsp;commonPrefix,
                                  byte[]&nbsp;left,
                                  int&nbsp;loffset,
                                  int&nbsp;llength,
@@ -735,7 +735,7 @@ implements org.apache.hadoop.io.RawComparator&lt;<a href="../../../../org/apache
 <ul class="blockList">
 <li class="blockList">
 <h4>compareWithoutRow</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1960">compareWithoutRow</a>(int&nbsp;commonPrefix,
+<pre>private&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.1970">compareWithoutRow</a>(int&nbsp;commonPrefix,
                               byte[]&nbsp;left,
                               int&nbsp;loffset,
                               int&nbsp;llength,
@@ -762,7 +762,7 @@ implements org.apache.hadoop.io.RawComparator&lt;<a href="../../../../org/apache
 <ul class="blockList">
 <li class="blockList">
 <h4>compareFamilies</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.2042">compareFamilies</a>(byte[]&nbsp;left,
+<pre>protected&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.2052">compareFamilies</a>(byte[]&nbsp;left,
                               int&nbsp;loffset,
                               int&nbsp;lfamilylength,
                               byte[]&nbsp;right,
@@ -777,7 +777,7 @@ implements org.apache.hadoop.io.RawComparator&lt;<a href="../../../../org/apache
 <ul class="blockList">
 <li class="blockList">
 <h4>compareColumns</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.2048">compareColumns</a>(byte[]&nbsp;left,
+<pre>protected&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.2058">compareColumns</a>(byte[]&nbsp;left,
                              int&nbsp;loffset,
                              int&nbsp;lquallength,
                              byte[]&nbsp;right,
@@ -792,7 +792,7 @@ implements org.apache.hadoop.io.RawComparator&lt;<a href="../../../../org/apache
 <ul class="blockList">
 <li class="blockList">
 <h4>matchingRowColumn</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.2059">matchingRowColumn</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.2069">matchingRowColumn</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
                                  <a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;right)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 <div class="block">Compares the row and column of two keyvalues for equality</div>
@@ -811,7 +811,7 @@ implements org.apache.hadoop.io.RawComparator&lt;<a href="../../../../org/apache
 <ul class="blockList">
 <li class="blockList">
 <h4>matchingRows</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.2097">matchingRows</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.2107">matchingRows</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
                             <a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;right)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 <div class="block">Compares the row of two keyvalues for equality</div>
@@ -830,7 +830,7 @@ implements org.apache.hadoop.io.RawComparator&lt;<a href="../../../../org/apache
 <ul class="blockList">
 <li class="blockList">
 <h4>matchingRows</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.2110">matchingRows</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.2120">matchingRows</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
                              short&nbsp;lrowlength,
                              <a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;right,
                              short&nbsp;rrowlength)</pre>
@@ -852,7 +852,7 @@ implements org.apache.hadoop.io.RawComparator&lt;<a href="../../../../org/apache
 <ul class="blockList">
 <li class="blockList">
 <h4>matchingRows</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.2127">matchingRows</a>(byte[]&nbsp;left,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.2137">matchingRows</a>(byte[]&nbsp;left,
                             int&nbsp;loffset,
                             int&nbsp;llength,
                             byte[]&nbsp;right,
@@ -879,7 +879,7 @@ implements org.apache.hadoop.io.RawComparator&lt;<a href="../../../../org/apache
 <ul class="blockList">
 <li class="blockList">
 <h4>calcIndexKey</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.2132">calcIndexKey</a>(byte[]&nbsp;lastKeyOfPreviousBlock,
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.2142">calcIndexKey</a>(byte[]&nbsp;lastKeyOfPreviousBlock,
                            byte[]&nbsp;firstKeyInBlock)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 </li>
@@ -891,7 +891,7 @@ implements org.apache.hadoop.io.RawComparator&lt;<a href="../../../../org/apache
 <li class="blockList">
 <h4>getShortMidpointKey</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.2157">getShortMidpointKey</a>(byte[]&nbsp;leftKey,
+public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.2167">getShortMidpointKey</a>(byte[]&nbsp;leftKey,
                                               byte[]&nbsp;rightKey)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span class="deprecationComment">Since 0.99.2;</span></div>
 <div class="block">This is a HFile block index key optimization.</div>
@@ -910,7 +910,7 @@ public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/Ke
 <ul class="blockListLast">
 <li class="blockList">
 <h4>clone</h4>
-<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.2222">clone</a>()
+<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html#line.2232">clone</a>()
                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/CloneNotSupportedException.html?is-external=true" title="class or interface in java.lang">CloneNotSupportedException</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html b/devapidocs/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html
index 94ccf64..aebc536 100644
--- a/devapidocs/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html
+++ b/devapidocs/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.2360">KeyValue.KeyOnlyKeyValue</a>
+<pre>public static class <a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.2370">KeyValue.KeyOnlyKeyValue</a>
 extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a></pre>
 <div class="block">A simple form of KeyValue that creates a keyvalue with only the key part of the byte[]
  Mainly used in places where we need to compare two cells.  Avoids copying of bytes
@@ -437,7 +437,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockListLast">
 <li class="blockList">
 <h4>rowLen</h4>
-<pre>private&nbsp;short <a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2361">rowLen</a></pre>
+<pre>private&nbsp;short <a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2371">rowLen</a></pre>
 </li>
 </ul>
 </li>
@@ -454,7 +454,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>KeyOnlyKeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2362">KeyOnlyKeyValue</a>()</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2372">KeyOnlyKeyValue</a>()</pre>
 </li>
 </ul>
 <a name="KeyOnlyKeyValue-byte:A-">
@@ -463,7 +463,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>KeyOnlyKeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2365">KeyOnlyKeyValue</a>(byte[]&nbsp;b)</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2375">KeyOnlyKeyValue</a>(byte[]&nbsp;b)</pre>
 </li>
 </ul>
 <a name="KeyOnlyKeyValue-byte:A-int-int-">
@@ -472,7 +472,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockListLast">
 <li class="blockList">
 <h4>KeyOnlyKeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2369">KeyOnlyKeyValue</a>(byte[]&nbsp;b,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2379">KeyOnlyKeyValue</a>(byte[]&nbsp;b,
                        int&nbsp;offset,
                        int&nbsp;length)</pre>
 </li>
@@ -491,7 +491,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>set</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2376">set</a>(<a href="../../../../org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue.KeyOnlyKeyValue</a>&nbsp;keyOnlyKeyValue)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2386">set</a>(<a href="../../../../org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue.KeyOnlyKeyValue</a>&nbsp;keyOnlyKeyValue)</pre>
 </li>
 </ul>
 <a name="clear--">
@@ -500,7 +500,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>clear</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2383">clear</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2393">clear</a>()</pre>
 </li>
 </ul>
 <a name="getKeyOffset--">
@@ -509,7 +509,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>getKeyOffset</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2391">getKeyOffset</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2401">getKeyOffset</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/KeyValue.html#getKeyOffset--">getKeyOffset</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a></code></dd>
@@ -524,7 +524,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>setKey</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2402">setKey</a>(byte[]&nbsp;key,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2412">setKey</a>(byte[]&nbsp;key,
                    int&nbsp;offset,
                    int&nbsp;length)</pre>
 <div class="block">A setter that helps to avoid object creation every time and whenever
@@ -543,7 +543,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>getKey</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2410">getKey</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2420">getKey</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/KeyValue.html#getKey--">KeyValue</a></code></span></div>
 <div class="block">Do not use unless you have to. Used internally for compacting and testing. Use
  <a href="../../../../org/apache/hadoop/hbase/KeyValue.html#getRowArray--"><code>KeyValue.getRowArray()</code></a>, <a href="../../../../org/apache/hadoop/hbase/KeyValue.html#getFamilyArray--"><code>KeyValue.getFamilyArray()</code></a>, <a href="../../../../org/apache/hadoop/hbase/KeyValue.html#getQualifierArray--"><code>KeyValue.getQualifierArray()</code></a>, and
@@ -562,7 +562,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>getRowArray</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2418">getRowArray</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2428">getRowArray</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/Cell.html#getRowArray--">Cell</a></code></span></div>
 <div class="block">Contiguous raw bytes that may start at any index in the containing array. Max length is
  Short.MAX_VALUE which is 32,767 bytes.</div>
@@ -582,7 +582,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>getRowOffset</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2423">getRowOffset</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2433">getRowOffset</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/Cell.html#getRowOffset--">getRowOffset</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></dd>
@@ -599,7 +599,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>getFamilyArray</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2428">getFamilyArray</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2438">getFamilyArray</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/Cell.html#getFamilyArray--">Cell</a></code></span></div>
 <div class="block">Contiguous bytes composed of legal HDFS filename characters which may start at any index in the
  containing array. Max length is Byte.MAX_VALUE, which is 127 bytes.</div>
@@ -619,7 +619,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>getFamilyLength</h4>
-<pre>public&nbsp;byte&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2433">getFamilyLength</a>()</pre>
+<pre>public&nbsp;byte&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2443">getFamilyLength</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/Cell.html#getFamilyLength--">getFamilyLength</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></dd>
@@ -636,7 +636,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>getFamilyOffset</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2438">getFamilyOffset</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2448">getFamilyOffset</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/Cell.html#getFamilyOffset--">getFamilyOffset</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></dd>
@@ -653,7 +653,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>getQualifierArray</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2443">getQualifierArray</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2453">getQualifierArray</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/Cell.html#getQualifierArray--">Cell</a></code></span></div>
 <div class="block">Contiguous raw bytes that may start at any index in the containing array.</div>
 <dl>
@@ -672,7 +672,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>getQualifierLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2448">getQualifierLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2458">getQualifierLength</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/Cell.html#getQualifierLength--">getQualifierLength</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></dd>
@@ -689,7 +689,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>getQualifierOffset</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2453">getQualifierOffset</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2463">getQualifierOffset</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/Cell.html#getQualifierOffset--">getQualifierOffset</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></dd>
@@ -706,7 +706,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>getKeyLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2458">getKeyLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2468">getKeyLength</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/KeyValue.html#getKeyLength--">getKeyLength</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a></code></dd>
@@ -721,7 +721,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>getRowLength</h4>
-<pre>public&nbsp;short&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2463">getRowLength</a>()</pre>
+<pre>public&nbsp;short&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2473">getRowLength</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/Cell.html#getRowLength--">getRowLength</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></dd>
@@ -738,7 +738,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>getTypeByte</h4>
-<pre>public&nbsp;byte&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2468">getTypeByte</a>()</pre>
+<pre>public&nbsp;byte&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2478">getTypeByte</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/Cell.html#getTypeByte--">getTypeByte</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></dd>
@@ -757,7 +757,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>getQualifierLength</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2472">getQualifierLength</a>(int&nbsp;rlength,
+<pre>private&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2482">getQualifierLength</a>(int&nbsp;rlength,
                                int&nbsp;flength)</pre>
 </li>
 </ul>
@@ -767,7 +767,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>getTimestamp</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2477">getTimestamp</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2487">getTimestamp</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/Cell.html#getTimestamp--">getTimestamp</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></dd>
@@ -784,7 +784,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>getTimestampOffset</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2483">getTimestampOffset</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2493">getTimestampOffset</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/KeyValue.html#getTimestampOffset--">getTimestampOffset</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a></code></dd>
@@ -799,7 +799,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>getTagsArray</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2488">getTagsArray</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2498">getTagsArray</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/ExtendedCell.html#getTagsArray--">ExtendedCell</a></code></span></div>
 <div class="block">Contiguous raw bytes representing tags that may start at any index in the containing array.</div>
 <dl>
@@ -820,7 +820,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>getTagsOffset</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2493">getTagsOffset</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2503">getTagsOffset</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/KeyValue.html#getTagsOffset--">KeyValue</a></code></span></div>
 <div class="block">This returns the offset where the tag actually starts.</div>
 <dl>
@@ -841,7 +841,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>getValueArray</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2498">getValueArray</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2508">getValueArray</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/Cell.html#getValueArray--">Cell</a></code></span></div>
 <div class="block">Contiguous raw bytes that may start at any index in the containing array. Max length is
  Integer.MAX_VALUE which is 2,147,483,647 bytes.</div>
@@ -861,7 +861,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>getValueOffset</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2503">getValueOffset</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2513">getValueOffset</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/Cell.html#getValueOffset--">getValueOffset</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></dd>
@@ -878,7 +878,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>getValueLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2508">getValueLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2518">getValueLength</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/Cell.html#getValueLength--">getValueLength</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></dd>
@@ -895,7 +895,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>getTagsLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2513">getTagsLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2523">getTagsLength</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/KeyValue.html#getTagsLength--">KeyValue</a></code></span></div>
 <div class="block">This returns the total length of the tag bytes</div>
 <dl>
@@ -916,7 +916,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2518">toString</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2528">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/KeyValue.html#toString--">toString</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a></code></dd>
@@ -929,7 +929,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>hashCode</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2526">hashCode</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2536">hashCode</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/KeyValue.html#hashCode--">KeyValue</a></code></span></div>
 <div class="block">In line with <a href="../../../../org/apache/hadoop/hbase/KeyValue.html#equals-java.lang.Object-"><code>KeyValue.equals(Object)</code></a>, only uses the key portion, not the value.</div>
 <dl>
@@ -944,7 +944,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>equals</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2531">equals</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>&nbsp;other)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2541">equals</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>&nbsp;other)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/KeyValue.html#equals-java.lang.Object-">KeyValue</a></code></span></div>
 <div class="block">Needed doing 'contains' on List.  Only compares the key portion, not the value.</div>
 <dl>
@@ -959,7 +959,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockList">
 <li class="blockList">
 <h4>heapSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2536">heapSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2546">heapSize</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/KeyValue.html#heapSize--">KeyValue</a></code></span></div>
 <div class="block">HeapSize implementation
 
@@ -982,7 +982,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class
 <ul class="blockListLast">
 <li class="blockList">
 <h4>write</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2541">write</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;out,
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.KeyOnlyKeyValue.html#line.2551">write</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;out,
                  boolean&nbsp;withTags)
           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/ExtendedCell.html#write-java.io.OutputStream-boolean-">ExtendedCell</a></code></span></div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/org/apache/hadoop/hbase/KeyValue.MetaComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/KeyValue.MetaComparator.html b/devapidocs/org/apache/hadoop/hbase/KeyValue.MetaComparator.html
index 6b1768b..a9cdc9d 100644
--- a/devapidocs/org/apache/hadoop/hbase/KeyValue.MetaComparator.html
+++ b/devapidocs/org/apache/hadoop/hbase/KeyValue.MetaComparator.html
@@ -126,7 +126,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <br>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static class <a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1602">KeyValue.MetaComparator</a>
+public static class <a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1612">KeyValue.MetaComparator</a>
 extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.KVComparator.html" title="class in org.apache.hadoop.hbase">KeyValue.KVComparator</a></pre>
 <div class="block">A <a href="../../../../org/apache/hadoop/hbase/KeyValue.KVComparator.html" title="class in org.apache.hadoop.hbase"><code>KeyValue.KVComparator</code></a> for <code>hbase:meta</code> catalog table
  <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase"><code>KeyValue</code></a>s.</div>
@@ -266,7 +266,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.KVComparator.html"
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MetaComparator</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.MetaComparator.html#line.1602">MetaComparator</a>()</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.MetaComparator.html#line.1612">MetaComparator</a>()</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 </li>
 </ul>
@@ -284,7 +284,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.KVComparator.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>compare</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.MetaComparator.html#line.1608">compare</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.MetaComparator.html#line.1618">compare</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
                    <a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;right)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 <div class="block">Compare key portion of a <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase"><code>KeyValue</code></a> for keys in <code>hbase:meta</code>
@@ -303,7 +303,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.KVComparator.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>compareOnlyKeyPortion</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.MetaComparator.html#line.1613">compareOnlyKeyPortion</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.MetaComparator.html#line.1623">compareOnlyKeyPortion</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;left,
                                  <a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;right)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 <dl>
@@ -318,7 +318,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.KVComparator.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>compareRows</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.MetaComparator.html#line.1618">compareRows</a>(byte[]&nbsp;left,
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.MetaComparator.html#line.1628">compareRows</a>(byte[]&nbsp;left,
                        int&nbsp;loffset,
                        int&nbsp;llength,
                        byte[]&nbsp;right,
@@ -341,7 +341,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.KVComparator.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>getShortMidpointKey</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.MetaComparator.html#line.1675">getShortMidpointKey</a>(byte[]&nbsp;leftKey,
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.MetaComparator.html#line.1685">getShortMidpointKey</a>(byte[]&nbsp;leftKey,
                                   byte[]&nbsp;rightKey)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 <div class="block">Don't do any fancy Block Index splitting tricks.</div>
@@ -359,7 +359,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.KVComparator.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>getLegacyKeyComparatorName</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.MetaComparator.html#line.1686">getLegacyKeyComparatorName</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.MetaComparator.html#line.1696">getLegacyKeyComparatorName</a>()</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 <div class="block">The HFileV2 file format's trailer contains this class name.  We reinterpret this and
  instantiate the appropriate comparator.
@@ -378,7 +378,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.KVComparator.html"
 <ul class="blockList">
 <li class="blockList">
 <h4>clone</h4>
-<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.MetaComparator.html#line.1691">clone</a>()
+<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.MetaComparator.html#line.1701">clone</a>()
                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/CloneNotSupportedException.html?is-external=true" title="class or interface in java.lang">CloneNotSupportedException</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 <dl>
@@ -395,7 +395,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/KeyValue.KVComparator.html"
 <ul class="blockListLast">
 <li class="blockList">
 <h4>compareRowKey</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.MetaComparator.html#line.1699">compareRowKey</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;l,
+<pre>protected&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.MetaComparator.html#line.1709">compareRowKey</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;l,
                             <a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;r)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
 <div class="block">Override the row key comparison to parse and compare the meta row key parts.</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/org/apache/hadoop/hbase/KeyValue.SamePrefixComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/KeyValue.SamePrefixComparator.html b/devapidocs/org/apache/hadoop/hbase/KeyValue.SamePrefixComparator.html
index 106b13a..0d97548 100644
--- a/devapidocs/org/apache/hadoop/hbase/KeyValue.SamePrefixComparator.html
+++ b/devapidocs/org/apache/hadoop/hbase/KeyValue.SamePrefixComparator.html
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static interface <a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.2325">KeyValue.SamePrefixComparator</a>&lt;T&gt;</pre>
+<pre>public static interface <a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.2335">KeyValue.SamePrefixComparator</a>&lt;T&gt;</pre>
 <div class="block">Avoids redundant comparisons for better performance.
 
  TODO get rid of this wart</div>
@@ -164,7 +164,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockListLast">
 <li class="blockList">
 <h4>compareIgnoringPrefix</h4>
-<pre>int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.SamePrefixComparator.html#line.2330">compareIgnoringPrefix</a>(int&nbsp;commonPrefix,
+<pre>int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.SamePrefixComparator.html#line.2340">compareIgnoringPrefix</a>(int&nbsp;commonPrefix,
                           byte[]&nbsp;left,
                           int&nbsp;loffset,
                           int&nbsp;llength,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/org/apache/hadoop/hbase/KeyValue.Type.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/KeyValue.Type.html b/devapidocs/org/apache/hadoop/hbase/KeyValue.Type.html
index a3df3c1..cb032bf 100644
--- a/devapidocs/org/apache/hadoop/hbase/KeyValue.Type.html
+++ b/devapidocs/org/apache/hadoop/hbase/KeyValue.Type.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":10,"i2":9,"i3":9};
+var methods = {"i0":9,"i1":10,"i2":9,"i3":9,"i4":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";
@@ -214,12 +214,18 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?i
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/KeyValue.Type.html#getCode--">getCode</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i2" class="altColor">
+<td class="colFirst"><code>(package private) static boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/KeyValue.Type.html#isValidType-byte-">isValidType</a></span>(byte&nbsp;b)</code>
+<div class="block">True to indicate that the byte b is a valid type.</div>
+</td>
+</tr>
+<tr id="i3" class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../org/apache/hadoop/hbase/KeyValue.Type.html" title="enum in org.apache.hadoop.hbase">KeyValue.Type</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/KeyValue.Type.html#valueOf-java.lang.String-">valueOf</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
 <div class="block">Returns the enum constant of this type with the specified name.</div>
 </td>
 </tr>
-<tr id="i3" class="rowColor">
+<tr id="i4" class="altColor">
 <td class="colFirst"><code>static <a href="../../../../org/apache/hadoop/hbase/KeyValue.Type.html" title="enum in org.apache.hadoop.hbase">KeyValue.Type</a>[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/KeyValue.Type.html#values--">values</a></span>()</code>
 <div class="block">Returns an array containing the constants of this enum type, in
@@ -403,13 +409,29 @@ not permitted.)</div>
 <pre>public&nbsp;byte&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.Type.html#line.242">getCode</a>()</pre>
 </li>
 </ul>
+<a name="isValidType-byte-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>isValidType</h4>
+<pre>static&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.Type.html#line.259">isValidType</a>(byte&nbsp;b)</pre>
+<div class="block">True to indicate that the byte b is a valid type.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>b</code> - byte to check</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true or false</dd>
+</dl>
+</li>
+</ul>
 <a name="codeToType-byte-">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>codeToType</h4>
-<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.Type.html" title="enum in org.apache.hadoop.hbase">KeyValue.Type</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.Type.html#line.260">codeToType</a>(byte&nbsp;b)</pre>
+<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.Type.html" title="enum in org.apache.hadoop.hbase">KeyValue.Type</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.Type.html#line.269">codeToType</a>(byte&nbsp;b)</pre>
 <div class="block">Cannot rely on enum ordinals . They change if item is removed or moved.
  Do our own codes.</div>
 <dl>


[12/29] hbase-site git commit: Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/downloads.html
----------------------------------------------------------------------
diff --git a/downloads.html b/downloads.html
index 3eee98b..75c7a6d 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="20181220" />
+    <meta name="Date-Revision-yyyymmdd" content="20181221" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBase Downloads</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -463,7 +463,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-12-20</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-21</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/export_control.html
----------------------------------------------------------------------
diff --git a/export_control.html b/export_control.html
index 716b079..2d970c7 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="20181220" />
+    <meta name="Date-Revision-yyyymmdd" content="20181221" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Export Control
@@ -341,7 +341,7 @@ for more details.</p>
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-12-20</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-21</li>
             </p>
                 </div>
 

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

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

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

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

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

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

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/plugins.html
----------------------------------------------------------------------
diff --git a/plugins.html b/plugins.html
index 3e2147d..1cf4c7d 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="20181220" />
+    <meta name="Date-Revision-yyyymmdd" content="20181221" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.4-HBase.min.css" />
@@ -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-20</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-12-21</li>
             </p>
                 </div>
 

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

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

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

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

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

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

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

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

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

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/testdevapidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-frame.html b/testdevapidocs/allclasses-frame.html
index 9e43b9a..9b9b3db 100644
--- a/testdevapidocs/allclasses-frame.html
+++ b/testdevapidocs/allclasses-frame.html
@@ -1374,7 +1374,7 @@
 <li><a href="org/apache/hadoop/hbase/io/crypto/TestKeyProvider.html" title="class in org.apache.hadoop.hbase.io.crypto" target="classFrame">TestKeyProvider</a></li>
 <li><a href="org/apache/hadoop/hbase/io/crypto/TestKeyStoreKeyProvider.html" title="class in org.apache.hadoop.hbase.io.crypto" target="classFrame">TestKeyStoreKeyProvider</a></li>
 <li><a href="org/apache/hadoop/hbase/TestKeyValue.html" title="class in org.apache.hadoop.hbase" target="classFrame">TestKeyValue</a></li>
-<li><a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase" target="classFrame">TestKeyValue.MockKeyValue</a></li>
+<li><a href="org/apache/hadoop/hbase/TestKeyValue.FailureCase.html" title="class in org.apache.hadoop.hbase" target="classFrame">TestKeyValue.FailureCase</a></li>
 <li><a href="org/apache/hadoop/hbase/codec/TestKeyValueCodec.html" title="class in org.apache.hadoop.hbase.codec" target="classFrame">TestKeyValueCodec</a></li>
 <li><a href="org/apache/hadoop/hbase/codec/TestKeyValueCodecWithTags.html" title="class in org.apache.hadoop.hbase.codec" target="classFrame">TestKeyValueCodecWithTags</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestKeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestKeyValueHeap</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/testdevapidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-noframe.html b/testdevapidocs/allclasses-noframe.html
index 0fd34bf..57c6d26 100644
--- a/testdevapidocs/allclasses-noframe.html
+++ b/testdevapidocs/allclasses-noframe.html
@@ -1374,7 +1374,7 @@
 <li><a href="org/apache/hadoop/hbase/io/crypto/TestKeyProvider.html" title="class in org.apache.hadoop.hbase.io.crypto">TestKeyProvider</a></li>
 <li><a href="org/apache/hadoop/hbase/io/crypto/TestKeyStoreKeyProvider.html" title="class in org.apache.hadoop.hbase.io.crypto">TestKeyStoreKeyProvider</a></li>
 <li><a href="org/apache/hadoop/hbase/TestKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue</a></li>
-<li><a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue.MockKeyValue</a></li>
+<li><a href="org/apache/hadoop/hbase/TestKeyValue.FailureCase.html" title="class in org.apache.hadoop.hbase">TestKeyValue.FailureCase</a></li>
 <li><a href="org/apache/hadoop/hbase/codec/TestKeyValueCodec.html" title="class in org.apache.hadoop.hbase.codec">TestKeyValueCodec</a></li>
 <li><a href="org/apache/hadoop/hbase/codec/TestKeyValueCodecWithTags.html" title="class in org.apache.hadoop.hbase.codec">TestKeyValueCodecWithTags</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestKeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">TestKeyValueHeap</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/testdevapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index 34f18fa..0c5a341 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -2888,6 +2888,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/CacheTestUtils.ByteArrayCacheable.html#buf">buf</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/CacheTestUtils.ByteArrayCacheable.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheTestUtils.ByteArrayCacheable</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.FailureCase.html#buf">buf</a></span> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.FailureCase.html" title="class in org.apache.hadoop.hbase">TestKeyValue.FailureCase</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/ClassLoaderTestHelper.html#BUFFER_SIZE">BUFFER_SIZE</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/ClassLoaderTestHelper.html" title="class in org.apache.hadoop.hbase.util">ClassLoaderTestHelper</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/PerformanceEvaluation.BufferedMutatorTest.html#BufferedMutatorTest-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.PerformanceEvaluation.TestOptions-org.apache.hadoop.hbase.PerformanceEvaluation.Status-">BufferedMutatorTest(Connection, PerformanceEvaluation.TestOptions, PerformanceEvaluation.Status)</a></span> - Constructor for class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/PerformanceEvaluation.BufferedMutatorTest.html" title="class in org.apache.hadoop.hbase">PerformanceEvaluation.BufferedMutatorTest</a></dt>
@@ -13990,6 +13992,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancer.html#expectedLocalities">expectedLocalities</a></span> - Variable in class org.apache.hadoop.hbase.master.balancer.<a href="org/apache/hadoop/hbase/master/balancer/TestStochasticLoadBalancer.html" title="class in org.apache.hadoop.hbase.master.balancer">TestStochasticLoadBalancer</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.FailureCase.html#expectedMessage">expectedMessage</a></span> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.FailureCase.html" title="class in org.apache.hadoop.hbase">TestKeyValue.FailureCase</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/IntegrationTestLazyCfLoading.DataGenerator.html#expectedNumberOfKeys">expectedNumberOfKeys</a></span> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/IntegrationTestLazyCfLoading.DataGenerator.html" title="class in org.apache.hadoop.hbase">IntegrationTestLazyCfLoading.DataGenerator</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/quotas/TestFileSystemUtilizationChore.ExpectedRegionSizeSummationAnswer.html#ExpectedRegionSizeSummationAnswer-long-">ExpectedRegionSizeSummationAnswer(long)</a></span> - Constructor for class org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/TestFileSystemUtilizationChore.ExpectedRegionSizeSummationAnswer.html" title="class in org.apache.hadoop.hbase.quotas">TestFileSystemUtilizationChore.ExpectedRegionSizeSummationAnswer</a></dt>
@@ -14231,6 +14235,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/backup/TestIncrementalBackupMergeWithFailures.html#FAILURE_PHASE_KEY">FAILURE_PHASE_KEY</a></span> - Static variable in class org.apache.hadoop.hbase.backup.<a href="org/apache/hadoop/hbase/backup/TestIncrementalBackupMergeWithFailures.html" title="class in org.apache.hadoop.hbase.backup">TestIncrementalBackupMergeWithFailures</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.FailureCase.html#FailureCase-byte:A-int-int-boolean-java.lang.String-">FailureCase(byte[], int, int, boolean, String)</a></span> - Constructor for class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.FailureCase.html" title="class in org.apache.hadoop.hbase">TestKeyValue.FailureCase</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/TestReplicator.FailureInjectingReplicationEndpointForTest.html#FailureInjectingReplicationEndpointForTest--">FailureInjectingReplicationEndpointForTest()</a></span> - Constructor for class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/TestReplicator.FailureInjectingReplicationEndpointForTest.html" title="class in org.apache.hadoop.hbase.replication.regionserver">TestReplicator.FailureInjectingReplicationEndpointForTest</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/backup/TestIncrementalBackupMergeWithFailures.BackupMergeJobWithFailures.html#failurePhase">failurePhase</a></span> - Variable in class org.apache.hadoop.hbase.backup.<a href="org/apache/hadoop/hbase/backup/TestIncrementalBackupMergeWithFailures.BackupMergeJobWithFailures.html" title="class in org.apache.hadoop.hbase.backup">TestIncrementalBackupMergeWithFailures.BackupMergeJobWithFailures</a></dt>
@@ -17105,6 +17111,8 @@
 <dd>
 <div class="block">Given the tables and functions, return metrics names that should exist in JMX</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.FailureCase.html#getExpectedMessage--">getExpectedMessage()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.FailureCase.html" title="class in org.apache.hadoop.hbase">TestKeyValue.FailureCase</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/IntegrationTestLazyCfLoading.DataGenerator.html#getExpectedNumberOfKeys--">getExpectedNumberOfKeys()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/IntegrationTestLazyCfLoading.DataGenerator.html" title="class in org.apache.hadoop.hbase">IntegrationTestLazyCfLoading.DataGenerator</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/Waiter.html#getExplanation-org.apache.hadoop.hbase.Waiter.Predicate-">getExplanation(Waiter.Predicate&lt;?&gt;)</a></span> - Static method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/Waiter.html" title="class in org.apache.hadoop.hbase">Waiter</a></dt>
@@ -17121,8 +17129,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html#getFamilyArray--">getFamilyArray()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html" title="class in org.apache.hadoop.hbase">TestCellUtil.TestCell</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getFamilyArray--">getFamilyArray()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue.MockKeyValue</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RedundantKVGenerator.ExtendedOffheapKeyValue.html#getFamilyArray--">getFamilyArray()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RedundantKVGenerator.ExtendedOffheapKeyValue.html" title="class in org.apache.hadoop.hbase.util">RedundantKVGenerator.ExtendedOffheapKeyValue</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/cleaner/TestHFileLinkCleaner.html#getFamilyDirPath-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.TableName-java.lang.String-java.lang.String-">getFamilyDirPath(Path, TableName, String, String)</a></span> - Static method in class org.apache.hadoop.hbase.master.cleaner.<a href="org/apache/hadoop/hbase/master/cleaner/TestHFileLinkCleaner.html" title="class in org.apache.hadoop.hbase.master.cleaner">TestHFileLinkCleaner</a></dt>
@@ -17131,14 +17137,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html#getFamilyLength--">getFamilyLength()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html" title="class in org.apache.hadoop.hbase">TestCellUtil.TestCell</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getFamilyLength--">getFamilyLength()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue.MockKeyValue</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestCellUtil.NonExtendedCell.html#getFamilyOffset--">getFamilyOffset()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestCellUtil.NonExtendedCell.html" title="class in org.apache.hadoop.hbase">TestCellUtil.NonExtendedCell</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html#getFamilyOffset--">getFamilyOffset()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html" title="class in org.apache.hadoop.hbase">TestCellUtil.TestCell</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getFamilyOffset--">getFamilyOffset()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue.MockKeyValue</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RedundantKVGenerator.ExtendedOffheapKeyValue.html#getFamilyOffset--">getFamilyOffset()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RedundantKVGenerator.ExtendedOffheapKeyValue.html" title="class in org.apache.hadoop.hbase.util">RedundantKVGenerator.ExtendedOffheapKeyValue</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MockRegionServer.html#getFavoredNodesForRegion-java.lang.String-">getFavoredNodesForRegion(String)</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MockRegionServer.html" title="class in org.apache.hadoop.hbase.master">MockRegionServer</a></dt>
@@ -18362,22 +18364,16 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html#getQualifierArray--">getQualifierArray()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html" title="class in org.apache.hadoop.hbase">TestCellUtil.TestCell</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getQualifierArray--">getQualifierArray()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue.MockKeyValue</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RedundantKVGenerator.ExtendedOffheapKeyValue.html#getQualifierArray--">getQualifierArray()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RedundantKVGenerator.ExtendedOffheapKeyValue.html" title="class in org.apache.hadoop.hbase.util">RedundantKVGenerator.ExtendedOffheapKeyValue</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestCellUtil.NonExtendedCell.html#getQualifierLength--">getQualifierLength()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestCellUtil.NonExtendedCell.html" title="class in org.apache.hadoop.hbase">TestCellUtil.NonExtendedCell</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html#getQualifierLength--">getQualifierLength()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html" title="class in org.apache.hadoop.hbase">TestCellUtil.TestCell</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getQualifierLength--">getQualifierLength()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue.MockKeyValue</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestCellUtil.NonExtendedCell.html#getQualifierOffset--">getQualifierOffset()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestCellUtil.NonExtendedCell.html" title="class in org.apache.hadoop.hbase">TestCellUtil.NonExtendedCell</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html#getQualifierOffset--">getQualifierOffset()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html" title="class in org.apache.hadoop.hbase">TestCellUtil.TestCell</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getQualifierOffset--">getQualifierOffset()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue.MockKeyValue</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RedundantKVGenerator.ExtendedOffheapKeyValue.html#getQualifierOffset--">getQualifierOffset()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RedundantKVGenerator.ExtendedOffheapKeyValue.html" title="class in org.apache.hadoop.hbase.util">RedundantKVGenerator.ExtendedOffheapKeyValue</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html#getQualStr-int-">getQualStr(int)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestSeekOptimizations.html" title="class in org.apache.hadoop.hbase.regionserver">TestSeekOptimizations</a></dt>
@@ -18871,8 +18867,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html#getRowArray--">getRowArray()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html" title="class in org.apache.hadoop.hbase">TestCellUtil.TestCell</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getRowArray--">getRowArray()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue.MockKeyValue</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RedundantKVGenerator.ExtendedOffheapKeyValue.html#getRowArray--">getRowArray()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RedundantKVGenerator.ExtendedOffheapKeyValue.html" title="class in org.apache.hadoop.hbase.util">RedundantKVGenerator.ExtendedOffheapKeyValue</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/encoding/TestChangingEncoding.html#getRowKey-int-int-">getRowKey(int, int)</a></span> - Static method in class org.apache.hadoop.hbase.io.encoding.<a href="org/apache/hadoop/hbase/io/encoding/TestChangingEncoding.html" title="class in org.apache.hadoop.hbase.io.encoding">TestChangingEncoding</a></dt>
@@ -18881,16 +18875,12 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html#getRowLength--">getRowLength()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html" title="class in org.apache.hadoop.hbase">TestCellUtil.TestCell</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getRowLength--">getRowLength()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue.MockKeyValue</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.html#getRowLockInternal-byte:A-boolean-org.apache.hadoop.hbase.regionserver.Region.RowLock-">getRowLockInternal(byte[], boolean, Region.RowLock)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestAtomicOperation.MockHRegion.html" title="class in org.apache.hadoop.hbase.regionserver">TestAtomicOperation.MockHRegion</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestCellUtil.NonExtendedCell.html#getRowOffset--">getRowOffset()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestCellUtil.NonExtendedCell.html" title="class in org.apache.hadoop.hbase">TestCellUtil.NonExtendedCell</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html#getRowOffset--">getRowOffset()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html" title="class in org.apache.hadoop.hbase">TestCellUtil.TestCell</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getRowOffset--">getRowOffset()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue.MockKeyValue</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RedundantKVGenerator.ExtendedOffheapKeyValue.html#getRowOffset--">getRowOffset()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RedundantKVGenerator.ExtendedOffheapKeyValue.html" title="class in org.apache.hadoop.hbase.util">RedundantKVGenerator.ExtendedOffheapKeyValue</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Verify.VerifyReducer.html#getRowOnly-org.apache.hadoop.io.BytesWritable-">getRowOnly(BytesWritable)</a></span> - Static method in class org.apache.hadoop.hbase.test.<a href="org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Verify.VerifyReducer.html" title="class in org.apache.hadoop.hbase.test">IntegrationTestBigLinkedList.Verify.VerifyReducer</a></dt>
@@ -19062,10 +19052,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html#getSequenceId--">getSequenceId()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html" title="class in org.apache.hadoop.hbase">TestCellUtil.TestCell</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getSequenceId--">getSequenceId()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue.MockKeyValue</a></dt>
-<dd>
-<div class="block">used to achieve atomic operations in the memstore.</div>
-</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/CacheTestUtils.ByteArrayCacheable.html#getSerializedLength--">getSerializedLength()</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/CacheTestUtils.ByteArrayCacheable.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheTestUtils.ByteArrayCacheable</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/TestCacheConfig.DataCacheEntry.html#getSerializedLength--">getSerializedLength()</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/TestCacheConfig.DataCacheEntry.html" title="class in org.apache.hadoop.hbase.io.hfile">TestCacheConfig.DataCacheEntry</a></dt>
@@ -19623,26 +19609,16 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html#getTagsArray--">getTagsArray()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html" title="class in org.apache.hadoop.hbase">TestCellUtil.TestCell</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getTagsArray--">getTagsArray()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue.MockKeyValue</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RedundantKVGenerator.ExtendedOffheapKeyValue.html#getTagsArray--">getTagsArray()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RedundantKVGenerator.ExtendedOffheapKeyValue.html" title="class in org.apache.hadoop.hbase.util">RedundantKVGenerator.ExtendedOffheapKeyValue</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestCellUtil.NonExtendedCell.html#getTagsLength--">getTagsLength()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestCellUtil.NonExtendedCell.html" title="class in org.apache.hadoop.hbase">TestCellUtil.NonExtendedCell</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html#getTagsLength--">getTagsLength()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html" title="class in org.apache.hadoop.hbase">TestCellUtil.TestCell</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getTagsLength--">getTagsLength()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue.MockKeyValue</a></dt>
-<dd>
-<div class="block">This returns the total length of the tag bytes</div>
-</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestCellUtil.NonExtendedCell.html#getTagsOffset--">getTagsOffset()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestCellUtil.NonExtendedCell.html" title="class in org.apache.hadoop.hbase">TestCellUtil.NonExtendedCell</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html#getTagsOffset--">getTagsOffset()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html" title="class in org.apache.hadoop.hbase">TestCellUtil.TestCell</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getTagsOffset--">getTagsOffset()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue.MockKeyValue</a></dt>
-<dd>
-<div class="block">This returns the offset where the tag actually starts.</div>
-</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RedundantKVGenerator.ExtendedOffheapKeyValue.html#getTagsOffset--">getTagsOffset()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RedundantKVGenerator.ExtendedOffheapKeyValue.html" title="class in org.apache.hadoop.hbase.util">RedundantKVGenerator.ExtendedOffheapKeyValue</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/visibility/ExpAsStringVisibilityLabelServiceImpl.html#getTagValuePartAsShort-org.apache.hadoop.hbase.Tag-int-">getTagValuePartAsShort(Tag, int)</a></span> - Static method in class org.apache.hadoop.hbase.security.visibility.<a href="org/apache/hadoop/hbase/security/visibility/ExpAsStringVisibilityLabelServiceImpl.html" title="class in org.apache.hadoop.hbase.security.visibility">ExpAsStringVisibilityLabelServiceImpl</a></dt>
@@ -19718,8 +19694,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html#getTimestamp--">getTimestamp()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html" title="class in org.apache.hadoop.hbase">TestCellUtil.TestCell</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getTimestamp--">getTimestamp()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue.MockKeyValue</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/TestProcedureSuspended.TestLockProcedure.html#getTimestamps--">getTimestamps()</a></span> - Method in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/TestProcedureSuspended.TestLockProcedure.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureSuspended.TestLockProcedure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/IntegrationTestLazyCfLoading.DataGenerator.html#getTotalNumberOfKeys--">getTotalNumberOfKeys()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/IntegrationTestLazyCfLoading.DataGenerator.html" title="class in org.apache.hadoop.hbase">IntegrationTestLazyCfLoading.DataGenerator</a></dt>
@@ -19758,8 +19732,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html#getTypeByte--">getTypeByte()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html" title="class in org.apache.hadoop.hbase">TestCellUtil.TestCell</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getTypeByte--">getTypeByte()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue.MockKeyValue</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/quotas/TestQuotaTableUtil.html#getUniqueTableName--">getUniqueTableName()</a></span> - Method in class org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/TestQuotaTableUtil.html" title="class in org.apache.hadoop.hbase.quotas">TestQuotaTableUtil</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HBaseTestCase.html#getUnitTestdir-java.lang.String-">getUnitTestdir(String)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseTestCase.html" title="class in org.apache.hadoop.hbase">HBaseTestCase</a></dt>
@@ -19806,8 +19778,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html#getValueArray--">getValueArray()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html" title="class in org.apache.hadoop.hbase">TestCellUtil.TestCell</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getValueArray--">getValueArray()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue.MockKeyValue</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RedundantKVGenerator.ExtendedOffheapKeyValue.html#getValueArray--">getValueArray()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RedundantKVGenerator.ExtendedOffheapKeyValue.html" title="class in org.apache.hadoop.hbase.util">RedundantKVGenerator.ExtendedOffheapKeyValue</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/LoadTestKVGenerator.html#getValueForRowColumn-int-byte:A...-">getValueForRowColumn(int, byte[]...)</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/LoadTestKVGenerator.html" title="class in org.apache.hadoop.hbase.util">LoadTestKVGenerator</a></dt>
@@ -19825,14 +19795,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html#getValueLength--">getValueLength()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html" title="class in org.apache.hadoop.hbase">TestCellUtil.TestCell</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getValueLength--">getValueLength()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue.MockKeyValue</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestCellUtil.NonExtendedCell.html#getValueOffset--">getValueOffset()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestCellUtil.NonExtendedCell.html" title="class in org.apache.hadoop.hbase">TestCellUtil.NonExtendedCell</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html#getValueOffset--">getValueOffset()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestCellUtil.TestCell.html" title="class in org.apache.hadoop.hbase">TestCellUtil.TestCell</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getValueOffset--">getValueOffset()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue.MockKeyValue</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/RedundantKVGenerator.ExtendedOffheapKeyValue.html#getValueOffset--">getValueOffset()</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/RedundantKVGenerator.ExtendedOffheapKeyValue.html" title="class in org.apache.hadoop.hbase.util">RedundantKVGenerator.ExtendedOffheapKeyValue</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/RowResourceBase.html#getValuePB-java.lang.String-">getValuePB(String)</a></span> - Static method in class org.apache.hadoop.hbase.rest.<a href="org/apache/hadoop/hbase/rest/RowResourceBase.html" title="class in org.apache.hadoop.hbase.rest">RowResourceBase</a></dt>
@@ -23282,8 +23248,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestCellUtil.NonExtendedCell.html#kv">kv</a></span> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestCellUtil.NonExtendedCell.html" title="class in org.apache.hadoop.hbase">TestCellUtil.NonExtendedCell</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#kv">kv</a></span> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue.MockKeyValue</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestIndividualBytesFieldCell.html#kv0">kv0</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestIndividualBytesFieldCell.html" title="class in org.apache.hadoop.hbase">TestIndividualBytesFieldCell</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestKeyValueHeap.html#kv111">kv111</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>
@@ -23530,6 +23494,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/MockHStoreFile.html#length">length</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MockHStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">MockHStoreFile</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.FailureCase.html#length">length</a></span> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.FailureCase.html" title="class in org.apache.hadoop.hbase">TestKeyValue.FailureCase</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ColumnCountOnRowFilter.html#limit">limit</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ColumnCountOnRowFilter.html" title="class in org.apache.hadoop.hbase.client">ColumnCountOnRowFilter</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestOperation.html#LIMIT">LIMIT</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestOperation.html" title="class in org.apache.hadoop.hbase.client">TestOperation</a></dt>
@@ -26643,8 +26609,6 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/MockHStoreFile.html#MockHStoreFile-org.apache.hadoop.hbase.HBaseTestingUtility-org.apache.hadoop.fs.Path-long-long-boolean-long-">MockHStoreFile(HBaseTestingUtility, Path, long, long, boolean, long)</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MockHStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">MockHStoreFile</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#MockKeyValue-org.apache.hadoop.hbase.KeyValue-">MockKeyValue(KeyValue)</a></span> - Constructor for class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue.MockKeyValue</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/TestZKLeaderManager.MockLeader.html#MockLeader-org.apache.hadoop.hbase.zookeeper.ZKWatcher-int-">MockLeader(ZKWatcher, int)</a></span> - Constructor for class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/TestZKLeaderManager.MockLeader.html" title="class in org.apache.hadoop.hbase.zookeeper">TestZKLeaderManager.MockLeader</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure/TestProcedureMember.html#mockListener">mockListener</a></span> - Variable in class org.apache.hadoop.hbase.procedure.<a href="org/apache/hadoop/hbase/procedure/TestProcedureMember.html" title="class in org.apache.hadoop.hbase.procedure">TestProcedureMember</a></dt>
@@ -29199,6 +29163,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.AllocRecord.html#offset">offset</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestMemStoreLAB.AllocRecord.html" title="class in org.apache.hadoop.hbase.regionserver">TestMemStoreLAB.AllocRecord</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.FailureCase.html#offset">offset</a></span> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.FailureCase.html" title="class in org.apache.hadoop.hbase">TestKeyValue.FailureCase</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/TimeOffsetEnvironmentEdge.html#offset">offset</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/TimeOffsetEnvironmentEdge.html" title="class in org.apache.hadoop.hbase.util">TimeOffsetEnvironmentEdge</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/TestHFileBlock.BlockReaderThread.html#offsets">offsets</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/TestHFileBlock.BlockReaderThread.html" title="class in org.apache.hadoop.hbase.io.hfile">TestHFileBlock.BlockReaderThread</a></dt>
@@ -48273,6 +48239,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/quotas/policies/TestNoWritesViolationPolicyEnforcement.html#testCheckIncrement--">testCheckIncrement()</a></span> - Method in class org.apache.hadoop.hbase.quotas.policies.<a href="org/apache/hadoop/hbase/quotas/policies/TestNoWritesViolationPolicyEnforcement.html" title="class in org.apache.hadoop.hbase.quotas.policies">TestNoWritesViolationPolicyEnforcement</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.html#testCheckKeyValueBytesFailureCase--">testCheckKeyValueBytesFailureCase()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/access/TestAccessController.html#testCheckPermissions--">testCheckPermissions()</a></span> - Method in class org.apache.hadoop.hbase.security.access.<a href="org/apache/hadoop/hbase/security/access/TestAccessController.html" title="class in org.apache.hadoop.hbase.security.access">TestAccessController</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/access/TestWithDisabledAuthorization.html#testCheckPermissions--">testCheckPermissions()</a></span> - Method in class org.apache.hadoop.hbase.security.access.<a href="org/apache/hadoop/hbase/security/access/TestWithDisabledAuthorization.html" title="class in org.apache.hadoop.hbase.security.access">TestWithDisabledAuthorization</a></dt>
@@ -55120,7 +55088,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestSerialization.html#testKeyValue--">testKeyValue()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestSerialization.html" title="class in org.apache.hadoop.hbase">TestSerialization</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">TestKeyValue.MockKeyValue</span></a> - Class in <a href="org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a></dt>
+<dt><a href="org/apache/hadoop/hbase/TestKeyValue.FailureCase.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">TestKeyValue.FailureCase</span></a> - Class in <a href="org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.html#testKeyValueBorderCases--">testKeyValueBorderCases()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue</a></dt>
 <dd>
@@ -63009,6 +62977,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestReplicasClient.html#testScanWithReplicas--">testScanWithReplicas()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestReplicasClient.html" title="class in org.apache.hadoop.hbase.client">TestReplicasClient</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#testScanWithSameStartRowStopRow--">testScanWithSameStartRowStopRow()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestScannersFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestScannersFromClientSide</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/AbstractTestAsyncTableScan.html#testScanWithStartKeyAndStopKey--">testScanWithStartKeyAndStopKey()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/AbstractTestAsyncTableScan.html" title="class in org.apache.hadoop.hbase.client">AbstractTestAsyncTableScan</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandlerWithLabels.html#testScanWithVisibilityLabels--">testScanWithVisibilityLabels()</a></span> - Method in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/TestThriftHBaseServiceHandlerWithLabels.html" title="class in org.apache.hadoop.hbase.thrift2">TestThriftHBaseServiceHandlerWithLabels</a></dt>
@@ -68110,6 +68080,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/test/IntegrationTestReplication.ClusterID.html#toString--">toString()</a></span> - Method in class org.apache.hadoop.hbase.test.<a href="org/apache/hadoop/hbase/test/IntegrationTestReplication.ClusterID.html" title="class in org.apache.hadoop.hbase.test">IntegrationTestReplication.ClusterID</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.FailureCase.html#toString--">toString()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.FailureCase.html" title="class in org.apache.hadoop.hbase">TestKeyValue.FailureCase</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html#toString--">toString()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestMetaTableAccessor.MetaTask.html" title="class in org.apache.hadoop.hbase">TestMetaTableAccessor.MetaTask</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/trace/TraceTree.html#toString--">toString()</a></span> - Method in class org.apache.hadoop.hbase.trace.<a href="org/apache/hadoop/hbase/trace/TraceTree.html" title="class in org.apache.hadoop.hbase.trace">TraceTree</a></dt>
@@ -71777,6 +71749,8 @@ the order they are declared.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestBulkLoad.html#withMissingHFileForFamily-byte:A-">withMissingHFileForFamily(byte[])</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestBulkLoad.html" title="class in org.apache.hadoop.hbase.regionserver">TestBulkLoad</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestKeyValue.FailureCase.html#withTags">withTags</a></span> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.FailureCase.html" title="class in org.apache.hadoop.hbase">TestKeyValue.FailureCase</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/replication/TestSyncReplicationReplayWALManager.html#wokenProcedures">wokenProcedures</a></span> - Variable in class org.apache.hadoop.hbase.master.replication.<a href="org/apache/hadoop/hbase/master/replication/TestSyncReplicationReplayWALManager.html" title="class in org.apache.hadoop.hbase.master.replication">TestSyncReplicationReplayWALManager</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/ProcessBasedLocalHBaseCluster.html#workDir">workDir</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/ProcessBasedLocalHBaseCluster.html" title="class in org.apache.hadoop.hbase.util">ProcessBasedLocalHBaseCluster</a></dt>


[19/29] hbase-site git commit: Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.MetaComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.MetaComparator.html b/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.MetaComparator.html
index 6428b67..65c197f 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.MetaComparator.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.MetaComparator.html
@@ -260,2307 +260,2317 @@
 <span class="sourceLineNo">252</span>    }<a name="line.252"></a>
 <span class="sourceLineNo">253</span><a name="line.253"></a>
 <span class="sourceLineNo">254</span>    /**<a name="line.254"></a>
-<span class="sourceLineNo">255</span>     * Cannot rely on enum ordinals . They change if item is removed or moved.<a name="line.255"></a>
-<span class="sourceLineNo">256</span>     * Do our own codes.<a name="line.256"></a>
-<span class="sourceLineNo">257</span>     * @param b<a name="line.257"></a>
-<span class="sourceLineNo">258</span>     * @return Type associated with passed code.<a name="line.258"></a>
-<span class="sourceLineNo">259</span>     */<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    public static Type codeToType(final byte b) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      Type t = codeArray[b &amp; 0xff];<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      if (t != null) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        return t;<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      }<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      throw new RuntimeException("Unknown code " + b);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span>  }<a name="line.267"></a>
-<span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>  /**<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   * Lowest possible key.<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   * Makes a Key with highest possible Timestamp, empty row and column.  No<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   * key can be equal or lower than this one in memstore or in store file.<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   */<a name="line.273"></a>
-<span class="sourceLineNo">274</span>  public static final KeyValue LOWESTKEY =<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    new KeyValue(HConstants.EMPTY_BYTE_ARRAY, HConstants.LATEST_TIMESTAMP);<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>  ////<a name="line.277"></a>
-<span class="sourceLineNo">278</span>  // KeyValue core instance fields.<a name="line.278"></a>
-<span class="sourceLineNo">279</span>  protected byte [] bytes = null;  // an immutable byte array that contains the KV<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  protected int offset = 0;  // offset into bytes buffer KV starts at<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  protected int length = 0;  // length of the KV starting from offset.<a name="line.281"></a>
-<span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  /** Here be dragons **/<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>  /**<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   * used to achieve atomic operations in the memstore.<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   */<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  @Override<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  public long getSequenceId() {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    return seqId;<a name="line.290"></a>
-<span class="sourceLineNo">291</span>  }<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>  @Override<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  public void setSequenceId(long seqId) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    this.seqId = seqId;<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  }<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>  // multi-version concurrency control version.  default value is 0, aka do not care.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>  private long seqId = 0;<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>  /** Dragon time over, return to normal business */<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>  /** Writable Constructor -- DO NOT USE */<a name="line.304"></a>
-<span class="sourceLineNo">305</span>  public KeyValue() {}<a name="line.305"></a>
+<span class="sourceLineNo">255</span>     * True to indicate that the byte b is a valid type.<a name="line.255"></a>
+<span class="sourceLineNo">256</span>     * @param b byte to check<a name="line.256"></a>
+<span class="sourceLineNo">257</span>     * @return true or false<a name="line.257"></a>
+<span class="sourceLineNo">258</span>     */<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    static boolean isValidType(byte b) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      return codeArray[b &amp; 0xff] != null;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    }<a name="line.261"></a>
+<span class="sourceLineNo">262</span><a name="line.262"></a>
+<span class="sourceLineNo">263</span>    /**<a name="line.263"></a>
+<span class="sourceLineNo">264</span>     * Cannot rely on enum ordinals . They change if item is removed or moved.<a name="line.264"></a>
+<span class="sourceLineNo">265</span>     * Do our own codes.<a name="line.265"></a>
+<span class="sourceLineNo">266</span>     * @param b<a name="line.266"></a>
+<span class="sourceLineNo">267</span>     * @return Type associated with passed code.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>     */<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    public static Type codeToType(final byte b) {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      Type t = codeArray[b &amp; 0xff];<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      if (t != null) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        return t;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      throw new RuntimeException("Unknown code " + b);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  }<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>  /**<a name="line.278"></a>
+<span class="sourceLineNo">279</span>   * Lowest possible key.<a name="line.279"></a>
+<span class="sourceLineNo">280</span>   * Makes a Key with highest possible Timestamp, empty row and column.  No<a name="line.280"></a>
+<span class="sourceLineNo">281</span>   * key can be equal or lower than this one in memstore or in store file.<a name="line.281"></a>
+<span class="sourceLineNo">282</span>   */<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  public static final KeyValue LOWESTKEY =<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    new KeyValue(HConstants.EMPTY_BYTE_ARRAY, HConstants.LATEST_TIMESTAMP);<a name="line.284"></a>
+<span class="sourceLineNo">285</span><a name="line.285"></a>
+<span class="sourceLineNo">286</span>  ////<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  // KeyValue core instance fields.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  protected byte [] bytes = null;  // an immutable byte array that contains the KV<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  protected int offset = 0;  // offset into bytes buffer KV starts at<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  protected int length = 0;  // length of the KV starting from offset.<a name="line.290"></a>
+<span class="sourceLineNo">291</span><a name="line.291"></a>
+<span class="sourceLineNo">292</span>  /** Here be dragons **/<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>  /**<a name="line.294"></a>
+<span class="sourceLineNo">295</span>   * used to achieve atomic operations in the memstore.<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   */<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  @Override<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  public long getSequenceId() {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    return seqId;<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>
+<span class="sourceLineNo">303</span>  public void setSequenceId(long seqId) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    this.seqId = seqId;<a name="line.304"></a>
+<span class="sourceLineNo">305</span>  }<a name="line.305"></a>
 <span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>  /**<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * Creates a KeyValue from the start of the specified byte array.<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * Presumes &lt;code&gt;bytes&lt;/code&gt; content is formatted as a KeyValue blob.<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * @param bytes byte array<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   */<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  public KeyValue(final byte [] bytes) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    this(bytes, 0);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
+<span class="sourceLineNo">307</span>  // multi-version concurrency control version.  default value is 0, aka do not care.<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  private long seqId = 0;<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>  /** Dragon time over, return to normal business */<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>  /** Writable Constructor -- DO NOT USE */<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  public KeyValue() {}<a name="line.314"></a>
 <span class="sourceLineNo">315</span><a name="line.315"></a>
 <span class="sourceLineNo">316</span>  /**<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * Creates a KeyValue from the specified byte array and offset.<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * Presumes &lt;code&gt;bytes&lt;/code&gt; content starting at &lt;code&gt;offset&lt;/code&gt; is<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * formatted as a KeyValue blob.<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   * @param bytes byte array<a name="line.320"></a>
-<span class="sourceLineNo">321</span>   * @param offset offset to start of KeyValue<a name="line.321"></a>
-<span class="sourceLineNo">322</span>   */<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  public KeyValue(final byte [] bytes, final int offset) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    this(bytes, offset, getLength(bytes, offset));<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  }<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>  /**<a name="line.327"></a>
-<span class="sourceLineNo">328</span>   * Creates a KeyValue from the specified byte array, starting at offset, and<a name="line.328"></a>
-<span class="sourceLineNo">329</span>   * for length &lt;code&gt;length&lt;/code&gt;.<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   * @param bytes byte array<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   * @param offset offset to start of the KeyValue<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   * @param length length of the KeyValue<a name="line.332"></a>
-<span class="sourceLineNo">333</span>   */<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  public KeyValue(final byte [] bytes, final int offset, final int length) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    this.bytes = bytes;<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    this.offset = offset;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    this.length = length;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  }<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>  /**<a name="line.340"></a>
-<span class="sourceLineNo">341</span>   * Creates a KeyValue from the specified byte array, starting at offset, and<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   * for length &lt;code&gt;length&lt;/code&gt;.<a name="line.342"></a>
-<span class="sourceLineNo">343</span>   *<a name="line.343"></a>
-<span class="sourceLineNo">344</span>   * @param bytes  byte array<a name="line.344"></a>
-<span class="sourceLineNo">345</span>   * @param offset offset to start of the KeyValue<a name="line.345"></a>
-<span class="sourceLineNo">346</span>   * @param length length of the KeyValue<a name="line.346"></a>
-<span class="sourceLineNo">347</span>   * @param ts<a name="line.347"></a>
-<span class="sourceLineNo">348</span>   */<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  public KeyValue(final byte[] bytes, final int offset, final int length, long ts) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    this(bytes, offset, length, null, 0, 0, null, 0, 0, ts, Type.Maximum, null, 0, 0, null);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  /** Constructors that build a new backing byte array from fields */<a name="line.353"></a>
-<span class="sourceLineNo">354</span><a name="line.354"></a>
-<span class="sourceLineNo">355</span>  /**<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   * Constructs KeyValue structure filled with null value.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   * Sets type to {@link KeyValue.Type#Maximum}<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   * @param row - row key (arbitrary byte array)<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   * @param timestamp<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   */<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  public KeyValue(final byte [] row, final long timestamp) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    this(row, null, null, timestamp, Type.Maximum, null);<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  }<a name="line.363"></a>
+<span class="sourceLineNo">317</span>   * Creates a KeyValue from the start of the specified byte array.<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * Presumes &lt;code&gt;bytes&lt;/code&gt; content is formatted as a KeyValue blob.<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * @param bytes byte array<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   */<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  public KeyValue(final byte [] bytes) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    this(bytes, 0);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  }<a name="line.323"></a>
+<span class="sourceLineNo">324</span><a name="line.324"></a>
+<span class="sourceLineNo">325</span>  /**<a name="line.325"></a>
+<span class="sourceLineNo">326</span>   * Creates a KeyValue from the specified byte array and offset.<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   * Presumes &lt;code&gt;bytes&lt;/code&gt; content starting at &lt;code&gt;offset&lt;/code&gt; is<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   * formatted as a KeyValue blob.<a name="line.328"></a>
+<span class="sourceLineNo">329</span>   * @param bytes byte array<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   * @param offset offset to start of KeyValue<a name="line.330"></a>
+<span class="sourceLineNo">331</span>   */<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  public KeyValue(final byte [] bytes, final int offset) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    this(bytes, offset, getLength(bytes, offset));<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  }<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>  /**<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   * Creates a KeyValue from the specified byte array, starting at offset, and<a name="line.337"></a>
+<span class="sourceLineNo">338</span>   * for length &lt;code&gt;length&lt;/code&gt;.<a name="line.338"></a>
+<span class="sourceLineNo">339</span>   * @param bytes byte array<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   * @param offset offset to start of the KeyValue<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * @param length length of the KeyValue<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   */<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  public KeyValue(final byte[] bytes, final int offset, final int length) {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    KeyValueUtil.checkKeyValueBytes(bytes, offset, length, true);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    this.bytes = bytes;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    this.offset = offset;<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    this.length = length;<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>  /**<a name="line.350"></a>
+<span class="sourceLineNo">351</span>   * Creates a KeyValue from the specified byte array, starting at offset, and<a name="line.351"></a>
+<span class="sourceLineNo">352</span>   * for length &lt;code&gt;length&lt;/code&gt;.<a name="line.352"></a>
+<span class="sourceLineNo">353</span>   *<a name="line.353"></a>
+<span class="sourceLineNo">354</span>   * @param bytes  byte array<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * @param offset offset to start of the KeyValue<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * @param length length of the KeyValue<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * @param ts<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   */<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  public KeyValue(final byte[] bytes, final int offset, final int length, long ts) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    this(bytes, offset, length, null, 0, 0, null, 0, 0, ts, Type.Maximum, null, 0, 0, null);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  }<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>  /** Constructors that build a new backing byte array from fields */<a name="line.363"></a>
 <span class="sourceLineNo">364</span><a name="line.364"></a>
 <span class="sourceLineNo">365</span>  /**<a name="line.365"></a>
 <span class="sourceLineNo">366</span>   * Constructs KeyValue structure filled with null value.<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   * @param row - row key (arbitrary byte array)<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   * @param timestamp<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   */<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public KeyValue(final byte [] row, final long timestamp, Type type) {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    this(row, null, null, timestamp, type, null);<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  /**<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   * Constructs KeyValue structure filled with null value.<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   * Sets type to {@link KeyValue.Type#Maximum}<a name="line.376"></a>
+<span class="sourceLineNo">367</span>   * Sets type to {@link KeyValue.Type#Maximum}<a name="line.367"></a>
+<span class="sourceLineNo">368</span>   * @param row - row key (arbitrary byte array)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>   * @param timestamp<a name="line.369"></a>
+<span class="sourceLineNo">370</span>   */<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  public KeyValue(final byte [] row, final long timestamp) {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    this(row, null, null, timestamp, Type.Maximum, null);<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>   * Constructs KeyValue structure filled with null value.<a name="line.376"></a>
 <span class="sourceLineNo">377</span>   * @param row - row key (arbitrary byte array)<a name="line.377"></a>
-<span class="sourceLineNo">378</span>   * @param family family name<a name="line.378"></a>
-<span class="sourceLineNo">379</span>   * @param qualifier column qualifier<a name="line.379"></a>
-<span class="sourceLineNo">380</span>   */<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  public KeyValue(final byte [] row, final byte [] family,<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      final byte [] qualifier) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    this(row, family, qualifier, HConstants.LATEST_TIMESTAMP, Type.Maximum);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  }<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span>  /**<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   * Constructs KeyValue structure as a put filled with specified values and<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * LATEST_TIMESTAMP.<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * @param row - row key (arbitrary byte array)<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   * @param family family name<a name="line.390"></a>
-<span class="sourceLineNo">391</span>   * @param qualifier column qualifier<a name="line.391"></a>
-<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  public KeyValue(final byte [] row, final byte [] family,<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      final byte [] qualifier, final byte [] value) {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    this(row, family, qualifier, HConstants.LATEST_TIMESTAMP, Type.Put, value);<a name="line.395"></a>
-<span class="sourceLineNo">396</span>  }<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>  /**<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * Constructs KeyValue structure filled with specified values.<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * @param row row key<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * @param family family name<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @param qualifier column qualifier<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * @param timestamp version timestamp<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * @param type key type<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   * @throws IllegalArgumentException<a name="line.405"></a>
-<span class="sourceLineNo">406</span>   */<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      final byte[] qualifier, final long timestamp, Type type) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    this(row, family, qualifier, timestamp, type, null);<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>   * Constructs KeyValue structure filled with specified values.<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * @param row row key<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * @param family family name<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * @param qualifier column qualifier<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @param timestamp version timestamp<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @param value column value<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * @throws IllegalArgumentException<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   */<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      final byte[] qualifier, final long timestamp, final byte[] value) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    this(row, family, qualifier, timestamp, Type.Put, value);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>  }<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span>  /**<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * Constructs KeyValue structure filled with specified values.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * @param row row key<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * @param family family name<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   * @param qualifier column qualifier<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   * @param timestamp version timestamp<a name="line.431"></a>
-<span class="sourceLineNo">432</span>   * @param value column value<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   * @param tags tags<a name="line.433"></a>
-<span class="sourceLineNo">434</span>   * @throws IllegalArgumentException<a name="line.434"></a>
-<span class="sourceLineNo">435</span>   */<a name="line.435"></a>
-<span class="sourceLineNo">436</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      final byte[] qualifier, final long timestamp, final byte[] value,<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      final Tag[] tags) {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    this(row, family, qualifier, timestamp, value, tags != null ? Arrays.asList(tags) : null);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>  }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * Constructs KeyValue structure filled with specified values.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * @param row row key<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   * @param family family name<a name="line.445"></a>
-<span class="sourceLineNo">446</span>   * @param qualifier column qualifier<a name="line.446"></a>
-<span class="sourceLineNo">447</span>   * @param timestamp version timestamp<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * @param value column value<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   * @param tags tags non-empty list of tags or null<a name="line.449"></a>
-<span class="sourceLineNo">450</span>   * @throws IllegalArgumentException<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   */<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      final byte[] qualifier, final long timestamp, final byte[] value,<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      final List&lt;Tag&gt; tags) {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.455"></a>
-<span class="sourceLineNo">456</span>      family, 0, family==null ? 0 : family.length,<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      timestamp, Type.Put,<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      value, 0, value==null ? 0 : value.length, tags);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>  }<a name="line.460"></a>
-<span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>  /**<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * Constructs KeyValue structure filled with specified values.<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * @param row row key<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   * @param family family name<a name="line.465"></a>
-<span class="sourceLineNo">466</span>   * @param qualifier column qualifier<a name="line.466"></a>
-<span class="sourceLineNo">467</span>   * @param timestamp version timestamp<a name="line.467"></a>
-<span class="sourceLineNo">468</span>   * @param type key type<a name="line.468"></a>
-<span class="sourceLineNo">469</span>   * @param value column value<a name="line.469"></a>
-<span class="sourceLineNo">470</span>   * @throws IllegalArgumentException<a name="line.470"></a>
-<span class="sourceLineNo">471</span>   */<a name="line.471"></a>
-<span class="sourceLineNo">472</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      final byte[] value) {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    this(row, 0, len(row),   family, 0, len(family),   qualifier, 0, len(qualifier),<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        timestamp, type,   value, 0, len(value));<a name="line.476"></a>
-<span class="sourceLineNo">477</span>  }<a name="line.477"></a>
-<span class="sourceLineNo">478</span><a name="line.478"></a>
-<span class="sourceLineNo">479</span>  /**<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * Constructs KeyValue structure filled with specified values.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * &lt;p&gt;<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * Column is split into two fields, family and qualifier.<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * @param row row key<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   * @param family family name<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   * @param qualifier column qualifier<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * @param timestamp version timestamp<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * @param type key type<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * @param value column value<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   * @throws IllegalArgumentException<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   */<a name="line.490"></a>
-<span class="sourceLineNo">491</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      final byte[] value, final List&lt;Tag&gt; tags) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    this(row, family, qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.494"></a>
-<span class="sourceLineNo">495</span>        timestamp, type, value, 0, value==null ? 0 : value.length, tags);<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>  /**<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   * Constructs KeyValue structure filled with specified values.<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   * @param row row key<a name="line.500"></a>
-<span class="sourceLineNo">501</span>   * @param family family name<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   * @param qualifier column qualifier<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   * @param timestamp version timestamp<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   * @param type key type<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @param value column value<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * @throws IllegalArgumentException<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   */<a name="line.507"></a>
-<span class="sourceLineNo">508</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      final byte[] value, final byte[] tags) {<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    this(row, family, qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.511"></a>
-<span class="sourceLineNo">512</span>        timestamp, type, value, 0, value==null ? 0 : value.length, tags);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>  }<a name="line.513"></a>
-<span class="sourceLineNo">514</span><a name="line.514"></a>
-<span class="sourceLineNo">515</span>  /**<a name="line.515"></a>
-<span class="sourceLineNo">516</span>   * Constructs KeyValue structure filled with specified values.<a name="line.516"></a>
-<span class="sourceLineNo">517</span>   * @param row row key<a name="line.517"></a>
-<span class="sourceLineNo">518</span>   * @param family family name<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * @param qualifier column qualifier<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   * @param qoffset qualifier offset<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * @param qlength qualifier length<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   * @param timestamp version timestamp<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   * @param type key type<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   * @param value column value<a name="line.524"></a>
-<span class="sourceLineNo">525</span>   * @param voffset value offset<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * @param vlength value length<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * @throws IllegalArgumentException<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   */<a name="line.528"></a>
-<span class="sourceLineNo">529</span>  public KeyValue(byte [] row, byte [] family,<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      byte [] qualifier, int qoffset, int qlength, long timestamp, Type type,<a name="line.530"></a>
-<span class="sourceLineNo">531</span>      byte [] value, int voffset, int vlength, List&lt;Tag&gt; tags) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.532"></a>
-<span class="sourceLineNo">533</span>        family, 0, family==null ? 0 : family.length,<a name="line.533"></a>
-<span class="sourceLineNo">534</span>        qualifier, qoffset, qlength, timestamp, type,<a name="line.534"></a>
-<span class="sourceLineNo">535</span>        value, voffset, vlength, tags);<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  }<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>  /**<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * @param row<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   * @param family<a name="line.540"></a>
-<span class="sourceLineNo">541</span>   * @param qualifier<a name="line.541"></a>
-<span class="sourceLineNo">542</span>   * @param qoffset<a name="line.542"></a>
-<span class="sourceLineNo">543</span>   * @param qlength<a name="line.543"></a>
-<span class="sourceLineNo">544</span>   * @param timestamp<a name="line.544"></a>
-<span class="sourceLineNo">545</span>   * @param type<a name="line.545"></a>
-<span class="sourceLineNo">546</span>   * @param value<a name="line.546"></a>
-<span class="sourceLineNo">547</span>   * @param voffset<a name="line.547"></a>
-<span class="sourceLineNo">548</span>   * @param vlength<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * @param tags<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   */<a name="line.550"></a>
-<span class="sourceLineNo">551</span>  public KeyValue(byte [] row, byte [] family,<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      byte [] qualifier, int qoffset, int qlength, long timestamp, Type type,<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      byte [] value, int voffset, int vlength, byte[] tags) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.554"></a>
-<span class="sourceLineNo">555</span>        family, 0, family==null ? 0 : family.length,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>        qualifier, qoffset, qlength, timestamp, type,<a name="line.556"></a>
-<span class="sourceLineNo">557</span>        value, voffset, vlength, tags, 0, tags==null ? 0 : tags.length);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>  }<a name="line.558"></a>
-<span class="sourceLineNo">559</span><a name="line.559"></a>
-<span class="sourceLineNo">560</span>  /**<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   * Constructs KeyValue structure filled with specified values.<a name="line.561"></a>
-<span class="sourceLineNo">562</span>   * &lt;p&gt;<a name="line.562"></a>
-<span class="sourceLineNo">563</span>   * Column is split into two fields, family and qualifier.<a name="line.563"></a>
-<span class="sourceLineNo">564</span>   * @param row row key<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   * @throws IllegalArgumentException<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   */<a name="line.566"></a>
-<span class="sourceLineNo">567</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      final byte [] family, final int foffset, final int flength,<a name="line.568"></a>
-<span class="sourceLineNo">569</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      final long timestamp, final Type type,<a name="line.570"></a>
-<span class="sourceLineNo">571</span>      final byte [] value, final int voffset, final int vlength) {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    this(row, roffset, rlength, family, foffset, flength, qualifier, qoffset,<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      qlength, timestamp, type, value, voffset, vlength, null);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>  }<a name="line.574"></a>
-<span class="sourceLineNo">575</span><a name="line.575"></a>
-<span class="sourceLineNo">576</span>  /**<a name="line.576"></a>
-<span class="sourceLineNo">577</span>   * Constructs KeyValue structure filled with specified values. Uses the provided buffer as the<a name="line.577"></a>
-<span class="sourceLineNo">578</span>   * data buffer.<a name="line.578"></a>
-<span class="sourceLineNo">579</span>   * &lt;p&gt;<a name="line.579"></a>
-<span class="sourceLineNo">580</span>   * Column is split into two fields, family and qualifier.<a name="line.580"></a>
-<span class="sourceLineNo">581</span>   *<a name="line.581"></a>
-<span class="sourceLineNo">582</span>   * @param buffer the bytes buffer to use<a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * @param boffset buffer offset<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   * @param row row key<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   * @param roffset row offset<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   * @param rlength row length<a name="line.586"></a>
-<span class="sourceLineNo">587</span>   * @param family family name<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   * @param foffset family offset<a name="line.588"></a>
-<span class="sourceLineNo">589</span>   * @param flength family length<a name="line.589"></a>
-<span class="sourceLineNo">590</span>   * @param qualifier column qualifier<a name="line.590"></a>
-<span class="sourceLineNo">591</span>   * @param qoffset qualifier offset<a name="line.591"></a>
-<span class="sourceLineNo">592</span>   * @param qlength qualifier length<a name="line.592"></a>
-<span class="sourceLineNo">593</span>   * @param timestamp version timestamp<a name="line.593"></a>
-<span class="sourceLineNo">594</span>   * @param type key type<a name="line.594"></a>
-<span class="sourceLineNo">595</span>   * @param value column value<a name="line.595"></a>
-<span class="sourceLineNo">596</span>   * @param voffset value offset<a name="line.596"></a>
-<span class="sourceLineNo">597</span>   * @param vlength value length<a name="line.597"></a>
-<span class="sourceLineNo">598</span>   * @param tags non-empty list of tags or null<a name="line.598"></a>
-<span class="sourceLineNo">599</span>   * @throws IllegalArgumentException an illegal value was passed or there is insufficient space<a name="line.599"></a>
-<span class="sourceLineNo">600</span>   * remaining in the buffer<a name="line.600"></a>
-<span class="sourceLineNo">601</span>   */<a name="line.601"></a>
-<span class="sourceLineNo">602</span>  public KeyValue(byte [] buffer, final int boffset,<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      final byte [] row, final int roffset, final int rlength,<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      final byte [] family, final int foffset, final int flength,<a name="line.604"></a>
-<span class="sourceLineNo">605</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.605"></a>
-<span class="sourceLineNo">606</span>      final long timestamp, final Type type,<a name="line.606"></a>
-<span class="sourceLineNo">607</span>      final byte [] value, final int voffset, final int vlength,<a name="line.607"></a>
-<span class="sourceLineNo">608</span>      final Tag[] tags) {<a name="line.608"></a>
-<span class="sourceLineNo">609</span>     this.bytes  = buffer;<a name="line.609"></a>
-<span class="sourceLineNo">610</span>     this.length = writeByteArray(buffer, boffset,<a name="line.610"></a>
-<span class="sourceLineNo">611</span>         row, roffset, rlength,<a name="line.611"></a>
-<span class="sourceLineNo">612</span>         family, foffset, flength, qualifier, qoffset, qlength,<a name="line.612"></a>
-<span class="sourceLineNo">613</span>        timestamp, type, value, voffset, vlength, tags);<a name="line.613"></a>
-<span class="sourceLineNo">614</span>     this.offset = boffset;<a name="line.614"></a>
-<span class="sourceLineNo">615</span>   }<a name="line.615"></a>
-<span class="sourceLineNo">616</span><a name="line.616"></a>
-<span class="sourceLineNo">617</span>  /**<a name="line.617"></a>
-<span class="sourceLineNo">618</span>   * Constructs KeyValue structure filled with specified values.<a name="line.618"></a>
-<span class="sourceLineNo">619</span>   * &lt;p&gt;<a name="line.619"></a>
-<span class="sourceLineNo">620</span>   * Column is split into two fields, family and qualifier.<a name="line.620"></a>
-<span class="sourceLineNo">621</span>   * @param row row key<a name="line.621"></a>
-<span class="sourceLineNo">622</span>   * @param roffset row offset<a name="line.622"></a>
-<span class="sourceLineNo">623</span>   * @param rlength row length<a name="line.623"></a>
-<span class="sourceLineNo">624</span>   * @param family family name<a name="line.624"></a>
-<span class="sourceLineNo">625</span>   * @param foffset family offset<a name="line.625"></a>
-<span class="sourceLineNo">626</span>   * @param flength family length<a name="line.626"></a>
-<span class="sourceLineNo">627</span>   * @param qualifier column qualifier<a name="line.627"></a>
-<span class="sourceLineNo">628</span>   * @param qoffset qualifier offset<a name="line.628"></a>
-<span class="sourceLineNo">629</span>   * @param qlength qualifier length<a name="line.629"></a>
-<span class="sourceLineNo">630</span>   * @param timestamp version timestamp<a name="line.630"></a>
-<span class="sourceLineNo">631</span>   * @param type key type<a name="line.631"></a>
-<span class="sourceLineNo">632</span>   * @param value column value<a name="line.632"></a>
-<span class="sourceLineNo">633</span>   * @param voffset value offset<a name="line.633"></a>
-<span class="sourceLineNo">634</span>   * @param vlength value length<a name="line.634"></a>
-<span class="sourceLineNo">635</span>   * @param tags tags<a name="line.635"></a>
-<span class="sourceLineNo">636</span>   * @throws IllegalArgumentException<a name="line.636"></a>
-<span class="sourceLineNo">637</span>   */<a name="line.637"></a>
-<span class="sourceLineNo">638</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      final byte [] family, final int foffset, final int flength,<a name="line.639"></a>
-<span class="sourceLineNo">640</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      final long timestamp, final Type type,<a name="line.641"></a>
-<span class="sourceLineNo">642</span>      final byte [] value, final int voffset, final int vlength,<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      final List&lt;Tag&gt; tags) {<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    this.bytes = createByteArray(row, roffset, rlength,<a name="line.644"></a>
-<span class="sourceLineNo">645</span>        family, foffset, flength, qualifier, qoffset, qlength,<a name="line.645"></a>
-<span class="sourceLineNo">646</span>        timestamp, type, value, voffset, vlength, tags);<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    this.length = bytes.length;<a name="line.647"></a>
-<span class="sourceLineNo">648</span>    this.offset = 0;<a name="line.648"></a>
-<span class="sourceLineNo">649</span>  }<a name="line.649"></a>
-<span class="sourceLineNo">650</span><a name="line.650"></a>
-<span class="sourceLineNo">651</span>  /**<a name="line.651"></a>
-<span class="sourceLineNo">652</span>   * @param row<a name="line.652"></a>
-<span class="sourceLineNo">653</span>   * @param roffset<a name="line.653"></a>
-<span class="sourceLineNo">654</span>   * @param rlength<a name="line.654"></a>
-<span class="sourceLineNo">655</span>   * @param family<a name="line.655"></a>
-<span class="sourceLineNo">656</span>   * @param foffset<a name="line.656"></a>
-<span class="sourceLineNo">657</span>   * @param flength<a name="line.657"></a>
-<span class="sourceLineNo">658</span>   * @param qualifier<a name="line.658"></a>
-<span class="sourceLineNo">659</span>   * @param qoffset<a name="line.659"></a>
-<span class="sourceLineNo">660</span>   * @param qlength<a name="line.660"></a>
-<span class="sourceLineNo">661</span>   * @param timestamp<a name="line.661"></a>
-<span class="sourceLineNo">662</span>   * @param type<a name="line.662"></a>
-<span class="sourceLineNo">663</span>   * @param value<a name="line.663"></a>
-<span class="sourceLineNo">664</span>   * @param voffset<a name="line.664"></a>
-<span class="sourceLineNo">665</span>   * @param vlength<a name="line.665"></a>
-<span class="sourceLineNo">666</span>   * @param tags<a name="line.666"></a>
-<span class="sourceLineNo">667</span>   */<a name="line.667"></a>
-<span class="sourceLineNo">668</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.668"></a>
-<span class="sourceLineNo">669</span>      final byte [] family, final int foffset, final int flength,<a name="line.669"></a>
-<span class="sourceLineNo">670</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.670"></a>
-<span class="sourceLineNo">671</span>      final long timestamp, final Type type,<a name="line.671"></a>
-<span class="sourceLineNo">672</span>      final byte [] value, final int voffset, final int vlength,<a name="line.672"></a>
-<span class="sourceLineNo">673</span>      final byte[] tags, final int tagsOffset, final int tagsLength) {<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    this.bytes = createByteArray(row, roffset, rlength,<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        family, foffset, flength, qualifier, qoffset, qlength,<a name="line.675"></a>
-<span class="sourceLineNo">676</span>        timestamp, type, value, voffset, vlength, tags, tagsOffset, tagsLength);<a name="line.676"></a>
-<span class="sourceLineNo">677</span>    this.length = bytes.length;<a name="line.677"></a>
-<span class="sourceLineNo">678</span>    this.offset = 0;<a name="line.678"></a>
-<span class="sourceLineNo">679</span>  }<a name="line.679"></a>
-<span class="sourceLineNo">680</span><a name="line.680"></a>
-<span class="sourceLineNo">681</span>  /**<a name="line.681"></a>
-<span class="sourceLineNo">682</span>   * Constructs an empty KeyValue structure, with specified sizes.<a name="line.682"></a>
-<span class="sourceLineNo">683</span>   * This can be used to partially fill up KeyValues.<a name="line.683"></a>
-<span class="sourceLineNo">684</span>   * &lt;p&gt;<a name="line.684"></a>
-<span class="sourceLineNo">685</span>   * Column is split into two fields, family and qualifier.<a name="line.685"></a>
-<span class="sourceLineNo">686</span>   * @param rlength row length<a name="line.686"></a>
-<span class="sourceLineNo">687</span>   * @param flength family length<a name="line.687"></a>
-<span class="sourceLineNo">688</span>   * @param qlength qualifier length<a name="line.688"></a>
-<span class="sourceLineNo">689</span>   * @param timestamp version timestamp<a name="line.689"></a>
-<span class="sourceLineNo">690</span>   * @param type key type<a name="line.690"></a>
-<span class="sourceLineNo">691</span>   * @param vlength value length<a name="line.691"></a>
-<span class="sourceLineNo">692</span>   * @throws IllegalArgumentException<a name="line.692"></a>
-<span class="sourceLineNo">693</span>   */<a name="line.693"></a>
-<span class="sourceLineNo">694</span>  public KeyValue(final int rlength,<a name="line.694"></a>
-<span class="sourceLineNo">695</span>      final int flength,<a name="line.695"></a>
-<span class="sourceLineNo">696</span>      final int qlength,<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      final long timestamp, final Type type,<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      final int vlength) {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>    this(rlength, flength, qlength, timestamp, type, vlength, 0);<a name="line.699"></a>
-<span class="sourceLineNo">700</span>  }<a name="line.700"></a>
-<span class="sourceLineNo">701</span><a name="line.701"></a>
-<span class="sourceLineNo">702</span>  /**<a name="line.702"></a>
-<span class="sourceLineNo">703</span>   * Constructs an empty KeyValue structure, with specified sizes.<a name="line.703"></a>
-<span class="sourceLineNo">704</span>   * This can be used to partially fill up KeyValues.<a name="line.704"></a>
-<span class="sourceLineNo">705</span>   * &lt;p&gt;<a name="line.705"></a>
-<span class="sourceLineNo">706</span>   * Column is split into two fields, family and qualifier.<a name="line.706"></a>
-<span class="sourceLineNo">707</span>   * @param rlength row length<a name="line.707"></a>
-<span class="sourceLineNo">708</span>   * @param flength family length<a name="line.708"></a>
-<span class="sourceLineNo">709</span>   * @param qlength qualifier length<a name="line.709"></a>
-<span class="sourceLineNo">710</span>   * @param timestamp version timestamp<a name="line.710"></a>
-<span class="sourceLineNo">711</span>   * @param type key type<a name="line.711"></a>
-<span class="sourceLineNo">712</span>   * @param vlength value length<a name="line.712"></a>
-<span class="sourceLineNo">713</span>   * @param tagsLength<a name="line.713"></a>
-<span class="sourceLineNo">714</span>   * @throws IllegalArgumentException<a name="line.714"></a>
-<span class="sourceLineNo">715</span>   */<a name="line.715"></a>
-<span class="sourceLineNo">716</span>  public KeyValue(final int rlength,<a name="line.716"></a>
-<span class="sourceLineNo">717</span>      final int flength,<a name="line.717"></a>
-<span class="sourceLineNo">718</span>      final int qlength,<a name="line.718"></a>
-<span class="sourceLineNo">719</span>      final long timestamp, final Type type,<a name="line.719"></a>
-<span class="sourceLineNo">720</span>      final int vlength, final int tagsLength) {<a name="line.720"></a>
-<span class="sourceLineNo">721</span>    this.bytes = createEmptyByteArray(rlength, flength, qlength, timestamp, type, vlength,<a name="line.721"></a>
-<span class="sourceLineNo">722</span>        tagsLength);<a name="line.722"></a>
-<span class="sourceLineNo">723</span>    this.length = bytes.length;<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    this.offset = 0;<a name="line.724"></a>
-<span class="sourceLineNo">725</span>  }<a name="line.725"></a>
-<span class="sourceLineNo">726</span><a name="line.726"></a>
-<span class="sourceLineNo">727</span><a name="line.727"></a>
-<span class="sourceLineNo">728</span>  public KeyValue(byte[] row, int roffset, int rlength,<a name="line.728"></a>
-<span class="sourceLineNo">729</span>                  byte[] family, int foffset, int flength,<a name="line.729"></a>
-<span class="sourceLineNo">730</span>                  ByteBuffer qualifier, long ts, Type type, ByteBuffer value, List&lt;Tag&gt; tags) {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    this.bytes = createByteArray(row, roffset, rlength, family, foffset, flength,<a name="line.731"></a>
-<span class="sourceLineNo">732</span>        qualifier, 0, qualifier == null ? 0 : qualifier.remaining(), ts, type,<a name="line.732"></a>
-<span class="sourceLineNo">733</span>        value, 0, value == null ? 0 : value.remaining(), tags);<a name="line.733"></a>
-<span class="sourceLineNo">734</span>    this.length = bytes.length;<a name="line.734"></a>
-<span class="sourceLineNo">735</span>    this.offset = 0;<a name="line.735"></a>
-<span class="sourceLineNo">736</span>  }<a name="line.736"></a>
+<span class="sourceLineNo">378</span>   * @param timestamp<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   */<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  public KeyValue(final byte [] row, final long timestamp, Type type) {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    this(row, null, null, timestamp, type, null);<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>
+<span class="sourceLineNo">385</span>   * Constructs KeyValue structure filled with null value.<a name="line.385"></a>
+<span class="sourceLineNo">386</span>   * Sets type to {@link KeyValue.Type#Maximum}<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * @param row - row key (arbitrary byte array)<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * @param family family name<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * @param qualifier column qualifier<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   */<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  public KeyValue(final byte [] row, final byte [] family,<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      final byte [] qualifier) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    this(row, family, qualifier, HConstants.LATEST_TIMESTAMP, Type.Maximum);<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>   * Constructs KeyValue structure as a put filled with specified values and<a name="line.397"></a>
+<span class="sourceLineNo">398</span>   * LATEST_TIMESTAMP.<a name="line.398"></a>
+<span class="sourceLineNo">399</span>   * @param row - row key (arbitrary byte array)<a name="line.399"></a>
+<span class="sourceLineNo">400</span>   * @param family family name<a name="line.400"></a>
+<span class="sourceLineNo">401</span>   * @param qualifier column qualifier<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
+<span class="sourceLineNo">403</span>  public KeyValue(final byte [] row, final byte [] family,<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      final byte [] qualifier, final byte [] value) {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    this(row, family, qualifier, HConstants.LATEST_TIMESTAMP, Type.Put, value);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  }<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>  /**<a name="line.408"></a>
+<span class="sourceLineNo">409</span>   * Constructs KeyValue structure filled with specified values.<a name="line.409"></a>
+<span class="sourceLineNo">410</span>   * @param row row key<a name="line.410"></a>
+<span class="sourceLineNo">411</span>   * @param family family name<a name="line.411"></a>
+<span class="sourceLineNo">412</span>   * @param qualifier column qualifier<a name="line.412"></a>
+<span class="sourceLineNo">413</span>   * @param timestamp version timestamp<a name="line.413"></a>
+<span class="sourceLineNo">414</span>   * @param type key type<a name="line.414"></a>
+<span class="sourceLineNo">415</span>   * @throws IllegalArgumentException<a name="line.415"></a>
+<span class="sourceLineNo">416</span>   */<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      final byte[] qualifier, final long timestamp, Type type) {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    this(row, family, qualifier, timestamp, type, null);<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>   * Constructs KeyValue structure filled with specified values.<a name="line.423"></a>
+<span class="sourceLineNo">424</span>   * @param row row key<a name="line.424"></a>
+<span class="sourceLineNo">425</span>   * @param family family name<a name="line.425"></a>
+<span class="sourceLineNo">426</span>   * @param qualifier column qualifier<a name="line.426"></a>
+<span class="sourceLineNo">427</span>   * @param timestamp version timestamp<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   * @param value column value<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * @throws IllegalArgumentException<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   */<a name="line.430"></a>
+<span class="sourceLineNo">431</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      final byte[] qualifier, final long timestamp, final byte[] value) {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    this(row, family, qualifier, timestamp, Type.Put, value);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  }<a name="line.434"></a>
+<span class="sourceLineNo">435</span><a name="line.435"></a>
+<span class="sourceLineNo">436</span>  /**<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   * Constructs KeyValue structure filled with specified values.<a name="line.437"></a>
+<span class="sourceLineNo">438</span>   * @param row row key<a name="line.438"></a>
+<span class="sourceLineNo">439</span>   * @param family family name<a name="line.439"></a>
+<span class="sourceLineNo">440</span>   * @param qualifier column qualifier<a name="line.440"></a>
+<span class="sourceLineNo">441</span>   * @param timestamp version timestamp<a name="line.441"></a>
+<span class="sourceLineNo">442</span>   * @param value column value<a name="line.442"></a>
+<span class="sourceLineNo">443</span>   * @param tags tags<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   * @throws IllegalArgumentException<a name="line.444"></a>
+<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
+<span class="sourceLineNo">446</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      final byte[] qualifier, final long timestamp, final byte[] value,<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      final Tag[] tags) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    this(row, family, qualifier, timestamp, value, tags != null ? Arrays.asList(tags) : null);<a name="line.449"></a>
+<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>  /**<a name="line.452"></a>
+<span class="sourceLineNo">453</span>   * Constructs KeyValue structure filled with specified values.<a name="line.453"></a>
+<span class="sourceLineNo">454</span>   * @param row row key<a name="line.454"></a>
+<span class="sourceLineNo">455</span>   * @param family family name<a name="line.455"></a>
+<span class="sourceLineNo">456</span>   * @param qualifier column qualifier<a name="line.456"></a>
+<span class="sourceLineNo">457</span>   * @param timestamp version timestamp<a name="line.457"></a>
+<span class="sourceLineNo">458</span>   * @param value column value<a name="line.458"></a>
+<span class="sourceLineNo">459</span>   * @param tags tags non-empty list of tags or null<a name="line.459"></a>
+<span class="sourceLineNo">460</span>   * @throws IllegalArgumentException<a name="line.460"></a>
+<span class="sourceLineNo">461</span>   */<a name="line.461"></a>
+<span class="sourceLineNo">462</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      final byte[] qualifier, final long timestamp, final byte[] value,<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      final List&lt;Tag&gt; tags) {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      family, 0, family==null ? 0 : family.length,<a name="line.466"></a>
+<span class="sourceLineNo">467</span>      qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      timestamp, Type.Put,<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      value, 0, value==null ? 0 : value.length, tags);<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  }<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
+<span class="sourceLineNo">472</span>  /**<a name="line.472"></a>
+<span class="sourceLineNo">473</span>   * Constructs KeyValue structure filled with specified values.<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   * @param row row key<a name="line.474"></a>
+<span class="sourceLineNo">475</span>   * @param family family name<a name="line.475"></a>
+<span class="sourceLineNo">476</span>   * @param qualifier column qualifier<a name="line.476"></a>
+<span class="sourceLineNo">477</span>   * @param timestamp version timestamp<a name="line.477"></a>
+<span class="sourceLineNo">478</span>   * @param type key type<a name="line.478"></a>
+<span class="sourceLineNo">479</span>   * @param value column value<a name="line.479"></a>
+<span class="sourceLineNo">480</span>   * @throws IllegalArgumentException<a name="line.480"></a>
+<span class="sourceLineNo">481</span>   */<a name="line.481"></a>
+<span class="sourceLineNo">482</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      final byte[] value) {<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    this(row, 0, len(row),   family, 0, len(family),   qualifier, 0, len(qualifier),<a name="line.485"></a>
+<span class="sourceLineNo">486</span>        timestamp, type,   value, 0, len(value));<a name="line.486"></a>
+<span class="sourceLineNo">487</span>  }<a name="line.487"></a>
+<span class="sourceLineNo">488</span><a name="line.488"></a>
+<span class="sourceLineNo">489</span>  /**<a name="line.489"></a>
+<span class="sourceLineNo">490</span>   * Constructs KeyValue structure filled with specified values.<a name="line.490"></a>
+<span class="sourceLineNo">491</span>   * &lt;p&gt;<a name="line.491"></a>
+<span class="sourceLineNo">492</span>   * Column is split into two fields, family and qualifier.<a name="line.492"></a>
+<span class="sourceLineNo">493</span>   * @param row row key<a name="line.493"></a>
+<span class="sourceLineNo">494</span>   * @param family family name<a name="line.494"></a>
+<span class="sourceLineNo">495</span>   * @param qualifier column qualifier<a name="line.495"></a>
+<span class="sourceLineNo">496</span>   * @param timestamp version timestamp<a name="line.496"></a>
+<span class="sourceLineNo">497</span>   * @param type key type<a name="line.497"></a>
+<span class="sourceLineNo">498</span>   * @param value column value<a name="line.498"></a>
+<span class="sourceLineNo">499</span>   * @throws IllegalArgumentException<a name="line.499"></a>
+<span class="sourceLineNo">500</span>   */<a name="line.500"></a>
+<span class="sourceLineNo">501</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.501"></a>
+<span class="sourceLineNo">502</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      final byte[] value, final List&lt;Tag&gt; tags) {<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    this(row, family, qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.504"></a>
+<span class="sourceLineNo">505</span>        timestamp, type, value, 0, value==null ? 0 : value.length, tags);<a name="line.505"></a>
+<span class="sourceLineNo">506</span>  }<a name="line.506"></a>
+<span class="sourceLineNo">507</span><a name="line.507"></a>
+<span class="sourceLineNo">508</span>  /**<a name="line.508"></a>
+<span class="sourceLineNo">509</span>   * Constructs KeyValue structure filled with specified values.<a name="line.509"></a>
+<span class="sourceLineNo">510</span>   * @param row row key<a name="line.510"></a>
+<span class="sourceLineNo">511</span>   * @param family family name<a name="line.511"></a>
+<span class="sourceLineNo">512</span>   * @param qualifier column qualifier<a name="line.512"></a>
+<span class="sourceLineNo">513</span>   * @param timestamp version timestamp<a name="line.513"></a>
+<span class="sourceLineNo">514</span>   * @param type key type<a name="line.514"></a>
+<span class="sourceLineNo">515</span>   * @param value column value<a name="line.515"></a>
+<span class="sourceLineNo">516</span>   * @throws IllegalArgumentException<a name="line.516"></a>
+<span class="sourceLineNo">517</span>   */<a name="line.517"></a>
+<span class="sourceLineNo">518</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.518"></a>
+<span class="sourceLineNo">519</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.519"></a>
+<span class="sourceLineNo">520</span>      final byte[] value, final byte[] tags) {<a name="line.520"></a>
+<span class="sourceLineNo">521</span>    this(row, family, qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.521"></a>
+<span class="sourceLineNo">522</span>        timestamp, type, value, 0, value==null ? 0 : value.length, tags);<a name="line.522"></a>
+<span class="sourceLineNo">523</span>  }<a name="line.523"></a>
+<span class="sourceLineNo">524</span><a name="line.524"></a>
+<span class="sourceLineNo">525</span>  /**<a name="line.525"></a>
+<span class="sourceLineNo">526</span>   * Constructs KeyValue structure filled with specified values.<a name="line.526"></a>
+<span class="sourceLineNo">527</span>   * @param row row key<a name="line.527"></a>
+<span class="sourceLineNo">528</span>   * @param family family name<a name="line.528"></a>
+<span class="sourceLineNo">529</span>   * @param qualifier column qualifier<a name="line.529"></a>
+<span class="sourceLineNo">530</span>   * @param qoffset qualifier offset<a name="line.530"></a>
+<span class="sourceLineNo">531</span>   * @param qlength qualifier length<a name="line.531"></a>
+<span class="sourceLineNo">532</span>   * @param timestamp version timestamp<a name="line.532"></a>
+<span class="sourceLineNo">533</span>   * @param type key type<a name="line.533"></a>
+<span class="sourceLineNo">534</span>   * @param value column value<a name="line.534"></a>
+<span class="sourceLineNo">535</span>   * @param voffset value offset<a name="line.535"></a>
+<span class="sourceLineNo">536</span>   * @param vlength value length<a name="line.536"></a>
+<span class="sourceLineNo">537</span>   * @throws IllegalArgumentException<a name="line.537"></a>
+<span class="sourceLineNo">538</span>   */<a name="line.538"></a>
+<span class="sourceLineNo">539</span>  public KeyValue(byte [] row, byte [] family,<a name="line.539"></a>
+<span class="sourceLineNo">540</span>      byte [] qualifier, int qoffset, int qlength, long timestamp, Type type,<a name="line.540"></a>
+<span class="sourceLineNo">541</span>      byte [] value, int voffset, int vlength, List&lt;Tag&gt; tags) {<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.542"></a>
+<span class="sourceLineNo">543</span>        family, 0, family==null ? 0 : family.length,<a name="line.543"></a>
+<span class="sourceLineNo">544</span>        qualifier, qoffset, qlength, timestamp, type,<a name="line.544"></a>
+<span class="sourceLineNo">545</span>        value, voffset, vlength, tags);<a name="line.545"></a>
+<span class="sourceLineNo">546</span>  }<a name="line.546"></a>
+<span class="sourceLineNo">547</span><a name="line.547"></a>
+<span class="sourceLineNo">548</span>  /**<a name="line.548"></a>
+<span class="sourceLineNo">549</span>   * @param row<a name="line.549"></a>
+<span class="sourceLineNo">550</span>   * @param family<a name="line.550"></a>
+<span class="sourceLineNo">551</span>   * @param qualifier<a name="line.551"></a>
+<span class="sourceLineNo">552</span>   * @param qoffset<a name="line.552"></a>
+<span class="sourceLineNo">553</span>   * @param qlength<a name="line.553"></a>
+<span class="sourceLineNo">554</span>   * @param timestamp<a name="line.554"></a>
+<span class="sourceLineNo">555</span>   * @param type<a name="line.555"></a>
+<span class="sourceLineNo">556</span>   * @param value<a name="line.556"></a>
+<span class="sourceLineNo">557</span>   * @param voffset<a name="line.557"></a>
+<span class="sourceLineNo">558</span>   * @param vlength<a name="line.558"></a>
+<span class="sourceLineNo">559</span>   * @param tags<a name="line.559"></a>
+<span class="sourceLineNo">560</span>   */<a name="line.560"></a>
+<span class="sourceLineNo">561</span>  public KeyValue(byte [] row, byte [] family,<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      byte [] qualifier, int qoffset, int qlength, long timestamp, Type type,<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      byte [] value, int voffset, int vlength, byte[] tags) {<a name="line.563"></a>
+<span class="sourceLineNo">564</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.564"></a>
+<span class="sourceLineNo">565</span>        family, 0, family==null ? 0 : family.length,<a name="line.565"></a>
+<span class="sourceLineNo">566</span>        qualifier, qoffset, qlength, timestamp, type,<a name="line.566"></a>
+<span class="sourceLineNo">567</span>        value, voffset, vlength, tags, 0, tags==null ? 0 : tags.length);<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>  /**<a name="line.570"></a>
+<span class="sourceLineNo">571</span>   * Constructs KeyValue structure filled with specified values.<a name="line.571"></a>
+<span class="sourceLineNo">572</span>   * &lt;p&gt;<a name="line.572"></a>
+<span class="sourceLineNo">573</span>   * Column is split into two fields, family and qualifier.<a name="line.573"></a>
+<span class="sourceLineNo">574</span>   * @param row row key<a name="line.574"></a>
+<span class="sourceLineNo">575</span>   * @throws IllegalArgumentException<a name="line.575"></a>
+<span class="sourceLineNo">576</span>   */<a name="line.576"></a>
+<span class="sourceLineNo">577</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.577"></a>
+<span class="sourceLineNo">578</span>      final byte [] family, final int foffset, final int flength,<a name="line.578"></a>
+<span class="sourceLineNo">579</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      final long timestamp, final Type type,<a name="line.580"></a>
+<span class="sourceLineNo">581</span>      final byte [] value, final int voffset, final int vlength) {<a name="line.581"></a>
+<span class="sourceLineNo">582</span>    this(row, roffset, rlength, family, foffset, flength, qualifier, qoffset,<a name="line.582"></a>
+<span class="sourceLineNo">583</span>      qlength, timestamp, type, value, voffset, vlength, null);<a name="line.583"></a>
+<span class="sourceLineNo">584</span>  }<a name="line.584"></a>
+<span class="sourceLineNo">585</span><a name="line.585"></a>
+<span class="sourceLineNo">586</span>  /**<a name="line.586"></a>
+<span class="sourceLineNo">587</span>   * Constructs KeyValue structure filled with specified values. Uses the provided buffer as the<a name="line.587"></a>
+<span class="sourceLineNo">588</span>   * data buffer.<a name="line.588"></a>
+<span class="sourceLineNo">589</span>   * &lt;p&gt;<a name="line.589"></a>
+<span class="sourceLineNo">590</span>   * Column is split into two fields, family and qualifier.<a name="line.590"></a>
+<span class="sourceLineNo">591</span>   *<a name="line.591"></a>
+<span class="sourceLineNo">592</span>   * @param buffer the bytes buffer to use<a name="line.592"></a>
+<span class="sourceLineNo">593</span>   * @param boffset buffer offset<a name="line.593"></a>
+<span class="sourceLineNo">594</span>   * @param row row key<a name="line.594"></a>
+<span class="sourceLineNo">595</span>   * @param roffset row offset<a name="line.595"></a>
+<span class="sourceLineNo">596</span>   * @param rlength row length<a name="line.596"></a>
+<span class="sourceLineNo">597</span>   * @param family family name<a name="line.597"></a>
+<span class="sourceLineNo">598</span>   * @param foffset family offset<a name="line.598"></a>
+<span class="sourceLineNo">599</span>   * @param flength family length<a name="line.599"></a>
+<span class="sourceLineNo">600</span>   * @param qualifier column qualifier<a name="line.600"></a>
+<span class="sourceLineNo">601</span>   * @param qoffset qualifier offset<a name="line.601"></a>
+<span class="sourceLineNo">602</span>   * @param qlength qualifier length<a name="line.602"></a>
+<span class="sourceLineNo">603</span>   * @param timestamp version timestamp<a name="line.603"></a>
+<span class="sourceLineNo">604</span>   * @param type key type<a name="line.604"></a>
+<span class="sourceLineNo">605</span>   * @param value column value<a name="line.605"></a>
+<span class="sourceLineNo">606</span>   * @param voffset value offset<a name="line.606"></a>
+<span class="sourceLineNo">607</span>   * @param vlength value length<a name="line.607"></a>
+<span class="sourceLineNo">608</span>   * @param tags non-empty list of tags or null<a name="line.608"></a>
+<span class="sourceLineNo">609</span>   * @throws IllegalArgumentException an illegal value was passed or there is insufficient space<a name="line.609"></a>
+<span class="sourceLineNo">610</span>   * remaining in the buffer<a name="line.610"></a>
+<span class="sourceLineNo">611</span>   */<a name="line.611"></a>
+<span class="sourceLineNo">612</span>  public KeyValue(byte [] buffer, final int boffset,<a name="line.612"></a>
+<span class="sourceLineNo">613</span>      final byte [] row, final int roffset, final int rlength,<a name="line.613"></a>
+<span class="sourceLineNo">614</span>      final byte [] family, final int foffset, final int flength,<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.615"></a>
+<span class="sourceLineNo">616</span>      final long timestamp, final Type type,<a name="line.616"></a>
+<span class="sourceLineNo">617</span>      final byte [] value, final int voffset, final int vlength,<a name="line.617"></a>
+<span class="sourceLineNo">618</span>      final Tag[] tags) {<a name="line.618"></a>
+<span class="sourceLineNo">619</span>     this.bytes  = buffer;<a name="line.619"></a>
+<span class="sourceLineNo">620</span>     this.length = writeByteArray(buffer, boffset,<a name="line.620"></a>
+<span class="sourceLineNo">621</span>         row, roffset, rlength,<a name="line.621"></a>
+<span class="sourceLineNo">622</span>         family, foffset, flength, qualifier, qoffset, qlength,<a name="line.622"></a>
+<span class="sourceLineNo">623</span>        timestamp, type, value, voffset, vlength, tags);<a name="line.623"></a>
+<span class="sourceLineNo">624</span>     this.offset = boffset;<a name="line.624"></a>
+<span class="sourceLineNo">625</span>   }<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">628</span>   * Constructs KeyValue structure filled with specified values.<a name="line.628"></a>
+<span class="sourceLineNo">629</span>   * &lt;p&gt;<a name="line.629"></a>
+<span class="sourceLineNo">630</span>   * Column is split into two fields, family and qualifier.<a name="line.630"></a>
+<span class="sourceLineNo">631</span>   * @param row row key<a name="line.631"></a>
+<span class="sourceLineNo">632</span>   * @param roffset row offset<a name="line.632"></a>
+<span class="sourceLineNo">633</span>   * @param rlength row length<a name="line.633"></a>
+<span class="sourceLineNo">634</span>   * @param family family name<a name="line.634"></a>
+<span class="sourceLineNo">635</span>   * @param foffset family offset<a name="line.635"></a>
+<span class="sourceLineNo">636</span>   * @param flength family length<a name="line.636"></a>
+<span class="sourceLineNo">637</span>   * @param qualifier column qualifier<a name="line.637"></a>
+<span class="sourceLineNo">638</span>   * @param qoffset qualifier offset<a name="line.638"></a>
+<span class="sourceLineNo">639</span>   * @param qlength qualifier length<a name="line.639"></a>
+<span class="sourceLineNo">640</span>   * @param timestamp version timestamp<a name="line.640"></a>
+<span class="sourceLineNo">641</span>   * @param type key type<a name="line.641"></a>
+<span class="sourceLineNo">642</span>   * @param value column value<a name="line.642"></a>
+<span class="sourceLineNo">643</span>   * @param voffset value offset<a name="line.643"></a>
+<span class="sourceLineNo">644</span>   * @param vlength value length<a name="line.644"></a>
+<span class="sourceLineNo">645</span>   * @param tags tags<a name="line.645"></a>
+<span class="sourceLineNo">646</span>   * @throws IllegalArgumentException<a name="line.646"></a>
+<span class="sourceLineNo">647</span>   */<a name="line.647"></a>
+<span class="sourceLineNo">648</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.648"></a>
+<span class="sourceLineNo">649</span>      final byte [] family, final int foffset, final int flength,<a name="line.649"></a>
+<span class="sourceLineNo">650</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.650"></a>
+<span class="sourceLineNo">651</span>      final long timestamp, final Type type,<a name="line.651"></a>
+<span class="sourceLineNo">652</span>      final byte [] value, final int voffset, final int vlength,<a name="line.652"></a>
+<span class="sourceLineNo">653</span>      final List&lt;Tag&gt; tags) {<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    this.bytes = createByteArray(row, roffset, rlength,<a name="line.654"></a>
+<span class="sourceLineNo">655</span>        family, foffset, flength, qualifier, qoffset, qlength,<a name="line.655"></a>
+<span class="sourceLineNo">656</span>        timestamp, type, value, voffset, vlength, tags);<a name="line.656"></a>
+<span class="sourceLineNo">657</span>    this.length = bytes.length;<a name="line.657"></a>
+<span class="sourceLineNo">658</span>    this.offset = 0;<a name="line.658"></a>
+<span class="sourceLineNo">659</span>  }<a name="line.659"></a>
+<span class="sourceLineNo">660</span><a name="line.660"></a>
+<span class="sourceLineNo">661</span>  /**<a name="line.661"></a>
+<span class="sourceLineNo">662</span>   * @param row<a name="line.662"></a>
+<span class="sourceLineNo">663</span>   * @param roffset<a name="line.663"></a>
+<span class="sourceLineNo">664</span>   * @param rlength<a name="line.664"></a>
+<span class="sourceLineNo">665</span>   * @param family<a name="line.665"></a>
+<span class="sourceLineNo">666</span>   * @param foffset<a name="line.666"></a>
+<span class="sourceLineNo">667</span>   * @param flength<a name="line.667"></a>
+<span class="sourceLineNo">668</span>   * @param qualifier<a name="line.668"></a>
+<span class="sourceLineNo">669</span>   * @param qoffset<a name="line.669"></a>
+<span class="sourceLineNo">670</span>   * @param qlength<a name="line.670"></a>
+<span class="sourceLineNo">671</span>   * @param timestamp<a name="line.671"></a>
+<span class="sourceLineNo">672</span>   * @param type<a name="line.672"></a>
+<span class="sourceLineNo">673</span>   * @param value<a name="line.673"></a>
+<span class="sourceLineNo">674</span>   * @param voffset<a name="line.674"></a>
+<span class="sourceLineNo">675</span>   * @param vlength<a name="line.675"></a>
+<span class="sourceLineNo">676</span>   * @param tags<a name="line.676"></a>
+<span class="sourceLineNo">677</span>   */<a name="line.677"></a>
+<span class="sourceLineNo">678</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.678"></a>
+<span class="sourceLineNo">679</span>      final byte [] family, final int foffset, final int flength,<a name="line.679"></a>
+<span class="sourceLineNo">680</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.680"></a>
+<span class="sourceLineNo">681</span>      final long timestamp, final Type type,<a name="line.681"></a>
+<span class="sourceLineNo">682</span>      final byte [] value, final int voffset, final int vlength,<a name="line.682"></a>
+<span class="sourceLineNo">683</span>      final byte[] tags, final int tagsOffset, final int tagsLength) {<a name="line.683"></a>
+<span class="sourceLineNo">684</span>    this.bytes = createByteArray(row, roffset, rlength,<a name="line.684"></a>
+<span class="sourceLineNo">685</span>        family, foffset, flength, qualifier, qoffset, qlength,<a name="line.685"></a>
+<span class="sourceLineNo">686</span>        timestamp, type, value, voffset, vlength, tags, tagsOffset, tagsLength);<a name="line.686"></a>
+<span class="sourceLineNo">687</span>    this.length = bytes.length;<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    this.offset = 0;<a name="line.688"></a>
+<span class="sourceLineNo">689</span>  }<a name="line.689"></a>
+<span class="sourceLineNo">690</span><a name="line.690"></a>
+<span class="sourceLineNo">691</span>  /**<a name="line.691"></a>
+<span class="sourceLineNo">692</span>   * Constructs an empty KeyValue structure, with specified sizes.<a name="line.692"></a>
+<span class="sourceLineNo">693</span>   * This can be used to partially fill up KeyValues.<a name="line.693"></a>
+<span class="sourceLineNo">694</span>   * &lt;p&gt;<a name="line.694"></a>
+<span class="sourceLineNo">695</span>   * Column is split into two fields, family and qualifier.<a name="line.695"></a>
+<span class="sourceLineNo">696</span>   * @param rlength row length<a name="line.696"></a>
+<span class="sourceLineNo">697</span>   * @param flength family length<a name="line.697"></a>
+<span class="sourceLineNo">698</span>   * @param qlength qualifier length<a name="line.698"></a>
+<span class="sourceLineNo">699</span>   * @param timestamp version timestamp<a name="line.699"></a>
+<span class="sourceLineNo">700</span>   * @param type key type<a name="line.700"></a>
+<span class="sourceLineNo">701</span>   * @param vlength value length<a name="line.701"></a>
+<span class="sourceLineNo">702</span>   * @throws IllegalArgumentException<a name="line.702"></a>
+<span class="sourceLineNo">703</span>   */<a name="line.703"></a>
+<span class="sourceLineNo">704</span>  public KeyValue(final int rlength,<a name="line.704"></a>
+<span class="sourceLineNo">705</span>      final int flength,<a name="line.705"></a>
+<span class="sourceLineNo">706</span>      final int qlength,<a name="line.706"></a>
+<span class="sourceLineNo">707</span>      final long timestamp, final Type type,<a name="line.707"></a>
+<span class="sourceLineNo">708</span>      final int vlength) {<a name="line.708"></a>
+<span class="sourceLineNo">709</span>    this(rlength, flen

<TRUNCATED>

[03/29] hbase-site git commit: Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.IntegerRange.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.IntegerRange.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.IntegerRange.html
index 28b8679..c6dd2b6 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.IntegerRange.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.IntegerRange.html
@@ -40,531 +40,530 @@
 <span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.32"></a>
 <span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.33"></a>
 <span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.KeyValue;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.KeyValueUtil;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.io.hfile.HFile.Reader;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.io.hfile.HFile.Writer;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.testclassification.IOTests;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.io.BytesWritable;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.junit.ClassRule;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.junit.experimental.categories.Category;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.slf4j.Logger;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.slf4j.LoggerFactory;<a name="line.44"></a>
-<span class="sourceLineNo">045</span><a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLineParser;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.GnuParser;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.HelpFormatter;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.Option;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.OptionBuilder;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.Options;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.ParseException;<a name="line.53"></a>
-<span class="sourceLineNo">054</span><a name="line.54"></a>
-<span class="sourceLineNo">055</span>/**<a name="line.55"></a>
-<span class="sourceLineNo">056</span> * test the performance for seek.<a name="line.56"></a>
-<span class="sourceLineNo">057</span> * &lt;p&gt;<a name="line.57"></a>
-<span class="sourceLineNo">058</span> * Copied from<a name="line.58"></a>
-<span class="sourceLineNo">059</span> * &lt;a href="https://issues.apache.org/jira/browse/HADOOP-3315"&gt;hadoop-3315 tfile&lt;/a&gt;.<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * Remove after tfile is committed and use the tfile version of this class<a name="line.60"></a>
-<span class="sourceLineNo">061</span> * instead.&lt;/p&gt;<a name="line.61"></a>
-<span class="sourceLineNo">062</span> */<a name="line.62"></a>
-<span class="sourceLineNo">063</span>@Category({IOTests.class, MediumTests.class})<a name="line.63"></a>
-<span class="sourceLineNo">064</span>public class TestHFileSeek extends TestCase {<a name="line.64"></a>
-<span class="sourceLineNo">065</span><a name="line.65"></a>
-<span class="sourceLineNo">066</span>  @ClassRule<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.67"></a>
-<span class="sourceLineNo">068</span>      HBaseClassTestRule.forClass(TestHFileSeek.class);<a name="line.68"></a>
-<span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span>  private static final byte[] CF = "f1".getBytes();<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private static final byte[] QUAL = "q1".getBytes();<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  private static final boolean USE_PREAD = true;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  private MyOptions options;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  private Configuration conf;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>  private Path path;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  private FileSystem fs;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  private NanoTimer timer;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  private Random rng;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  private RandomDistribution.DiscreteRNG keyLenGen;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  private KVGenerator kvGen;<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(TestHFileSeek.class);<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>  public void setUp() throws IOException {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    if (options == null) {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>      options = new MyOptions(new String[0]);<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>    conf = new Configuration();<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>    if (options.useRawFs) {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      conf.setClass("fs.file.impl", RawLocalFileSystem.class, FileSystem.class);<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    }<a name="line.94"></a>
-<span class="sourceLineNo">095</span><a name="line.95"></a>
-<span class="sourceLineNo">096</span>    conf.setInt("tfile.fs.input.buffer.size", options.fsInputBufferSize);<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    conf.setInt("tfile.fs.output.buffer.size", options.fsOutputBufferSize);<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    path = new Path(new Path(options.rootDir), options.file);<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    fs = path.getFileSystem(conf);<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    timer = new NanoTimer(false);<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    rng = new Random(options.seed);<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    keyLenGen =<a name="line.102"></a>
-<span class="sourceLineNo">103</span>        new RandomDistribution.Zipf(new Random(rng.nextLong()),<a name="line.103"></a>
-<span class="sourceLineNo">104</span>            options.minKeyLen, options.maxKeyLen, 1.2);<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    RandomDistribution.DiscreteRNG valLenGen =<a name="line.105"></a>
-<span class="sourceLineNo">106</span>        new RandomDistribution.Flat(new Random(rng.nextLong()),<a name="line.106"></a>
-<span class="sourceLineNo">107</span>            options.minValLength, options.maxValLength);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    RandomDistribution.DiscreteRNG wordLenGen =<a name="line.108"></a>
-<span class="sourceLineNo">109</span>        new RandomDistribution.Flat(new Random(rng.nextLong()),<a name="line.109"></a>
-<span class="sourceLineNo">110</span>            options.minWordLen, options.maxWordLen);<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    kvGen =<a name="line.111"></a>
-<span class="sourceLineNo">112</span>        new KVGenerator(rng, true, keyLenGen, valLenGen, wordLenGen,<a name="line.112"></a>
-<span class="sourceLineNo">113</span>            options.dictSize);<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 void tearDown() {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    try {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      fs.close();<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    }<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    catch (Exception e) {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>      // Nothing<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    }<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  }<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  private static FSDataOutputStream createFSOutput(Path name, FileSystem fs)<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    throws IOException {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    if (fs.exists(name)) {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      fs.delete(name, true);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    }<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    FSDataOutputStream fout = fs.create(name);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    return fout;<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  }<a name="line.133"></a>
-<span class="sourceLineNo">134</span><a name="line.134"></a>
-<span class="sourceLineNo">135</span>  private void createTFile() throws IOException {<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    long totalBytes = 0;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    FSDataOutputStream fout = createFSOutput(path, fs);<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    try {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      HFileContext context = new HFileContextBuilder()<a name="line.139"></a>
-<span class="sourceLineNo">140</span>                            .withBlockSize(options.minBlockSize)<a name="line.140"></a>
-<span class="sourceLineNo">141</span>                            .withCompression(HFileWriterImpl.compressionByName(options.compress))<a name="line.141"></a>
-<span class="sourceLineNo">142</span>                            .build();<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      Writer writer = HFile.getWriterFactoryNoCache(conf)<a name="line.143"></a>
-<span class="sourceLineNo">144</span>          .withOutputStream(fout)<a name="line.144"></a>
-<span class="sourceLineNo">145</span>          .withFileContext(context)<a name="line.145"></a>
-<span class="sourceLineNo">146</span>          .withComparator(CellComparatorImpl.COMPARATOR)<a name="line.146"></a>
-<span class="sourceLineNo">147</span>          .create();<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      try {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>        BytesWritable key = new BytesWritable();<a name="line.149"></a>
-<span class="sourceLineNo">150</span>        BytesWritable val = new BytesWritable();<a name="line.150"></a>
-<span class="sourceLineNo">151</span>        timer.start();<a name="line.151"></a>
-<span class="sourceLineNo">152</span>        for (long i = 0; true; ++i) {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>          if (i % 1000 == 0) { // test the size for every 1000 rows.<a name="line.153"></a>
-<span class="sourceLineNo">154</span>            if (fs.getFileStatus(path).getLen() &gt;= options.fileSize) {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>              break;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>            }<a name="line.156"></a>
-<span class="sourceLineNo">157</span>          }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>          kvGen.next(key, val, false);<a name="line.158"></a>
-<span class="sourceLineNo">159</span>          byte [] k = new byte [key.getLength()];<a name="line.159"></a>
-<span class="sourceLineNo">160</span>          System.arraycopy(key.getBytes(), 0, k, 0, key.getLength());<a name="line.160"></a>
-<span class="sourceLineNo">161</span>          byte [] v = new byte [val.getLength()];<a name="line.161"></a>
-<span class="sourceLineNo">162</span>          System.arraycopy(val.getBytes(), 0, v, 0, key.getLength());<a name="line.162"></a>
-<span class="sourceLineNo">163</span>          KeyValue kv = new KeyValue(k, CF, QUAL, v);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>          writer.append(kv);<a name="line.164"></a>
-<span class="sourceLineNo">165</span>          totalBytes += kv.getKeyLength();<a name="line.165"></a>
-<span class="sourceLineNo">166</span>          totalBytes += kv.getValueLength();<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        }<a name="line.167"></a>
-<span class="sourceLineNo">168</span>        timer.stop();<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      }<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      finally {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        writer.close();<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>    finally {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      fout.close();<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    }<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    double duration = (double)timer.read()/1000; // in us.<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    long fsize = fs.getFileStatus(path).getLen();<a name="line.178"></a>
-<span class="sourceLineNo">179</span><a name="line.179"></a>
-<span class="sourceLineNo">180</span>    System.out.printf(<a name="line.180"></a>
-<span class="sourceLineNo">181</span>        "time: %s...uncompressed: %.2fMB...raw thrpt: %.2fMB/s\n",<a name="line.181"></a>
-<span class="sourceLineNo">182</span>        timer.toString(), (double) totalBytes / 1024 / 1024, totalBytes<a name="line.182"></a>
-<span class="sourceLineNo">183</span>            / duration);<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    System.out.printf("time: %s...file size: %.2fMB...disk thrpt: %.2fMB/s\n",<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        timer.toString(), (double) fsize / 1024 / 1024, fsize / duration);<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>  public void seekTFile() throws IOException {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    int miss = 0;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    long totalBytes = 0;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    FSDataInputStream fsdis = fs.open(path);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    Reader reader = HFile.createReaderFromStream(path, fsdis,<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        fs.getFileStatus(path).getLen(), new CacheConfig(conf), conf);<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    reader.loadFileInfo();<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    KeySampler kSampler = new KeySampler(rng, ((KeyValue) reader.getFirstKey().get()).getKey(),<a name="line.195"></a>
-<span class="sourceLineNo">196</span>        ((KeyValue) reader.getLastKey().get()).getKey(), keyLenGen);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    HFileScanner scanner = reader.getScanner(false, USE_PREAD);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    BytesWritable key = new BytesWritable();<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    timer.reset();<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    timer.start();<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    for (int i = 0; i &lt; options.seekCount; ++i) {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      kSampler.next(key);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      byte [] k = new byte [key.getLength()];<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      System.arraycopy(key.getBytes(), 0, k, 0, key.getLength());<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      if (scanner.seekTo(KeyValueUtil.createKeyValueFromKey(k)) &gt;= 0) {<a name="line.205"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.io.hfile.HFile.Reader;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.io.hfile.HFile.Writer;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.testclassification.IOTests;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.io.BytesWritable;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.junit.ClassRule;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.junit.experimental.categories.Category;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.slf4j.Logger;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.slf4j.LoggerFactory;<a name="line.43"></a>
+<span class="sourceLineNo">044</span><a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLineParser;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.GnuParser;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.HelpFormatter;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.Option;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.OptionBuilder;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.Options;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hbase.thirdparty.org.apache.commons.cli.ParseException;<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> * test the performance for seek.<a name="line.55"></a>
+<span class="sourceLineNo">056</span> * &lt;p&gt;<a name="line.56"></a>
+<span class="sourceLineNo">057</span> * Copied from<a name="line.57"></a>
+<span class="sourceLineNo">058</span> * &lt;a href="https://issues.apache.org/jira/browse/HADOOP-3315"&gt;hadoop-3315 tfile&lt;/a&gt;.<a name="line.58"></a>
+<span class="sourceLineNo">059</span> * Remove after tfile is committed and use the tfile version of this class<a name="line.59"></a>
+<span class="sourceLineNo">060</span> * instead.&lt;/p&gt;<a name="line.60"></a>
+<span class="sourceLineNo">061</span> */<a name="line.61"></a>
+<span class="sourceLineNo">062</span>@Category({IOTests.class, MediumTests.class})<a name="line.62"></a>
+<span class="sourceLineNo">063</span>public class TestHFileSeek extends TestCase {<a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span>  @ClassRule<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.66"></a>
+<span class="sourceLineNo">067</span>      HBaseClassTestRule.forClass(TestHFileSeek.class);<a name="line.67"></a>
+<span class="sourceLineNo">068</span><a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private static final byte[] CF = "f1".getBytes();<a name="line.69"></a>
+<span class="sourceLineNo">070</span>  private static final byte[] QUAL = "q1".getBytes();<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  private static final boolean USE_PREAD = true;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  private MyOptions options;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private Configuration conf;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  private Path path;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  private FileSystem fs;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  private NanoTimer timer;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  private Random rng;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  private RandomDistribution.DiscreteRNG keyLenGen;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  private KVGenerator kvGen;<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(TestHFileSeek.class);<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>  @Override<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  public void setUp() throws IOException {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    if (options == null) {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>      options = new MyOptions(new String[0]);<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>    conf = new Configuration();<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>    if (options.useRawFs) {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      conf.setClass("fs.file.impl", RawLocalFileSystem.class, FileSystem.class);<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    }<a name="line.93"></a>
+<span class="sourceLineNo">094</span><a name="line.94"></a>
+<span class="sourceLineNo">095</span>    conf.setInt("tfile.fs.input.buffer.size", options.fsInputBufferSize);<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    conf.setInt("tfile.fs.output.buffer.size", options.fsOutputBufferSize);<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    path = new Path(new Path(options.rootDir), options.file);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    fs = path.getFileSystem(conf);<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    timer = new NanoTimer(false);<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    rng = new Random(options.seed);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    keyLenGen =<a name="line.101"></a>
+<span class="sourceLineNo">102</span>        new RandomDistribution.Zipf(new Random(rng.nextLong()),<a name="line.102"></a>
+<span class="sourceLineNo">103</span>            options.minKeyLen, options.maxKeyLen, 1.2);<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    RandomDistribution.DiscreteRNG valLenGen =<a name="line.104"></a>
+<span class="sourceLineNo">105</span>        new RandomDistribution.Flat(new Random(rng.nextLong()),<a name="line.105"></a>
+<span class="sourceLineNo">106</span>            options.minValLength, options.maxValLength);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    RandomDistribution.DiscreteRNG wordLenGen =<a name="line.107"></a>
+<span class="sourceLineNo">108</span>        new RandomDistribution.Flat(new Random(rng.nextLong()),<a name="line.108"></a>
+<span class="sourceLineNo">109</span>            options.minWordLen, options.maxWordLen);<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    kvGen =<a name="line.110"></a>
+<span class="sourceLineNo">111</span>        new KVGenerator(rng, true, keyLenGen, valLenGen, wordLenGen,<a name="line.111"></a>
+<span class="sourceLineNo">112</span>            options.dictSize);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  }<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  @Override<a name="line.115"></a>
+<span class="sourceLineNo">116</span>  public void tearDown() {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    try {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      fs.close();<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    }<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    catch (Exception e) {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      // Nothing<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    }<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  }<a name="line.123"></a>
+<span class="sourceLineNo">124</span><a name="line.124"></a>
+<span class="sourceLineNo">125</span>  private static FSDataOutputStream createFSOutput(Path name, FileSystem fs)<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    throws IOException {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    if (fs.exists(name)) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      fs.delete(name, true);<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    }<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    FSDataOutputStream fout = fs.create(name);<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    return fout;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  }<a name="line.132"></a>
+<span class="sourceLineNo">133</span><a name="line.133"></a>
+<span class="sourceLineNo">134</span>  private void createTFile() throws IOException {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    long totalBytes = 0;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    FSDataOutputStream fout = createFSOutput(path, fs);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    try {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      HFileContext context = new HFileContextBuilder()<a name="line.138"></a>
+<span class="sourceLineNo">139</span>                            .withBlockSize(options.minBlockSize)<a name="line.139"></a>
+<span class="sourceLineNo">140</span>                            .withCompression(HFileWriterImpl.compressionByName(options.compress))<a name="line.140"></a>
+<span class="sourceLineNo">141</span>                            .build();<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      Writer writer = HFile.getWriterFactoryNoCache(conf)<a name="line.142"></a>
+<span class="sourceLineNo">143</span>          .withOutputStream(fout)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>          .withFileContext(context)<a name="line.144"></a>
+<span class="sourceLineNo">145</span>          .withComparator(CellComparatorImpl.COMPARATOR)<a name="line.145"></a>
+<span class="sourceLineNo">146</span>          .create();<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      try {<a name="line.147"></a>
+<span class="sourceLineNo">148</span>        BytesWritable key = new BytesWritable();<a name="line.148"></a>
+<span class="sourceLineNo">149</span>        BytesWritable val = new BytesWritable();<a name="line.149"></a>
+<span class="sourceLineNo">150</span>        timer.start();<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        for (long i = 0; true; ++i) {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>          if (i % 1000 == 0) { // test the size for every 1000 rows.<a name="line.152"></a>
+<span class="sourceLineNo">153</span>            if (fs.getFileStatus(path).getLen() &gt;= options.fileSize) {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>              break;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>            }<a name="line.155"></a>
+<span class="sourceLineNo">156</span>          }<a name="line.156"></a>
+<span class="sourceLineNo">157</span>          kvGen.next(key, val, false);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>          byte [] k = new byte [key.getLength()];<a name="line.158"></a>
+<span class="sourceLineNo">159</span>          System.arraycopy(key.getBytes(), 0, k, 0, key.getLength());<a name="line.159"></a>
+<span class="sourceLineNo">160</span>          byte [] v = new byte [val.getLength()];<a name="line.160"></a>
+<span class="sourceLineNo">161</span>          System.arraycopy(val.getBytes(), 0, v, 0, key.getLength());<a name="line.161"></a>
+<span class="sourceLineNo">162</span>          KeyValue kv = new KeyValue(k, CF, QUAL, v);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>          writer.append(kv);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>          totalBytes += kv.getKeyLength();<a name="line.164"></a>
+<span class="sourceLineNo">165</span>          totalBytes += kv.getValueLength();<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        timer.stop();<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      }<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      finally {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>        writer.close();<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>    finally {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      fout.close();<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    }<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    double duration = (double)timer.read()/1000; // in us.<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    long fsize = fs.getFileStatus(path).getLen();<a name="line.177"></a>
+<span class="sourceLineNo">178</span><a name="line.178"></a>
+<span class="sourceLineNo">179</span>    System.out.printf(<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        "time: %s...uncompressed: %.2fMB...raw thrpt: %.2fMB/s\n",<a name="line.180"></a>
+<span class="sourceLineNo">181</span>        timer.toString(), (double) totalBytes / 1024 / 1024, totalBytes<a name="line.181"></a>
+<span class="sourceLineNo">182</span>            / duration);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    System.out.printf("time: %s...file size: %.2fMB...disk thrpt: %.2fMB/s\n",<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        timer.toString(), (double) fsize / 1024 / 1024, fsize / duration);<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>  public void seekTFile() throws IOException {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    int miss = 0;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    long totalBytes = 0;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    FSDataInputStream fsdis = fs.open(path);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    Reader reader = HFile.createReaderFromStream(path, fsdis,<a name="line.191"></a>
+<span class="sourceLineNo">192</span>        fs.getFileStatus(path).getLen(), new CacheConfig(conf), conf);<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    reader.loadFileInfo();<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    KeySampler kSampler = new KeySampler(rng, ((KeyValue) reader.getFirstKey().get()).getKey(),<a name="line.194"></a>
+<span class="sourceLineNo">195</span>        ((KeyValue) reader.getLastKey().get()).getKey(), keyLenGen);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    HFileScanner scanner = reader.getScanner(false, USE_PREAD);<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    BytesWritable key = new BytesWritable();<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    timer.reset();<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    timer.start();<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    for (int i = 0; i &lt; options.seekCount; ++i) {<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      kSampler.next(key);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      byte[] k = new byte[key.getLength()];<a name="line.202"></a>
+<span class="sourceLineNo">203</span>      System.arraycopy(key.getBytes(), 0, k, 0, key.getLength());<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      KeyValue kv = new KeyValue(k, CF, QUAL);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      if (scanner.seekTo(kv) &gt;= 0) {<a name="line.205"></a>
 <span class="sourceLineNo">206</span>        ByteBuffer bbkey = ByteBuffer.wrap(((KeyValue) scanner.getKey()).getKey());<a name="line.206"></a>
 <span class="sourceLineNo">207</span>        ByteBuffer bbval = scanner.getValue();<a name="line.207"></a>
 <span class="sourceLineNo">208</span>        totalBytes += bbkey.limit();<a name="line.208"></a>
 <span class="sourceLineNo">209</span>        totalBytes += bbval.limit();<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      }<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      else {<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        ++miss;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      }<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    }<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    timer.stop();<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    System.out.printf(<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        "time: %s...avg seek: %s...%d hit...%d miss...avg I/O size: %.2fKB\n",<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        timer.toString(), NanoTimer.nanoTimeToString(timer.read()<a name="line.218"></a>
-<span class="sourceLineNo">219</span>            / options.seekCount), options.seekCount - miss, miss,<a name="line.219"></a>
-<span class="sourceLineNo">220</span>        (double) totalBytes / 1024 / (options.seekCount - miss));<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>  public void testSeeks() throws IOException {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    if (options.doCreate()) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      createTFile();<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>    if (options.doRead()) {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      seekTFile();<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    }<a name="line.231"></a>
-<span class="sourceLineNo">232</span><a name="line.232"></a>
-<span class="sourceLineNo">233</span>    if (options.doCreate()) {<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      fs.delete(path, true);<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><a name="line.237"></a>
-<span class="sourceLineNo">238</span>  private static class IntegerRange {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    private final int from, to;<a name="line.239"></a>
-<span class="sourceLineNo">240</span><a name="line.240"></a>
-<span class="sourceLineNo">241</span>    public IntegerRange(int from, int to) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      this.from = from;<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      this.to = to;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    }<a name="line.244"></a>
-<span class="sourceLineNo">245</span><a name="line.245"></a>
-<span class="sourceLineNo">246</span>    public static IntegerRange parse(String s) throws ParseException {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      StringTokenizer st = new StringTokenizer(s, " \t,");<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      if (st.countTokens() != 2) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        throw new ParseException("Bad integer specification: " + s);<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      }<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      int from = Integer.parseInt(st.nextToken());<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      int to = Integer.parseInt(st.nextToken());<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      return new IntegerRange(from, to);<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    }<a name="line.254"></a>
-<span class="sourceLineNo">255</span><a name="line.255"></a>
-<span class="sourceLineNo">256</span>    public int from() {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      return from;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    }<a name="line.258"></a>
-<span class="sourceLineNo">259</span><a name="line.259"></a>
-<span class="sourceLineNo">260</span>    public int to() {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      return to;<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    }<a name="line.262"></a>
-<span class="sourceLineNo">263</span>  }<a name="line.263"></a>
-<span class="sourceLineNo">264</span><a name="line.264"></a>
-<span class="sourceLineNo">265</span>  private static class MyOptions {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    // hard coded constants<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    int dictSize = 1000;<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    int minWordLen = 5;<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    int maxWordLen = 20;<a name="line.269"></a>
-<span class="sourceLineNo">270</span><a name="line.270"></a>
-<span class="sourceLineNo">271</span>    private HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    String rootDir =<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      TEST_UTIL.getDataTestDir("TestTFileSeek").toString();<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    String file = "TestTFileSeek";<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    // String compress = "lzo"; DISABLED<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    String compress = "none";<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    int minKeyLen = 10;<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    int maxKeyLen = 50;<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    int minValLength = 1024;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    int maxValLength = 2 * 1024;<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    int minBlockSize = 1 * 1024 * 1024;<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    int fsOutputBufferSize = 1;<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    int fsInputBufferSize = 0;<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    // Default writing 10MB.<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    long fileSize = 10 * 1024 * 1024;<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    long seekCount = 1000;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>    long trialCount = 1;<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    long seed;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    boolean useRawFs = false;<a name="line.289"></a>
-<span class="sourceLineNo">290</span><a name="line.290"></a>
-<span class="sourceLineNo">291</span>    static final int OP_CREATE = 1;<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    static final int OP_READ = 2;<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    int op = OP_CREATE | OP_READ;<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>    boolean proceed = false;<a name="line.295"></a>
-<span class="sourceLineNo">296</span><a name="line.296"></a>
-<span class="sourceLineNo">297</span>    public MyOptions(String[] args) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      seed = System.nanoTime();<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>      try {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        Options opts = buildOptions();<a name="line.301"></a>
-<span class="sourceLineNo">302</span>        CommandLineParser parser = new GnuParser();<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        CommandLine line = parser.parse(opts, args, true);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        processOptions(line, opts);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        validateOptions();<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      }<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      catch (ParseException e) {<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        System.out.println(e.getMessage());<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        System.out.println("Try \"--help\" option for details.");<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        setStopProceed();<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>    public boolean proceed() {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      return proceed;<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>    private Options buildOptions() {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      Option compress =<a name="line.319"></a>
-<span class="sourceLineNo">320</span>          OptionBuilder.withLongOpt("compress").withArgName("[none|lzo|gz|snappy]")<a name="line.320"></a>
-<span class="sourceLineNo">321</span>              .hasArg().withDescription("compression scheme").create('c');<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>      Option fileSize =<a name="line.323"></a>
-<span class="sourceLineNo">324</span>          OptionBuilder.withLongOpt("file-size").withArgName("size-in-MB")<a name="line.324"></a>
-<span class="sourceLineNo">325</span>              .hasArg().withDescription("target size of the file (in MB).")<a name="line.325"></a>
-<span class="sourceLineNo">326</span>              .create('s');<a name="line.326"></a>
-<span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>      Option fsInputBufferSz =<a name="line.328"></a>
-<span class="sourceLineNo">329</span>          OptionBuilder.withLongOpt("fs-input-buffer").withArgName("size")<a name="line.329"></a>
-<span class="sourceLineNo">330</span>              .hasArg().withDescription(<a name="line.330"></a>
-<span class="sourceLineNo">331</span>                  "size of the file system input buffer (in bytes).").create(<a name="line.331"></a>
-<span class="sourceLineNo">332</span>                  'i');<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>      Option fsOutputBufferSize =<a name="line.334"></a>
-<span class="sourceLineNo">335</span>          OptionBuilder.withLongOpt("fs-output-buffer").withArgName("size")<a name="line.335"></a>
-<span class="sourceLineNo">336</span>              .hasArg().withDescription(<a name="line.336"></a>
-<span class="sourceLineNo">337</span>                  "size of the file system output buffer (in bytes).").create(<a name="line.337"></a>
-<span class="sourceLineNo">338</span>                  'o');<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>      Option keyLen =<a name="line.340"></a>
-<span class="sourceLineNo">341</span>          OptionBuilder<a name="line.341"></a>
-<span class="sourceLineNo">342</span>              .withLongOpt("key-length")<a name="line.342"></a>
-<span class="sourceLineNo">343</span>              .withArgName("min,max")<a name="line.343"></a>
-<span class="sourceLineNo">344</span>              .hasArg()<a name="line.344"></a>
-<span class="sourceLineNo">345</span>              .withDescription(<a name="line.345"></a>
-<span class="sourceLineNo">346</span>                  "the length range of the key (in bytes)")<a name="line.346"></a>
-<span class="sourceLineNo">347</span>              .create('k');<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>      Option valueLen =<a name="line.349"></a>
-<span class="sourceLineNo">350</span>          OptionBuilder<a name="line.350"></a>
-<span class="sourceLineNo">351</span>              .withLongOpt("value-length")<a name="line.351"></a>
-<span class="sourceLineNo">352</span>              .withArgName("min,max")<a name="line.352"></a>
-<span class="sourceLineNo">353</span>              .hasArg()<a name="line.353"></a>
-<span class="sourceLineNo">354</span>              .withDescription(<a name="line.354"></a>
-<span class="sourceLineNo">355</span>                  "the length range of the value (in bytes)")<a name="line.355"></a>
-<span class="sourceLineNo">356</span>              .create('v');<a name="line.356"></a>
-<span class="sourceLineNo">357</span><a name="line.357"></a>
-<span class="sourceLineNo">358</span>      Option blockSz =<a name="line.358"></a>
-<span class="sourceLineNo">359</span>          OptionBuilder.withLongOpt("block").withArgName("size-in-KB").hasArg()<a name="line.359"></a>
-<span class="sourceLineNo">360</span>              .withDescription("minimum block size (in KB)").create('b');<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>      Option operation =<a name="line.362"></a>
-<span class="sourceLineNo">363</span>          OptionBuilder.withLongOpt("operation").withArgName("r|w|rw").hasArg()<a name="line.363"></a>
-<span class="sourceLineNo">364</span>              .withDescription(<a name="line.364"></a>
-<span class="sourceLineNo">365</span>                  "action: seek-only, create-only, seek-after-create").create(<a name="line.365"></a>
-<span class="sourceLineNo">366</span>                  'x');<a name="line.366"></a>
-<span class="sourceLineNo">367</span><a name="line.367"></a>
-<span class="sourceLineNo">368</span>      Option rootDir =<a name="line.368"></a>
-<span class="sourceLineNo">369</span>          OptionBuilder.withLongOpt("root-dir").withArgName("path").hasArg()<a name="line.369"></a>
-<span class="sourceLineNo">370</span>              .withDescription(<a name="line.370"></a>
-<span class="sourceLineNo">371</span>                  "specify root directory where files will be created.")<a name="line.371"></a>
-<span class="sourceLineNo">372</span>              .create('r');<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>      Option file =<a name="line.374"></a>
-<span class="sourceLineNo">375</span>          OptionBuilder.withLongOpt("file").withArgName("name").hasArg()<a name="line.375"></a>
-<span class="sourceLineNo">376</span>              .withDescription("specify the file name to be created or read.")<a name="line.376"></a>
-<span class="sourceLineNo">377</span>              .create('f');<a name="line.377"></a>
-<span class="sourceLineNo">378</span><a name="line.378"></a>
-<span class="sourceLineNo">379</span>      Option seekCount =<a name="line.379"></a>
-<span class="sourceLineNo">380</span>          OptionBuilder<a name="line.380"></a>
-<span class="sourceLineNo">381</span>              .withLongOpt("seek")<a name="line.381"></a>
-<span class="sourceLineNo">382</span>              .withArgName("count")<a name="line.382"></a>
-<span class="sourceLineNo">383</span>              .hasArg()<a name="line.383"></a>
-<span class="sourceLineNo">384</span>              .withDescription(<a name="line.384"></a>
-<span class="sourceLineNo">385</span>                  "specify how many seek operations we perform (requires -x r or -x rw.")<a name="line.385"></a>
-<span class="sourceLineNo">386</span>              .create('n');<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>      Option trialCount =<a name="line.388"></a>
-<span class="sourceLineNo">389</span>          OptionBuilder<a name="line.389"></a>
-<span class="sourceLineNo">390</span>              .withLongOpt("trials")<a name="line.390"></a>
-<span class="sourceLineNo">391</span>              .withArgName("n")<a name="line.391"></a>
-<span class="sourceLineNo">392</span>              .hasArg()<a name="line.392"></a>
-<span class="sourceLineNo">393</span>              .withDescription(<a name="line.393"></a>
-<span class="sourceLineNo">394</span>                  "specify how many times to run the whole benchmark")<a name="line.394"></a>
-<span class="sourceLineNo">395</span>              .create('t');<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>      Option useRawFs =<a name="line.397"></a>
-<span class="sourceLineNo">398</span>          OptionBuilder<a name="line.398"></a>
-<span class="sourceLineNo">399</span>            .withLongOpt("rawfs")<a name="line.399"></a>
-<span class="sourceLineNo">400</span>            .withDescription("use raw instead of checksummed file system")<a name="line.400"></a>
-<span class="sourceLineNo">401</span>            .create();<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>      Option help =<a name="line.403"></a>
-<span class="sourceLineNo">404</span>          OptionBuilder.withLongOpt("help").hasArg(false).withDescription(<a name="line.404"></a>
-<span class="sourceLineNo">405</span>              "show this screen").create("h");<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>      return new Options().addOption(compress).addOption(fileSize).addOption(<a name="line.407"></a>
-<span class="sourceLineNo">408</span>          fsInputBufferSz).addOption(fsOutputBufferSize).addOption(keyLen)<a name="line.408"></a>
-<span class="sourceLineNo">409</span>          .addOption(blockSz).addOption(rootDir).addOption(valueLen)<a name="line.409"></a>
-<span class="sourceLineNo">410</span>          .addOption(operation).addOption(seekCount).addOption(file)<a name="line.410"></a>
-<span class="sourceLineNo">411</span>          .addOption(trialCount).addOption(useRawFs).addOption(help);<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span>    }<a name="line.413"></a>
-<span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>    private void processOptions(CommandLine line, Options opts)<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        throws ParseException {<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      // --help -h and --version -V must be processed first.<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      if (line.hasOption('h')) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>        HelpFormatter formatter = new HelpFormatter();<a name="line.419"></a>
-<span class="sourceLineNo">420</span>        System.out.println("TFile and SeqFile benchmark.");<a name="line.420"></a>
-<span class="sourceLineNo">421</span>        System.out.println();<a name="line.421"></a>
-<span class="sourceLineNo">422</span>        formatter.printHelp(100,<a name="line.422"></a>
-<span class="sourceLineNo">423</span>            "java ... TestTFileSeqFileComparison [options]",<a name="line.423"></a>
-<span class="sourceLineNo">424</span>            "\nSupported options:", opts, "");<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        return;<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>      if (line.hasOption('c')) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        compress = line.getOptionValue('c');<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      }<a name="line.430"></a>
-<span class="sourceLineNo">431</span><a name="line.431"></a>
-<span class="sourceLineNo">432</span>      if (line.hasOption('d')) {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>        dictSize = Integer.parseInt(line.getOptionValue('d'));<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      }<a name="line.434"></a>
-<span class="sourceLineNo">435</span><a name="line.435"></a>
-<span class="sourceLineNo">436</span>      if (line.hasOption('s')) {<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        fileSize = Long.parseLong(line.getOptionValue('s')) * 1024 * 1024;<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      }<a name="line.438"></a>
-<span class="sourceLineNo">439</span><a name="line.439"></a>
-<span class="sourceLineNo">440</span>      if (line.hasOption('i')) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>        fsInputBufferSize = Integer.parseInt(line.getOptionValue('i'));<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 (line.hasOption('o')) {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>        fsOutputBufferSize = Integer.parseInt(line.getOptionValue('o'));<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      }<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>      if (line.hasOption('n')) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>        seekCount = Integer.parseInt(line.getOptionValue('n'));<a name="line.449"></a>
-<span class="sourceLineNo">450</span>      }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>      if (line.hasOption('t')) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>        trialCount = Integer.parseInt(line.getOptionValue('t'));<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>      if (line.hasOption('k')) {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>        IntegerRange ir = IntegerRange.parse(line.getOptionValue('k'));<a name="line.457"></a>
-<span class="sourceLineNo">458</span>        minKeyLen = ir.from();<a name="line.458"></a>
-<span class="sourceLineNo">459</span>        maxKeyLen = ir.to();<a name="line.459"></a>
-<span class="sourceLineNo">460</span>      }<a name="line.460"></a>
-<span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>      if (line.hasOption('v')) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>        IntegerRange ir = IntegerRange.parse(line.getOptionValue('v'));<a name="line.463"></a>
-<span class="sourceLineNo">464</span>        minValLength = ir.from();<a name="line.464"></a>
-<span class="sourceLineNo">465</span>        maxValLength = ir.to();<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>      if (line.hasOption('b')) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>        minBlockSize = Integer.parseInt(line.getOptionValue('b')) * 1024;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      }<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>      if (line.hasOption('r')) {<a name="line.472"></a>
-<span class="sourceLineNo">473</span>        rootDir = line.getOptionValue('r');<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      }<a name="line.474"></a>
-<span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>      if (line.hasOption('f')) {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>        file = line.getOptionValue('f');<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      }<a name="line.478"></a>
-<span class="sourceLineNo">479</span><a name="line.479"></a>
-<span class="sourceLineNo">480</span>      if (line.hasOption('S')) {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>        seed = Long.parseLong(line.getOptionValue('S'));<a name="line.481"></a>
-<span class="sourceLineNo">482</span>      }<a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>      if (line.hasOption('x')) {<a name="line.484"></a>
-<span class="sourceLineNo">485</span>        String strOp = line.getOptionValue('x');<a name="line.485"></a>
-<span class="sourceLineNo">486</span>        if (strOp.equals("r")) {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>          op = OP_READ;<a name="line.487"></a>
-<span class="sourceLineNo">488</span>        }<a name="line.488"></a>
-<span class="sourceLineNo">489</span>        else if (strOp.equals("w")) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>          op = OP_CREATE;<a name="line.490"></a>
-<span class="sourceLineNo">491</span>        }<a name="line.491"></a>
-<span class="sourceLineNo">492</span>        else if (strOp.equals("rw")) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>          op = OP_CREATE | OP_READ;<a name="line.493"></a>
-<span class="sourceLineNo">494</span>        }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>        else {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>          throw new ParseException("Unknown action specifier: " + strOp);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>        }<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      }<a name="line.498"></a>
-<span class="sourceLineNo">499</span><a name="line.499"></a>
-<span class="sourceLineNo">500</span>      useRawFs = line.hasOption("rawfs");<a name="line.500"></a>
-<span class="sourceLineNo">501</span><a name="line.501"></a>
-<span class="sourceLineNo">502</span>      proceed = true;<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>    private void validateOptions() throws ParseException {<a name="line.505"></a>
-<span class="sourceLineNo">506</span>      if (!compress.equals("none") &amp;&amp; !compress.equals("lzo")<a name="line.506"></a>
-<span class="sourceLineNo">507</span>          &amp;&amp; !compress.equals("gz") &amp;&amp; !compress.equals("snappy")) {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>        throw new ParseException("Unknown compression scheme: " + compress);<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>      if (minKeyLen &gt;= maxKeyLen) {<a name="line.511"></a>
-<span class="sourceLineNo">512</span>        throw new ParseException(<a name="line.512"></a>
-<span class="sourceLineNo">513</span>            "Max key length must be greater than min key length.");<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      }<a name="line.514"></a>
-<span class="sourceLineNo">515</span><a name="line.515"></a>
-<span class="sourceLineNo">516</span>      if (minValLength &gt;= maxValLength) {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>        throw new ParseException(<a name="line.517"></a>
-<span class="sourceLineNo">518</span>            "Max value length must be greater than min value length.");<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 (minWordLen &gt;= maxWordLen) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>        throw new ParseException(<a name="line.522"></a>
-<span class="sourceLineNo">523</span>            "Max word length must be greater than min word length.");<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      }<a name="line.524"></a>
-<span class="sourceLineNo">525</span>      return;<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>    private void setStopProceed() {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>      proceed = false;<a name="line.529"></a>
-<span class="sourceLineNo">530</span>    }<a name="line.530"></a>
-<span class="sourceLineNo">531</span><a name="line.531"></a>
-<span class="sourceLineNo">532</span>    public boolean doCreate() {<a name="line.532"></a>
-<span class="sourceLineNo">533</span>      return (op &amp; OP_CREATE) != 0;<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    }<a name="line.534"></a>
-<span class="sourceLineNo">535</span><a name="line.535"></a>
-<span class="sourceLineNo">536</span>    public boolean doRead() {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      return (op &amp; OP_READ) != 0;<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    }<a name="line.538"></a>
-<span class="sourceLineNo">539</span>  }<a name="line.539"></a>
-<span class="sourceLineNo">540</span><a name="line.540"></a>
-<span class="sourceLineNo">541</span>  public static void main(String[] argv) throws IOException {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>    TestHFileSeek testCase = new TestHFileSeek();<a name="line.542"></a>
-<span class="sourceLineNo">543</span>    MyOptions options = new MyOptions(argv);<a name="line.543"></a>
-<span class="sourceLineNo">544</span><a name="line.544"></a>
-<span class="sourceLineNo">545</span>    if (options.proceed == false) {<a name="line.545"></a>
-<span class="sourceLineNo">546</span>      return;<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    }<a name="line.547"></a>
-<span class="sourceLineNo">548</span><a name="line.548"></a>
-<span class="sourceLineNo">549</span>    testCase.options = options;<a name="line.549"></a>
-<span class="sourceLineNo">550</span>    for (int i = 0; i &lt; options.trialCount; i++) {<a name="line.550"></a>
-<span class="sourceLineNo">551</span>      LOG.info("Beginning trial " + (i+1));<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      testCase.setUp();<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      testCase.testSeeks();<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      testCase.tearDown();<a name="line.554"></a>
-<span class="sourceLineNo">555</span>    }<a name="line.555"></a>
-<span class="sourceLineNo">556</span>  }<a name="line.556"></a>
-<span class="sourceLineNo">557</span><a name="line.557"></a>
-<span class="sourceLineNo">558</span>}<a name="line.558"></a>
-<span class="sourceLineNo">559</span><a name="line.559"></a>
+<span class="sourceLineNo">210</span>      } else {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        ++miss;<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>    timer.stop();<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    System.out.printf(<a name="line.215"></a>
+<span class="sourceLineNo">216</span>        "time: %s...avg seek: %s...%d hit...%d miss...avg I/O size: %.2fKB\n",<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        timer.toString(), NanoTimer.nanoTimeToString(timer.read()<a name="line.217"></a>
+<span class="sourceLineNo">218</span>            / options.seekCount), options.seekCount - miss, miss,<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        (double) totalBytes / 1024 / (options.seekCount - miss));<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>  public void testSeeks() throws IOException {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    if (options.doCreate()) {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      createTFile();<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>    if (options.doRead()) {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      seekTFile();<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    }<a name="line.230"></a>
+<span class="sourceLineNo">231</span><a name="line.231"></a>
+<span class="sourceLineNo">232</span>    if (options.doCreate()) {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      fs.delete(path, true);<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    }<a name="line.234"></a>
+<span class="sourceLineNo">235</span>  }<a name="line.235"></a>
+<span class="sourceLineNo">236</span><a name="line.236"></a>
+<span class="sourceLineNo">237</span>  private static class IntegerRange {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    private final int from, to;<a name="line.238"></a>
+<span class="sourceLineNo">239</span><a name="line.239"></a>
+<span class="sourceLineNo">240</span>    public IntegerRange(int from, int to) {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      this.from = from;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      this.to = to;<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>    public static IntegerRange parse(String s) throws ParseException {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      StringTokenizer st = new StringTokenizer(s, " \t,");<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      if (st.countTokens() != 2) {<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        throw new ParseException("Bad integer specification: " + s);<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      }<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      int from = Integer.parseInt(st.nextToken());<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      int to = Integer.parseInt(st.nextToken());<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      return new IntegerRange(from, to);<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    }<a name="line.253"></a>
+<span class="sourceLineNo">254</span><a name="line.254"></a>
+<span class="sourceLineNo">255</span>    public int from() {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      return from;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
+<span class="sourceLineNo">258</span><a name="line.258"></a>
+<span class="sourceLineNo">259</span>    public int to() {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      return to;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    }<a name="line.261"></a>
+<span class="sourceLineNo">262</span>  }<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span>  private static class MyOptions {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    // hard coded constants<a name="line.265"></a>
+<span class="sourceLineNo">266</span>    int dictSize = 1000;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    int minWordLen = 5;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    int maxWordLen = 20;<a name="line.268"></a>
+<span class="sourceLineNo">269</span><a name="line.269"></a>
+<span class="sourceLineNo">270</span>    private HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    String rootDir =<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      TEST_UTIL.getDataTestDir("TestTFileSeek").toString();<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    String file = "TestTFileSeek";<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    // String compress = "lzo"; DISABLED<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    String compress = "none";<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    int minKeyLen = 10;<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    int maxKeyLen = 50;<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    int minValLength = 1024;<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    int maxValLength = 2 * 1024;<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    int minBlockSize = 1 * 1024 * 1024;<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    int fsOutputBufferSize = 1;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    int fsInputBufferSize = 0;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    // Default writing 10MB.<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    long fileSize = 10 * 1024 * 1024;<a name="line.284"></a>
+<span class="sourceLineNo">285</span>    long seekCount = 1000;<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    long trialCount = 1;<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    long seed;<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    boolean useRawFs = false;<a name="line.288"></a>
+<span class="sourceLineNo">289</span><a name="line.289"></a>
+<span class="sourceLineNo">290</span>    static final int OP_CREATE = 1;<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    static final int OP_READ = 2;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    int op = OP_CREATE | OP_READ;<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>    boolean proceed = false;<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>    public MyOptions(String[] args) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      seed = System.nanoTime();<a name="line.297"></a>
+<span class="sourceLineNo">298</span><a name="line.298"></a>
+<span class="sourceLineNo">299</span>      try {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        Options opts = buildOptions();<a name="line.300"></a>
+<span class="sourceLineNo">301</span>        CommandLineParser parser = new GnuParser();<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        CommandLine line = parser.parse(opts, args, true);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        processOptions(line, opts);<a name="line.303"></a>
+<span class="sourceLineNo">304</span>        validateOptions();<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      }<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      catch (ParseException e) {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>        System.out.println(e.getMessage());<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        System.out.println("Try \"--help\" option for details.");<a name="line.308"></a>
+<span class="sourceLineNo">309</span>        setStopProceed();<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>    public boolean proceed() {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      return proceed;<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    }<a name="line.315"></a>
+<span class="sourceLineNo">316</span><a name="line.316"></a>
+<span class="sourceLineNo">317</span>    private Options buildOptions() {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      Option compress =<a name="line.318"></a>
+<span class="sourceLineNo">319</span>          OptionBuilder.withLongOpt("compress").withArgName("[none|lzo|gz|snappy]")<a name="line.319"></a>
+<span class="sourceLineNo">320</span>              .hasArg().withDescription("compression scheme").create('c');<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>      Option fileSize =<a name="line.322"></a>
+<span class="sourceLineNo">323</span>          OptionBuilder.withLongOpt("file-size").withArgName("size-in-MB")<a name="line.323"></a>
+<span class="sourceLineNo">324</span>              .hasArg().withDescription("target size of the file (in MB).")<a name="line.324"></a>
+<span class="sourceLineNo">325</span>              .create('s');<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>      Option fsInputBufferSz =<a name="line.327"></a>
+<span class="sourceLineNo">328</span>          OptionBuilder.withLongOpt("fs-input-buffer").withArgName("size")<a name="line.328"></a>
+<span class="sourceLineNo">329</span>              .hasArg().withDescription(<a name="line.329"></a>
+<span class="sourceLineNo">330</span>                  "size of the file system input buffer (in bytes).").create(<a name="line.330"></a>
+<span class="sourceLineNo">331</span>                  'i');<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>      Option fsOutputBufferSize =<a name="line.333"></a>
+<span class="sourceLineNo">334</span>          OptionBuilder.withLongOpt("fs-output-buffer").withArgName("size")<a name="line.334"></a>
+<span class="sourceLineNo">335</span>              .hasArg().withDescription(<a name="line.335"></a>
+<span class="sourceLineNo">336</span>                  "size of the file system output buffer (in bytes).").create(<a name="line.336"></a>
+<span class="sourceLineNo">337</span>                  'o');<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>      Option keyLen =<a name="line.339"></a>
+<span class="sourceLineNo">340</span>          OptionBuilder<a name="line.340"></a>
+<span class="sourceLineNo">341</span>              .withLongOpt("key-length")<a name="line.341"></a>
+<span class="sourceLineNo">342</span>              .withArgName("min,max")<a name="line.342"></a>
+<span class="sourceLineNo">343</span>              .hasArg()<a name="line.343"></a>
+<span class="sourceLineNo">344</span>              .withDescription(<a name="line.344"></a>
+<span class="sourceLineNo">345</span>                  "the length range of the key (in bytes)")<a name="line.345"></a>
+<span class="sourceLineNo">346</span>              .create('k');<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>      Option valueLen =<a name="line.348"></a>
+<span class="sourceLineNo">349</span>          OptionBuilder<a name="line.349"></a>
+<span class="sourceLineNo">350</span>              .withLongOpt("value-length")<a name="line.350"></a>
+<span class="sourceLineNo">351</span>              .withArgName("min,max")<a name="line.351"></a>
+<span class="sourceLineNo">352</span>              .hasArg()<a name="line.352"></a>
+<span class="sourceLineNo">353</span>              .withDescription(<a name="line.353"></a>
+<span class="sourceLineNo">354</span>                  "the length range of the value (in bytes)")<a name="line.354"></a>
+<span class="sourceLineNo">355</span>              .create('v');<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>      Option blockSz =<a name="line.357"></a>
+<span class="sourceLineNo">358</span>          OptionBuilder.withLongOpt("block").withArgName("size-in-KB").hasArg()<a name="line.358"></a>
+<span class="sourceLineNo">359</span>              .withDescription("minimum block size (in KB)").create('b');<a name="line.359"></a>
+<span class="sourceLineNo">360</span><a name="line.360"></a>
+<span class="sourceLineNo">361</span>      Option operation =<a name="line.361"></a>
+<span class="sourceLineNo">362</span>          OptionBuilder.withLongOpt("operation").withArgName("r|w|rw").hasArg()<a name="line.362"></a>
+<span class="sourceLineNo">363</span>              .withDescription(<a name="line.363"></a>
+<span class="sourceLineNo">364</span>                  "action: seek-only, create-only, seek-after-create").create(<a name="line.364"></a>
+<span class="sourceLineNo">365</span>                  'x');<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>      Option rootDir =<a name="line.367"></a>
+<span class="sourceLineNo">368</span>          OptionBuilder.withLongOpt("root-dir").withArgName("path").hasArg()<a name="line.368"></a>
+<span class="sourceLineNo">369</span>              .withDescription(<a name="line.369"></a>
+<span class="sourceLineNo">370</span>                  "specify root directory where files will be created.")<a name="line.370"></a>
+<span class="sourceLineNo">371</span>              .create('r');<a name="line.371"></a>
+<span class="sourceLineNo">372</span><a name="line.372"></a>
+<span class="sourceLineNo">373</span>      Option file =<a name="line.373"></a>
+<span class="sourceLineNo">374</span>          OptionBuilder.withLongOpt("file").withArgName("name").hasArg()<a name="line.374"></a>
+<span class="sourceLineNo">375</span>              .withDescription("specify the file name to be created or read.")<a name="line.375"></a>
+<span class="sourceLineNo">376</span>              .create('f');<a name="line.376"></a>
+<span class="sourceLineNo">377</span><a name="line.377"></a>
+<span class="sourceLineNo">378</span>      Option seekCount =<a name="line.378"></a>
+<span class="sourceLineNo">379</span>          OptionBuilder<a name="line.379"></a>
+<span class="sourceLineNo">380</span>              .withLongOpt("seek")<a name="line.380"></a>
+<span class="sourceLineNo">381</span>              .withArgName("count")<a name="line.381"></a>
+<span class="sourceLineNo">382</span>              .hasArg()<a name="line.382"></a>
+<span class="sourceLineNo">383</span>              .withDescription(<a name="line.383"></a>
+<span class="sourceLineNo">384</span>                  "specify how many seek operations we perform (requires -x r or -x rw.")<a name="line.384"></a>
+<span class="sourceLineNo">385</span>              .create('n');<a name="line.385"></a>
+<span class="sourceLineNo">386</span><a name="line.386"></a>
+<span class="sourceLineNo">387</span>      Option trialCount =<a name="line.387"></a>
+<span class="sourceLineNo">388</span>          OptionBuilder<a name="line.388"></a>
+<span class="sourceLineNo">389</span>              .withLongOpt("trials")<a name="line.389"></a>
+<span class="sourceLineNo">390</span>              .withArgName("n")<a name="line.390"></a>
+<span class="sourceLineNo">391</span>              .hasArg()<a name="line.391"></a>
+<span class="sourceLineNo">392</span>              .withDescription(<a name="line.392"></a>
+<span class="sourceLineNo">393</span>                  "specify how many times to run the whole benchmark")<a name="line.393"></a>
+<span class="sourceLineNo">394</span>              .create('t');<a name="line.394"></a>
+<span class="sourceLineNo">395</span><a name="line.395"></a>
+<span class="sourceLineNo">396</span>      Option useRawFs =<a name="line.396"></a>
+<span class="sourceLineNo">397</span>          OptionBuilder<a name="line.397"></a>
+<span class="sourceLineNo">398</span>            .withLongOpt("rawfs")<a name="line.398"></a>
+<span class="sourceLineNo">399</span>            .withDescription("use raw instead of checksummed file system")<a name="line.399"></a>
+<span class="sourceLineNo">400</span>            .create();<a name="line.400"></a>
+<span class="sourceLineNo">401</span><a name="line.401"></a>
+<span class="sourceLineNo">402</span>      Option help =<a name="line.402"></a>
+<span class="sourceLineNo">403</span>          OptionBuilder.withLongOpt("help").hasArg(false).withDescription(<a name="line.403"></a>
+<span class="sourceLineNo">404</span>              "show this screen").create("h");<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>      return new Options().addOption(compress).addOption(fileSize).addOption(<a name="line.406"></a>
+<span class="sourceLineNo">407</span>          fsInputBufferSz).addOption(fsOutputBufferSize).addOption(keyLen)<a name="line.407"></a>
+<span class="sourceLineNo">408</span>          .addOption(blockSz).addOption(rootDir).addOption(valueLen)<a name="line.408"></a>
+<span class="sourceLineNo">409</span>          .addOption(operation).addOption(seekCount).addOption(file)<a name="line.409"></a>
+<span class="sourceLineNo">410</span>          .addOption(trialCount).addOption(useRawFs).addOption(help);<a name="line.410"></a>
+<span class="sourceLineNo">411</span><a name="line.411"></a>
+<span class="sourceLineNo">412</span>    }<a name="line.412"></a>
+<span class="sourceLineNo">413</span><a name="line.413"></a>
+<span class="sourceLineNo">414</span>    private void processOptions(CommandLine line, Options opts)<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        throws ParseException {<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      // --help -h and --version -V must be processed first.<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      if (line.hasOption('h')) {<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        HelpFormatter formatter = new HelpFormatter();<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        System.out.println("TFile and SeqFile benchmark.");<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        System.out.println();<a name="line.420"></a>
+<span class="sourceLineNo">421</span>        formatter.printHelp(100,<a name="line.421"></a>
+<span class="sourceLineNo">422</span>            "java ... TestTFileSeqFileComparison [options]",<a name="line.422"></a>
+<span class="sourceLineNo">423</span>            "\nSupported options:", opts, "");<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        return;<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      }<a name="line.425"></a>
+<span class="sourceLineNo">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>      if (line.hasOption('c')) {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        compress = line.getOptionValue('c');<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>      if (line.hasOption('d')) {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>        dictSize = Integer.parseInt(line.getOptionValue('d'));<a name="line.432"></a>
+<span class="sourceLineNo">433</span>      }<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</span>      if (line.hasOption('s')) {<a name="line.435"></a>
+<span class="sourceLineNo">436</span>        fileSize = Long.parseLong(line.getOptionValue('s')) * 1024 * 1024;<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      }<a name="line.437"></a>
+<span class="sourceLineNo">438</span><a name="line.438"></a>
+<span class="sourceLineNo">439</span>      if (line.hasOption('i')) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>        fsInputBufferSize = Integer.parseInt(line.getOptionValue('i'));<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>      if (line.hasOption('o')) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>        fsOutputBufferSize = Integer.parseInt(line.getOptionValue('o'));<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      }<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>      if (line.hasOption('n')) {<a name="line.447"></a>
+<span class="sourceLineNo">448</span>        seekCount = Integer.parseInt(line.getOptionValue('n'));<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>      if (line.hasOption('t')) {<a name="line.451"></a>
+<span class="sourceLineNo">452</span>        trialCount = Integer.parseInt(line.getOptionValue('t'));<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      }<a name="line.453"></a>
+<span class="sourceLineNo">454</span><a name="line.454"></a>
+<span class="sourceLineNo">455</span>      if (line.hasOption('k')) {<a name="line.455"></a>
+<span class="sourceLineNo">456</span>        IntegerRange ir = IntegerRange.parse(line.getOptionValue('k'));<a name="line.456"></a>
+<span class="sourceLineNo">457</span>        minKeyLen = ir.from();<a name="line.457"></a>
+<span class="sourceLineNo">458</span>        maxKeyLen = ir.to();<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      }<a name=

<TRUNCATED>

[10/29] hbase-site git commit: Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/testdevapidocs/org/apache/hadoop/hbase/class-use/TestKeyValue.MockKeyValue.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/class-use/TestKeyValue.MockKeyValue.html b/testdevapidocs/org/apache/hadoop/hbase/class-use/TestKeyValue.MockKeyValue.html
deleted file mode 100644
index 4e44ccd..0000000
--- a/testdevapidocs/org/apache/hadoop/hbase/class-use/TestKeyValue.MockKeyValue.html
+++ /dev/null
@@ -1,125 +0,0 @@
-<!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.TestKeyValue.MockKeyValue (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.TestKeyValue.MockKeyValue (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/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase">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/class-use/TestKeyValue.MockKeyValue.html" target="_top">Frames</a></li>
-<li><a href="TestKeyValue.MockKeyValue.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_top");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<a name="skip.navbar.top">
-<!--   -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-<div class="header">
-<h2 title="Uses of Class org.apache.hadoop.hbase.TestKeyValue.MockKeyValue" class="title">Uses of Class<br>org.apache.hadoop.hbase.TestKeyValue.MockKeyValue</h2>
-</div>
-<div class="classUseContainer">No usage of org.apache.hadoop.hbase.TestKeyValue.MockKeyValue</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/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase">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/class-use/TestKeyValue.MockKeyValue.html" target="_top">Frames</a></li>
-<li><a href="TestKeyValue.MockKeyValue.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_bottom");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<a name="skip.navbar.bottom">
-<!--   -->
-</a></div>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/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 29930ee..29b8700 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":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":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.74">TestScannersFromClientSide</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.75">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>
@@ -291,9 +291,13 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </tr>
 <tr id="i19" class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#testSmallScan--">testSmallScan</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#testScanWithSameStartRowStopRow--">testScanWithSameStartRowStopRow</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i20" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#testSmallScan--">testSmallScan</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i21" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#testSmallScan-org.apache.hadoop.hbase.client.Table-boolean-int-int-">testSmallScan</a></span>(org.apache.hadoop.hbase.client.Table&nbsp;table,
              boolean&nbsp;reversed,
@@ -302,14 +306,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="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#verifyExpectedCounts-org.apache.hadoop.hbase.client.Table-org.apache.hadoop.hbase.client.Scan-int-int-">verifyExpectedCounts</a></span>(org.apache.hadoop.hbase.client.Table&nbsp;table,
                     org.apache.hadoop.hbase.client.Scan&nbsp;scan,
                     int&nbsp;expectedRowCount,
                     int&nbsp;expectedCellCount)</code>&nbsp;</td>
 </tr>
-<tr id="i22" class="altColor">
+<tr id="i23" class="rowColor">
 <td class="colFirst"><code>(package private) static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#verifyResult-org.apache.hadoop.hbase.client.Result-java.util.List-boolean-java.lang.String-">verifyResult</a></span>(org.apache.hadoop.hbase.client.Result&nbsp;result,
             <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.Cell&gt;&nbsp;expKvList,
@@ -344,7 +348,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CLASS_RULE</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.77">CLASS_RULE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.78">CLASS_RULE</a></pre>
 </li>
 </ul>
 <a name="LOG">
@@ -353,7 +357,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.80">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.81">LOG</a></pre>
 </li>
 </ul>
 <a name="TEST_UTIL">
@@ -362,7 +366,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>TEST_UTIL</h4>
-<pre>private static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.82">TEST_UTIL</a></pre>
+<pre>private static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.83">TEST_UTIL</a></pre>
 </li>
 </ul>
 <a name="ROW">
@@ -371,7 +375,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>ROW</h4>
-<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.83">ROW</a></pre>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.84">ROW</a></pre>
 </li>
 </ul>
 <a name="FAMILY">
@@ -380,7 +384,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>FAMILY</h4>
-<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.84">FAMILY</a></pre>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.85">FAMILY</a></pre>
 </li>
 </ul>
 <a name="QUALIFIER">
@@ -389,7 +393,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>QUALIFIER</h4>
-<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.85">QUALIFIER</a></pre>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.86">QUALIFIER</a></pre>
 </li>
 </ul>
 <a name="VALUE">
@@ -398,7 +402,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>VALUE</h4>
-<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.86">VALUE</a></pre>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.87">VALUE</a></pre>
 </li>
 </ul>
 <a name="name">
@@ -407,7 +411,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>name</h4>
-<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.89">name</a></pre>
+<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.90">name</a></pre>
 </li>
 </ul>
 </li>
@@ -424,7 +428,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestScannersFromClientSide</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.74">TestScannersFromClientSide</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.75">TestScannersFromClientSide</a>()</pre>
 </li>
 </ul>
 </li>
@@ -441,7 +445,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setUpBeforeClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.95">setUpBeforeClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.96">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>
@@ -455,7 +459,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>tearDownAfterClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.105">tearDownAfterClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.106">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>
@@ -469,7 +473,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setUp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.113">setUp</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.114">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>
@@ -483,7 +487,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>tearDown</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.121">tearDown</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.122">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>
@@ -497,7 +501,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanBatch</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.131">testScanBatch</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.132">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>
@@ -512,7 +516,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testMaxResultSizeIsSetToDefault</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.201">testMaxResultSizeIsSetToDefault</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.202">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>
@@ -526,7 +530,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScannerForNotExistingTable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.254">testScannerForNotExistingTable</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.255">testScannerForNotExistingTable</a>()</pre>
 <div class="block">Scan on not existing table should throw the exception with correct message</div>
 </li>
 </ul>
@@ -536,7 +540,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testSmallScan</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.272">testSmallScan</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.273">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>
@@ -550,7 +554,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testSmallScan</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.311">testSmallScan</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.312">testSmallScan</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
                            boolean&nbsp;reversed,
                            int&nbsp;rows,
                            int&nbsp;columns)
@@ -573,7 +577,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>verifyExpectedCounts</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.329">verifyExpectedCounts</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.330">verifyExpectedCounts</a>(org.apache.hadoop.hbase.client.Table&nbsp;table,
                                   org.apache.hadoop.hbase.client.Scan&nbsp;scan,
                                   int&nbsp;expectedRowCount,
                                   int&nbsp;expectedCellCount)
@@ -590,7 +594,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetMaxResults</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.354">testGetMaxResults</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.355">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>
@@ -605,7 +609,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanMaxResults</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.474">testScanMaxResults</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.475">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>
@@ -620,7 +624,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetRowOffset</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.524">testGetRowOffset</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.525">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>
@@ -635,7 +639,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanRawDeleteFamilyVersion</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.614">testScanRawDeleteFamilyVersion</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.615">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>
@@ -649,7 +653,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanOnReopenedRegion</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.644">testScanOnReopenedRegion</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.645">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>
@@ -665,7 +669,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testAsyncScannerWithSmallData</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.715">testAsyncScannerWithSmallData</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.716">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>
@@ -679,7 +683,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testAsyncScannerWithManyRows</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.725">testAsyncScannerWithManyRows</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.726">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>
@@ -693,7 +697,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testAsyncScannerWithoutCaching</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.735">testAsyncScannerWithoutCaching</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.736">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>
@@ -707,7 +711,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testAsyncScanner</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.749">testAsyncScanner</a>(org.apache.hadoop.hbase.TableName&nbsp;table,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.750">testAsyncScanner</a>(org.apache.hadoop.hbase.TableName&nbsp;table,
                               int&nbsp;rowNumber,
                               int&nbsp;familyNumber,
                               int&nbsp;qualifierNumber,
@@ -726,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>makeNAsciiWithZeroPrefix</h4>
-<pre>private static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.820">makeNAsciiWithZeroPrefix</a>(byte[]&nbsp;base,
+<pre>private static&nbsp;byte[][]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.821">makeNAsciiWithZeroPrefix</a>(byte[]&nbsp;base,
                                                  int&nbsp;n)</pre>
 </li>
 </ul>
@@ -736,7 +740,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>verifyResult</h4>
-<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.833">verifyResult</a>(org.apache.hadoop.hbase.client.Result&nbsp;result,
+<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.834">verifyResult</a>(org.apache.hadoop.hbase.client.Result&nbsp;result,
                          <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.hbase.Cell&gt;&nbsp;expKvList,
                          boolean&nbsp;toLog,
                          <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;msg)</pre>
@@ -748,7 +752,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testReadExpiredDataForRawScan</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.860">testReadExpiredDataForRawScan</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.861">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>
@@ -759,10 +763,10 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <a name="testScanWithColumnsAndFilterAndVersion--">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>testScanWithColumnsAndFilterAndVersion</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.880">testScanWithColumnsAndFilterAndVersion</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.881">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>
@@ -770,6 +774,20 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
+<a name="testScanWithSameStartRowStopRow--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testScanWithSameStartRowStopRow</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#line.903">testScanWithSameStartRowStopRow</a>()
+                                     throws <a href="https://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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.IntegerRange.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.IntegerRange.html b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.IntegerRange.html
index eed05a1..3060ad5 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.IntegerRange.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.IntegerRange.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.238">TestHFileSeek.IntegerRange</a>
+<pre>private static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.237">TestHFileSeek.IntegerRange</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>
@@ -214,7 +214,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>from</h4>
-<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.IntegerRange.html#line.239">from</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.IntegerRange.html#line.238">from</a></pre>
 </li>
 </ul>
 <a name="to">
@@ -223,7 +223,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>to</h4>
-<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.IntegerRange.html#line.239">to</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.IntegerRange.html#line.238">to</a></pre>
 </li>
 </ul>
 </li>
@@ -240,7 +240,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>IntegerRange</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.IntegerRange.html#line.241">IntegerRange</a>(int&nbsp;from,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.IntegerRange.html#line.240">IntegerRange</a>(int&nbsp;from,
                     int&nbsp;to)</pre>
 </li>
 </ul>
@@ -258,7 +258,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>parse</h4>
-<pre>public static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TestHFileSeek.IntegerRange.html" title="class in org.apache.hadoop.hbase.io.hfile">TestHFileSeek.IntegerRange</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.IntegerRange.html#line.246">parse</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)
+<pre>public static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TestHFileSeek.IntegerRange.html" title="class in org.apache.hadoop.hbase.io.hfile">TestHFileSeek.IntegerRange</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.IntegerRange.html#line.245">parse</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;s)
                                         throws org.apache.hbase.thirdparty.org.apache.commons.cli.ParseException</pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -272,7 +272,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>from</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.IntegerRange.html#line.256">from</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.IntegerRange.html#line.255">from</a>()</pre>
 </li>
 </ul>
 <a name="to--">
@@ -281,7 +281,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>to</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.IntegerRange.html#line.260">to</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.IntegerRange.html#line.259">to</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html
index f5dc9b9..826cee2 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.265">TestHFileSeek.MyOptions</a>
+<pre>private static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.264">TestHFileSeek.MyOptions</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>
@@ -314,7 +314,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>dictSize</h4>
-<pre>int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.267">dictSize</a></pre>
+<pre>int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.266">dictSize</a></pre>
 </li>
 </ul>
 <a name="minWordLen">
@@ -323,7 +323,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>minWordLen</h4>
-<pre>int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.268">minWordLen</a></pre>
+<pre>int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.267">minWordLen</a></pre>
 </li>
 </ul>
 <a name="maxWordLen">
@@ -332,7 +332,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>maxWordLen</h4>
-<pre>int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.269">maxWordLen</a></pre>
+<pre>int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.268">maxWordLen</a></pre>
 </li>
 </ul>
 <a name="TEST_UTIL">
@@ -341,7 +341,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&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.271">TEST_UTIL</a></pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.270">TEST_UTIL</a></pre>
 </li>
 </ul>
 <a name="rootDir">
@@ -350,7 +350,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>rootDir</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.272">rootDir</a></pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.271">rootDir</a></pre>
 </li>
 </ul>
 <a name="file">
@@ -359,7 +359,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>file</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.274">file</a></pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.273">file</a></pre>
 </li>
 </ul>
 <a name="compress">
@@ -368,7 +368,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>compress</h4>
-<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.276">compress</a></pre>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.275">compress</a></pre>
 </li>
 </ul>
 <a name="minKeyLen">
@@ -377,7 +377,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>minKeyLen</h4>
-<pre>int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.277">minKeyLen</a></pre>
+<pre>int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.276">minKeyLen</a></pre>
 </li>
 </ul>
 <a name="maxKeyLen">
@@ -386,7 +386,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>maxKeyLen</h4>
-<pre>int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.278">maxKeyLen</a></pre>
+<pre>int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.277">maxKeyLen</a></pre>
 </li>
 </ul>
 <a name="minValLength">
@@ -395,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>minValLength</h4>
-<pre>int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.279">minValLength</a></pre>
+<pre>int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.278">minValLength</a></pre>
 </li>
 </ul>
 <a name="maxValLength">
@@ -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>maxValLength</h4>
-<pre>int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.280">maxValLength</a></pre>
+<pre>int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.279">maxValLength</a></pre>
 </li>
 </ul>
 <a name="minBlockSize">
@@ -413,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>minBlockSize</h4>
-<pre>int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.281">minBlockSize</a></pre>
+<pre>int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.280">minBlockSize</a></pre>
 </li>
 </ul>
 <a name="fsOutputBufferSize">
@@ -422,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>fsOutputBufferSize</h4>
-<pre>int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.282">fsOutputBufferSize</a></pre>
+<pre>int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.281">fsOutputBufferSize</a></pre>
 </li>
 </ul>
 <a name="fsInputBufferSize">
@@ -431,7 +431,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>fsInputBufferSize</h4>
-<pre>int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.283">fsInputBufferSize</a></pre>
+<pre>int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.282">fsInputBufferSize</a></pre>
 </li>
 </ul>
 <a name="fileSize">
@@ -440,7 +440,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>fileSize</h4>
-<pre>long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.285">fileSize</a></pre>
+<pre>long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.284">fileSize</a></pre>
 </li>
 </ul>
 <a name="seekCount">
@@ -449,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>seekCount</h4>
-<pre>long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.286">seekCount</a></pre>
+<pre>long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.285">seekCount</a></pre>
 </li>
 </ul>
 <a name="trialCount">
@@ -458,7 +458,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>trialCount</h4>
-<pre>long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.287">trialCount</a></pre>
+<pre>long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.286">trialCount</a></pre>
 </li>
 </ul>
 <a name="seed">
@@ -467,7 +467,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>seed</h4>
-<pre>long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.288">seed</a></pre>
+<pre>long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.287">seed</a></pre>
 </li>
 </ul>
 <a name="useRawFs">
@@ -476,7 +476,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>useRawFs</h4>
-<pre>boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.289">useRawFs</a></pre>
+<pre>boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.288">useRawFs</a></pre>
 </li>
 </ul>
 <a name="OP_CREATE">
@@ -485,7 +485,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>OP_CREATE</h4>
-<pre>static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.291">OP_CREATE</a></pre>
+<pre>static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.290">OP_CREATE</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.io.hfile.TestHFileSeek.MyOptions.OP_CREATE">Constant Field Values</a></dd>
@@ -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>OP_READ</h4>
-<pre>static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.292">OP_READ</a></pre>
+<pre>static final&nbsp;int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.291">OP_READ</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.io.hfile.TestHFileSeek.MyOptions.OP_READ">Constant Field Values</a></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>op</h4>
-<pre>int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.293">op</a></pre>
+<pre>int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.292">op</a></pre>
 </li>
 </ul>
 <a name="proceed">
@@ -520,7 +520,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>proceed</h4>
-<pre>boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.295">proceed</a></pre>
+<pre>boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.294">proceed</a></pre>
 </li>
 </ul>
 </li>
@@ -537,7 +537,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MyOptions</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.297">MyOptions</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.296">MyOptions</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;args)</pre>
 </li>
 </ul>
 </li>
@@ -554,7 +554,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>proceed</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.314">proceed</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.313">proceed</a>()</pre>
 </li>
 </ul>
 <a name="buildOptions--">
@@ -563,7 +563,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>buildOptions</h4>
-<pre>private&nbsp;org.apache.hbase.thirdparty.org.apache.commons.cli.Options&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.318">buildOptions</a>()</pre>
+<pre>private&nbsp;org.apache.hbase.thirdparty.org.apache.commons.cli.Options&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.317">buildOptions</a>()</pre>
 </li>
 </ul>
 <a name="processOptions-org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine-org.apache.hbase.thirdparty.org.apache.commons.cli.Options-">
@@ -572,7 +572,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>processOptions</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.415">processOptions</a>(org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine&nbsp;line,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.414">processOptions</a>(org.apache.hbase.thirdparty.org.apache.commons.cli.CommandLine&nbsp;line,
                             org.apache.hbase.thirdparty.org.apache.commons.cli.Options&nbsp;opts)
                      throws org.apache.hbase.thirdparty.org.apache.commons.cli.ParseException</pre>
 <dl>
@@ -587,7 +587,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>validateOptions</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.505">validateOptions</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.504">validateOptions</a>()
                       throws org.apache.hbase.thirdparty.org.apache.commons.cli.ParseException</pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -601,7 +601,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setStopProceed</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.528">setStopProceed</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.527">setStopProceed</a>()</pre>
 </li>
 </ul>
 <a name="doCreate--">
@@ -610,7 +610,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>doCreate</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.532">doCreate</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.531">doCreate</a>()</pre>
 </li>
 </ul>
 <a name="doRead--">
@@ -619,7 +619,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>doRead</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.536">doRead</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html#line.535">doRead</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html
index 236b819..d07b01c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html
@@ -123,7 +123,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.64">TestHFileSeek</a>
+<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.63">TestHFileSeek</a>
 extends junit.framework.TestCase</pre>
 <div class="block">test the performance for seek.
  <p>
@@ -320,7 +320,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>CLASS_RULE</h4>
-<pre>public static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.67">CLASS_RULE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.66">CLASS_RULE</a></pre>
 </li>
 </ul>
 <a name="CF">
@@ -329,7 +329,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>CF</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.70">CF</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.69">CF</a></pre>
 </li>
 </ul>
 <a name="QUAL">
@@ -338,7 +338,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>QUAL</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.71">QUAL</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.70">QUAL</a></pre>
 </li>
 </ul>
 <a name="USE_PREAD">
@@ -347,7 +347,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>USE_PREAD</h4>
-<pre>private static final&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.72">USE_PREAD</a></pre>
+<pre>private static final&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.71">USE_PREAD</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.io.hfile.TestHFileSeek.USE_PREAD">Constant Field Values</a></dd>
@@ -360,7 +360,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>options</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html" title="class in org.apache.hadoop.hbase.io.hfile">TestHFileSeek.MyOptions</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.73">options</a></pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TestHFileSeek.MyOptions.html" title="class in org.apache.hadoop.hbase.io.hfile">TestHFileSeek.MyOptions</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.72">options</a></pre>
 </li>
 </ul>
 <a name="conf">
@@ -369,7 +369,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>conf</h4>
-<pre>private&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.74">conf</a></pre>
+<pre>private&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.73">conf</a></pre>
 </li>
 </ul>
 <a name="path">
@@ -378,7 +378,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>path</h4>
-<pre>private&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.75">path</a></pre>
+<pre>private&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.74">path</a></pre>
 </li>
 </ul>
 <a name="fs">
@@ -387,7 +387,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>fs</h4>
-<pre>private&nbsp;org.apache.hadoop.fs.FileSystem <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.76">fs</a></pre>
+<pre>private&nbsp;org.apache.hadoop.fs.FileSystem <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.75">fs</a></pre>
 </li>
 </ul>
 <a name="timer">
@@ -396,7 +396,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>timer</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/NanoTimer.html" title="class in org.apache.hadoop.hbase.io.hfile">NanoTimer</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.77">timer</a></pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/NanoTimer.html" title="class in org.apache.hadoop.hbase.io.hfile">NanoTimer</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.76">timer</a></pre>
 </li>
 </ul>
 <a name="rng">
@@ -405,7 +405,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>rng</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.78">rng</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.77">rng</a></pre>
 </li>
 </ul>
 <a name="keyLenGen">
@@ -414,7 +414,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>keyLenGen</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/RandomDistribution.DiscreteRNG.html" title="interface in org.apache.hadoop.hbase.io.hfile">RandomDistribution.DiscreteRNG</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.79">keyLenGen</a></pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/RandomDistribution.DiscreteRNG.html" title="interface in org.apache.hadoop.hbase.io.hfile">RandomDistribution.DiscreteRNG</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.78">keyLenGen</a></pre>
 </li>
 </ul>
 <a name="kvGen">
@@ -423,7 +423,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>kvGen</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/KVGenerator.html" title="class in org.apache.hadoop.hbase.io.hfile">KVGenerator</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.80">kvGen</a></pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/KVGenerator.html" title="class in org.apache.hadoop.hbase.io.hfile">KVGenerator</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.79">kvGen</a></pre>
 </li>
 </ul>
 <a name="LOG">
@@ -432,7 +432,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.82">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.81">LOG</a></pre>
 </li>
 </ul>
 </li>
@@ -449,7 +449,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestHFileSeek</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.64">TestHFileSeek</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.63">TestHFileSeek</a>()</pre>
 </li>
 </ul>
 </li>
@@ -466,7 +466,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>setUp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.85">setUp</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.84">setUp</a>()
            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
@@ -482,7 +482,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>tearDown</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.117">tearDown</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.116">tearDown</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code>tearDown</code>&nbsp;in class&nbsp;<code>junit.framework.TestCase</code></dd>
@@ -495,7 +495,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>createFSOutput</h4>
-<pre>private static&nbsp;org.apache.hadoop.fs.FSDataOutputStream&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.126">createFSOutput</a>(org.apache.hadoop.fs.Path&nbsp;name,
+<pre>private static&nbsp;org.apache.hadoop.fs.FSDataOutputStream&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.125">createFSOutput</a>(org.apache.hadoop.fs.Path&nbsp;name,
                                                                       org.apache.hadoop.fs.FileSystem&nbsp;fs)
                                                                throws <a href="https://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>
@@ -510,7 +510,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>createTFile</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.135">createTFile</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.134">createTFile</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>
@@ -524,7 +524,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>seekTFile</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.188">seekTFile</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.187">seekTFile</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>
@@ -538,7 +538,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>testSeeks</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.224">testSeeks</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.223">testSeeks</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>
@@ -552,7 +552,7 @@ extends junit.framework.TestCase</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>main</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.541">main</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;argv)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestHFileSeek.html#line.540">main</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]&nbsp;argv)
                  throws <a href="https://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/13ae5225/testdevapidocs/org/apache/hadoop/hbase/package-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/package-frame.html b/testdevapidocs/org/apache/hadoop/hbase/package-frame.html
index 70c4106..0b38ad2 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-frame.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-frame.html
@@ -215,7 +215,7 @@
 <li><a href="TestJMXConnectorServer.MyAccessController.html" title="class in org.apache.hadoop.hbase" target="classFrame">TestJMXConnectorServer.MyAccessController</a></li>
 <li><a href="TestJMXListener.html" title="class in org.apache.hadoop.hbase" target="classFrame">TestJMXListener</a></li>
 <li><a href="TestKeyValue.html" title="class in org.apache.hadoop.hbase" target="classFrame">TestKeyValue</a></li>
-<li><a href="TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase" target="classFrame">TestKeyValue.MockKeyValue</a></li>
+<li><a href="TestKeyValue.FailureCase.html" title="class in org.apache.hadoop.hbase" target="classFrame">TestKeyValue.FailureCase</a></li>
 <li><a href="TestLocalHBaseCluster.html" title="class in org.apache.hadoop.hbase" target="classFrame">TestLocalHBaseCluster</a></li>
 <li><a href="TestLocalHBaseCluster.MyHMaster.html" title="class in org.apache.hadoop.hbase" target="classFrame">TestLocalHBaseCluster.MyHMaster</a></li>
 <li><a href="TestLocalHBaseCluster.MyHRegionServer.html" title="class in org.apache.hadoop.hbase" target="classFrame">TestLocalHBaseCluster.MyHRegionServer</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/testdevapidocs/org/apache/hadoop/hbase/package-summary.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/package-summary.html b/testdevapidocs/org/apache/hadoop/hbase/package-summary.html
index 2e69dbc..7f0d786 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-summary.html
@@ -1132,7 +1132,7 @@
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue.MockKeyValue</a></td>
+<td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.FailureCase.html" title="class in org.apache.hadoop.hbase">TestKeyValue.FailureCase</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/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 2f1cc95..96f1aeb 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -494,7 +494,7 @@
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/TestJMXConnectorServer.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">TestJMXConnectorServer</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/TestJMXListener.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">TestJMXListener</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/TestKeyValue.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">TestKeyValue</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">TestKeyValue.MockKeyValue</span></a> (implements org.apache.hadoop.hbase.Cell)</li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/TestKeyValue.FailureCase.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">TestKeyValue.FailureCase</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/TestLocalHBaseCluster.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">TestLocalHBaseCluster</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/TestMetaTableAccessor.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">TestMetaTableAccessor</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/TestMetaTableAccessorNoCluster.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">TestMetaTableAccessorNoCluster</span></a></li>
@@ -579,15 +579,15 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.Counter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">PerformanceEvaluation.Counter</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/IntegrationTestDDLMasterFailover.ACTION.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestDDLMasterFailover.ACTION</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestRegionReplicaPerf.Stat</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.RoleCommand.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.RoleCommand</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/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/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/ClusterManager.ServiceType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterManager.ServiceType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.Service.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.Service</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.RoleCommand.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.RoleCommand</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HBaseClusterManager.CommandProvider.Operation.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HBaseClusterManager.CommandProvider.Operation</span></a></li>
 </ul>
 </li>
 </ul>

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

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

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


[13/29] hbase-site git commit: Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html
index 530289c..3fc5c45 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html
@@ -1718,1082 +1718,1081 @@
 <span class="sourceLineNo">1710</span><a name="line.1710"></a>
 <span class="sourceLineNo">1711</span>  @Override<a name="line.1711"></a>
 <span class="sourceLineNo">1712</span>  public boolean hasReferences() {<a name="line.1712"></a>
-<span class="sourceLineNo">1713</span>    List&lt;HStoreFile&gt; reloadedStoreFiles = null;<a name="line.1713"></a>
-<span class="sourceLineNo">1714</span>    // Grab the read lock here, because we need to ensure that: only when the atomic<a name="line.1714"></a>
-<span class="sourceLineNo">1715</span>    // replaceStoreFiles(..) finished, we can get all the complete store file list.<a name="line.1715"></a>
-<span class="sourceLineNo">1716</span>    this.lock.readLock().lock();<a name="line.1716"></a>
-<span class="sourceLineNo">1717</span>    try {<a name="line.1717"></a>
-<span class="sourceLineNo">1718</span>      // Merge the current store files with compacted files here due to HBASE-20940.<a name="line.1718"></a>
-<span class="sourceLineNo">1719</span>      Collection&lt;HStoreFile&gt; allStoreFiles = new ArrayList&lt;&gt;(getStorefiles());<a name="line.1719"></a>
-<span class="sourceLineNo">1720</span>      allStoreFiles.addAll(getCompactedFiles());<a name="line.1720"></a>
-<span class="sourceLineNo">1721</span>      return StoreUtils.hasReferences(allStoreFiles);<a name="line.1721"></a>
-<span class="sourceLineNo">1722</span>    } finally {<a name="line.1722"></a>
-<span class="sourceLineNo">1723</span>      this.lock.readLock().unlock();<a name="line.1723"></a>
-<span class="sourceLineNo">1724</span>    }<a name="line.1724"></a>
-<span class="sourceLineNo">1725</span>  }<a name="line.1725"></a>
-<span class="sourceLineNo">1726</span><a name="line.1726"></a>
-<span class="sourceLineNo">1727</span>  /**<a name="line.1727"></a>
-<span class="sourceLineNo">1728</span>   * getter for CompactionProgress object<a name="line.1728"></a>
-<span class="sourceLineNo">1729</span>   * @return CompactionProgress object; can be null<a name="line.1729"></a>
-<span class="sourceLineNo">1730</span>   */<a name="line.1730"></a>
-<span class="sourceLineNo">1731</span>  public CompactionProgress getCompactionProgress() {<a name="line.1731"></a>
-<span class="sourceLineNo">1732</span>    return this.storeEngine.getCompactor().getProgress();<a name="line.1732"></a>
-<span class="sourceLineNo">1733</span>  }<a name="line.1733"></a>
-<span class="sourceLineNo">1734</span><a name="line.1734"></a>
-<span class="sourceLineNo">1735</span>  @Override<a name="line.1735"></a>
-<span class="sourceLineNo">1736</span>  public boolean shouldPerformMajorCompaction() throws IOException {<a name="line.1736"></a>
-<span class="sourceLineNo">1737</span>    for (HStoreFile sf : this.storeEngine.getStoreFileManager().getStorefiles()) {<a name="line.1737"></a>
-<span class="sourceLineNo">1738</span>      // TODO: what are these reader checks all over the place?<a name="line.1738"></a>
-<span class="sourceLineNo">1739</span>      if (sf.getReader() == null) {<a name="line.1739"></a>
-<span class="sourceLineNo">1740</span>        LOG.debug("StoreFile {} has null Reader", sf);<a name="line.1740"></a>
-<span class="sourceLineNo">1741</span>        return false;<a name="line.1741"></a>
-<span class="sourceLineNo">1742</span>      }<a name="line.1742"></a>
-<span class="sourceLineNo">1743</span>    }<a name="line.1743"></a>
-<span class="sourceLineNo">1744</span>    return storeEngine.getCompactionPolicy().shouldPerformMajorCompaction(<a name="line.1744"></a>
-<span class="sourceLineNo">1745</span>        this.storeEngine.getStoreFileManager().getStorefiles());<a name="line.1745"></a>
-<span class="sourceLineNo">1746</span>  }<a name="line.1746"></a>
-<span class="sourceLineNo">1747</span><a name="line.1747"></a>
-<span class="sourceLineNo">1748</span>  public Optional&lt;CompactionContext&gt; requestCompaction() throws IOException {<a name="line.1748"></a>
-<span class="sourceLineNo">1749</span>    return requestCompaction(NO_PRIORITY, CompactionLifeCycleTracker.DUMMY, null);<a name="line.1749"></a>
-<span class="sourceLineNo">1750</span>  }<a name="line.1750"></a>
-<span class="sourceLineNo">1751</span><a name="line.1751"></a>
-<span class="sourceLineNo">1752</span>  public Optional&lt;CompactionContext&gt; requestCompaction(int priority,<a name="line.1752"></a>
-<span class="sourceLineNo">1753</span>      CompactionLifeCycleTracker tracker, User user) throws IOException {<a name="line.1753"></a>
-<span class="sourceLineNo">1754</span>    // don't even select for compaction if writes are disabled<a name="line.1754"></a>
-<span class="sourceLineNo">1755</span>    if (!this.areWritesEnabled()) {<a name="line.1755"></a>
-<span class="sourceLineNo">1756</span>      return Optional.empty();<a name="line.1756"></a>
-<span class="sourceLineNo">1757</span>    }<a name="line.1757"></a>
-<span class="sourceLineNo">1758</span>    // Before we do compaction, try to get rid of unneeded files to simplify things.<a name="line.1758"></a>
-<span class="sourceLineNo">1759</span>    removeUnneededFiles();<a name="line.1759"></a>
-<span class="sourceLineNo">1760</span><a name="line.1760"></a>
-<span class="sourceLineNo">1761</span>    final CompactionContext compaction = storeEngine.createCompaction();<a name="line.1761"></a>
-<span class="sourceLineNo">1762</span>    CompactionRequestImpl request = null;<a name="line.1762"></a>
-<span class="sourceLineNo">1763</span>    this.lock.readLock().lock();<a name="line.1763"></a>
-<span class="sourceLineNo">1764</span>    try {<a name="line.1764"></a>
-<span class="sourceLineNo">1765</span>      synchronized (filesCompacting) {<a name="line.1765"></a>
-<span class="sourceLineNo">1766</span>        // First, see if coprocessor would want to override selection.<a name="line.1766"></a>
-<span class="sourceLineNo">1767</span>        if (this.getCoprocessorHost() != null) {<a name="line.1767"></a>
-<span class="sourceLineNo">1768</span>          final List&lt;HStoreFile&gt; candidatesForCoproc = compaction.preSelect(this.filesCompacting);<a name="line.1768"></a>
-<span class="sourceLineNo">1769</span>          boolean override = getCoprocessorHost().preCompactSelection(this,<a name="line.1769"></a>
-<span class="sourceLineNo">1770</span>              candidatesForCoproc, tracker, user);<a name="line.1770"></a>
-<span class="sourceLineNo">1771</span>          if (override) {<a name="line.1771"></a>
-<span class="sourceLineNo">1772</span>            // Coprocessor is overriding normal file selection.<a name="line.1772"></a>
-<span class="sourceLineNo">1773</span>            compaction.forceSelect(new CompactionRequestImpl(candidatesForCoproc));<a name="line.1773"></a>
-<span class="sourceLineNo">1774</span>          }<a name="line.1774"></a>
-<span class="sourceLineNo">1775</span>        }<a name="line.1775"></a>
-<span class="sourceLineNo">1776</span><a name="line.1776"></a>
-<span class="sourceLineNo">1777</span>        // Normal case - coprocessor is not overriding file selection.<a name="line.1777"></a>
-<span class="sourceLineNo">1778</span>        if (!compaction.hasSelection()) {<a name="line.1778"></a>
-<span class="sourceLineNo">1779</span>          boolean isUserCompaction = priority == Store.PRIORITY_USER;<a name="line.1779"></a>
-<span class="sourceLineNo">1780</span>          boolean mayUseOffPeak = offPeakHours.isOffPeakHour() &amp;&amp;<a name="line.1780"></a>
-<span class="sourceLineNo">1781</span>              offPeakCompactionTracker.compareAndSet(false, true);<a name="line.1781"></a>
-<span class="sourceLineNo">1782</span>          try {<a name="line.1782"></a>
-<span class="sourceLineNo">1783</span>            compaction.select(this.filesCompacting, isUserCompaction,<a name="line.1783"></a>
-<span class="sourceLineNo">1784</span>              mayUseOffPeak, forceMajor &amp;&amp; filesCompacting.isEmpty());<a name="line.1784"></a>
-<span class="sourceLineNo">1785</span>          } catch (IOException e) {<a name="line.1785"></a>
-<span class="sourceLineNo">1786</span>            if (mayUseOffPeak) {<a name="line.1786"></a>
-<span class="sourceLineNo">1787</span>              offPeakCompactionTracker.set(false);<a name="line.1787"></a>
-<span class="sourceLineNo">1788</span>            }<a name="line.1788"></a>
-<span class="sourceLineNo">1789</span>            throw e;<a name="line.1789"></a>
-<span class="sourceLineNo">1790</span>          }<a name="line.1790"></a>
-<span class="sourceLineNo">1791</span>          assert compaction.hasSelection();<a name="line.1791"></a>
-<span class="sourceLineNo">1792</span>          if (mayUseOffPeak &amp;&amp; !compaction.getRequest().isOffPeak()) {<a name="line.1792"></a>
-<span class="sourceLineNo">1793</span>            // Compaction policy doesn't want to take advantage of off-peak.<a name="line.1793"></a>
-<span class="sourceLineNo">1794</span>            offPeakCompactionTracker.set(false);<a name="line.1794"></a>
-<span class="sourceLineNo">1795</span>          }<a name="line.1795"></a>
-<span class="sourceLineNo">1796</span>        }<a name="line.1796"></a>
-<span class="sourceLineNo">1797</span>        if (this.getCoprocessorHost() != null) {<a name="line.1797"></a>
-<span class="sourceLineNo">1798</span>          this.getCoprocessorHost().postCompactSelection(<a name="line.1798"></a>
-<span class="sourceLineNo">1799</span>              this, ImmutableList.copyOf(compaction.getRequest().getFiles()), tracker,<a name="line.1799"></a>
-<span class="sourceLineNo">1800</span>              compaction.getRequest(), user);<a name="line.1800"></a>
-<span class="sourceLineNo">1801</span>        }<a name="line.1801"></a>
-<span class="sourceLineNo">1802</span>        // Finally, we have the resulting files list. Check if we have any files at all.<a name="line.1802"></a>
-<span class="sourceLineNo">1803</span>        request = compaction.getRequest();<a name="line.1803"></a>
-<span class="sourceLineNo">1804</span>        Collection&lt;HStoreFile&gt; selectedFiles = request.getFiles();<a name="line.1804"></a>
-<span class="sourceLineNo">1805</span>        if (selectedFiles.isEmpty()) {<a name="line.1805"></a>
-<span class="sourceLineNo">1806</span>          return Optional.empty();<a name="line.1806"></a>
-<span class="sourceLineNo">1807</span>        }<a name="line.1807"></a>
-<span class="sourceLineNo">1808</span><a name="line.1808"></a>
-<span class="sourceLineNo">1809</span>        addToCompactingFiles(selectedFiles);<a name="line.1809"></a>
-<span class="sourceLineNo">1810</span><a name="line.1810"></a>
-<span class="sourceLineNo">1811</span>        // If we're enqueuing a major, clear the force flag.<a name="line.1811"></a>
-<span class="sourceLineNo">1812</span>        this.forceMajor = this.forceMajor &amp;&amp; !request.isMajor();<a name="line.1812"></a>
-<span class="sourceLineNo">1813</span><a name="line.1813"></a>
-<span class="sourceLineNo">1814</span>        // Set common request properties.<a name="line.1814"></a>
-<span class="sourceLineNo">1815</span>        // Set priority, either override value supplied by caller or from store.<a name="line.1815"></a>
-<span class="sourceLineNo">1816</span>        request.setPriority((priority != Store.NO_PRIORITY) ? priority : getCompactPriority());<a name="line.1816"></a>
-<span class="sourceLineNo">1817</span>        request.setDescription(getRegionInfo().getRegionNameAsString(), getColumnFamilyName());<a name="line.1817"></a>
-<span class="sourceLineNo">1818</span>        request.setTracker(tracker);<a name="line.1818"></a>
-<span class="sourceLineNo">1819</span>      }<a name="line.1819"></a>
-<span class="sourceLineNo">1820</span>    } finally {<a name="line.1820"></a>
-<span class="sourceLineNo">1821</span>      this.lock.readLock().unlock();<a name="line.1821"></a>
-<span class="sourceLineNo">1822</span>    }<a name="line.1822"></a>
-<span class="sourceLineNo">1823</span><a name="line.1823"></a>
-<span class="sourceLineNo">1824</span>    if (LOG.isDebugEnabled()) {<a name="line.1824"></a>
-<span class="sourceLineNo">1825</span>      LOG.debug(getRegionInfo().getEncodedName() + " - " + getColumnFamilyName()<a name="line.1825"></a>
-<span class="sourceLineNo">1826</span>          + ": Initiating " + (request.isMajor() ? "major" : "minor") + " compaction"<a name="line.1826"></a>
-<span class="sourceLineNo">1827</span>          + (request.isAllFiles() ? " (all files)" : ""));<a name="line.1827"></a>
-<span class="sourceLineNo">1828</span>    }<a name="line.1828"></a>
-<span class="sourceLineNo">1829</span>    this.region.reportCompactionRequestStart(request.isMajor());<a name="line.1829"></a>
-<span class="sourceLineNo">1830</span>    return Optional.of(compaction);<a name="line.1830"></a>
-<span class="sourceLineNo">1831</span>  }<a name="line.1831"></a>
-<span class="sourceLineNo">1832</span><a name="line.1832"></a>
-<span class="sourceLineNo">1833</span>  /** Adds the files to compacting files. filesCompacting must be locked. */<a name="line.1833"></a>
-<span class="sourceLineNo">1834</span>  private void addToCompactingFiles(Collection&lt;HStoreFile&gt; filesToAdd) {<a name="line.1834"></a>
-<span class="sourceLineNo">1835</span>    if (CollectionUtils.isEmpty(filesToAdd)) {<a name="line.1835"></a>
-<span class="sourceLineNo">1836</span>      return;<a name="line.1836"></a>
-<span class="sourceLineNo">1837</span>    }<a name="line.1837"></a>
-<span class="sourceLineNo">1838</span>    // Check that we do not try to compact the same StoreFile twice.<a name="line.1838"></a>
-<span class="sourceLineNo">1839</span>    if (!Collections.disjoint(filesCompacting, filesToAdd)) {<a name="line.1839"></a>
-<span class="sourceLineNo">1840</span>      Preconditions.checkArgument(false, "%s overlaps with %s", filesToAdd, filesCompacting);<a name="line.1840"></a>
-<span class="sourceLineNo">1841</span>    }<a name="line.1841"></a>
-<span class="sourceLineNo">1842</span>    filesCompacting.addAll(filesToAdd);<a name="line.1842"></a>
-<span class="sourceLineNo">1843</span>    Collections.sort(filesCompacting, storeEngine.getStoreFileManager().getStoreFileComparator());<a name="line.1843"></a>
-<span class="sourceLineNo">1844</span>  }<a name="line.1844"></a>
-<span class="sourceLineNo">1845</span><a name="line.1845"></a>
-<span class="sourceLineNo">1846</span>  private void removeUnneededFiles() throws IOException {<a name="line.1846"></a>
-<span class="sourceLineNo">1847</span>    if (!conf.getBoolean("hbase.store.delete.expired.storefile", true)) return;<a name="line.1847"></a>
-<span class="sourceLineNo">1848</span>    if (getColumnFamilyDescriptor().getMinVersions() &gt; 0) {<a name="line.1848"></a>
-<span class="sourceLineNo">1849</span>      LOG.debug("Skipping expired store file removal due to min version being {}",<a name="line.1849"></a>
-<span class="sourceLineNo">1850</span>          getColumnFamilyDescriptor().getMinVersions());<a name="line.1850"></a>
-<span class="sourceLineNo">1851</span>      return;<a name="line.1851"></a>
-<span class="sourceLineNo">1852</span>    }<a name="line.1852"></a>
-<span class="sourceLineNo">1853</span>    this.lock.readLock().lock();<a name="line.1853"></a>
-<span class="sourceLineNo">1854</span>    Collection&lt;HStoreFile&gt; delSfs = null;<a name="line.1854"></a>
-<span class="sourceLineNo">1855</span>    try {<a name="line.1855"></a>
-<span class="sourceLineNo">1856</span>      synchronized (filesCompacting) {<a name="line.1856"></a>
-<span class="sourceLineNo">1857</span>        long cfTtl = getStoreFileTtl();<a name="line.1857"></a>
-<span class="sourceLineNo">1858</span>        if (cfTtl != Long.MAX_VALUE) {<a name="line.1858"></a>
-<span class="sourceLineNo">1859</span>          delSfs = storeEngine.getStoreFileManager().getUnneededFiles(<a name="line.1859"></a>
-<span class="sourceLineNo">1860</span>              EnvironmentEdgeManager.currentTime() - cfTtl, filesCompacting);<a name="line.1860"></a>
-<span class="sourceLineNo">1861</span>          addToCompactingFiles(delSfs);<a name="line.1861"></a>
-<span class="sourceLineNo">1862</span>        }<a name="line.1862"></a>
-<span class="sourceLineNo">1863</span>      }<a name="line.1863"></a>
-<span class="sourceLineNo">1864</span>    } finally {<a name="line.1864"></a>
-<span class="sourceLineNo">1865</span>      this.lock.readLock().unlock();<a name="line.1865"></a>
-<span class="sourceLineNo">1866</span>    }<a name="line.1866"></a>
-<span class="sourceLineNo">1867</span><a name="line.1867"></a>
-<span class="sourceLineNo">1868</span>    if (CollectionUtils.isEmpty(delSfs)) {<a name="line.1868"></a>
-<span class="sourceLineNo">1869</span>      return;<a name="line.1869"></a>
-<span class="sourceLineNo">1870</span>    }<a name="line.1870"></a>
-<span class="sourceLineNo">1871</span><a name="line.1871"></a>
-<span class="sourceLineNo">1872</span>    Collection&lt;HStoreFile&gt; newFiles = Collections.emptyList(); // No new files.<a name="line.1872"></a>
-<span class="sourceLineNo">1873</span>    writeCompactionWalRecord(delSfs, newFiles);<a name="line.1873"></a>
-<span class="sourceLineNo">1874</span>    replaceStoreFiles(delSfs, newFiles);<a name="line.1874"></a>
-<span class="sourceLineNo">1875</span>    completeCompaction(delSfs);<a name="line.1875"></a>
-<span class="sourceLineNo">1876</span>    LOG.info("Completed removal of " + delSfs.size() + " unnecessary (expired) file(s) in "<a name="line.1876"></a>
-<span class="sourceLineNo">1877</span>        + this + " of " + this.getRegionInfo().getRegionNameAsString()<a name="line.1877"></a>
-<span class="sourceLineNo">1878</span>        + "; total size for store is "<a name="line.1878"></a>
-<span class="sourceLineNo">1879</span>        + TraditionalBinaryPrefix.long2String(storeSize.get(), "", 1));<a name="line.1879"></a>
-<span class="sourceLineNo">1880</span>  }<a name="line.1880"></a>
-<span class="sourceLineNo">1881</span><a name="line.1881"></a>
-<span class="sourceLineNo">1882</span>  public void cancelRequestedCompaction(CompactionContext compaction) {<a name="line.1882"></a>
-<span class="sourceLineNo">1883</span>    finishCompactionRequest(compaction.getRequest());<a name="line.1883"></a>
-<span class="sourceLineNo">1884</span>  }<a name="line.1884"></a>
-<span class="sourceLineNo">1885</span><a name="line.1885"></a>
-<span class="sourceLineNo">1886</span>  private void finishCompactionRequest(CompactionRequestImpl cr) {<a name="line.1886"></a>
-<span class="sourceLineNo">1887</span>    this.region.reportCompactionRequestEnd(cr.isMajor(), cr.getFiles().size(), cr.getSize());<a name="line.1887"></a>
-<span class="sourceLineNo">1888</span>    if (cr.isOffPeak()) {<a name="line.1888"></a>
-<span class="sourceLineNo">1889</span>      offPeakCompactionTracker.set(false);<a name="line.1889"></a>
-<span class="sourceLineNo">1890</span>      cr.setOffPeak(false);<a name="line.1890"></a>
-<span class="sourceLineNo">1891</span>    }<a name="line.1891"></a>
-<span class="sourceLineNo">1892</span>    synchronized (filesCompacting) {<a name="line.1892"></a>
-<span class="sourceLineNo">1893</span>      filesCompacting.removeAll(cr.getFiles());<a name="line.1893"></a>
-<span class="sourceLineNo">1894</span>    }<a name="line.1894"></a>
-<span class="sourceLineNo">1895</span>  }<a name="line.1895"></a>
-<span class="sourceLineNo">1896</span><a name="line.1896"></a>
-<span class="sourceLineNo">1897</span>  /**<a name="line.1897"></a>
-<span class="sourceLineNo">1898</span>   * Validates a store file by opening and closing it. In HFileV2 this should not be an expensive<a name="line.1898"></a>
-<span class="sourceLineNo">1899</span>   * operation.<a name="line.1899"></a>
-<span class="sourceLineNo">1900</span>   * @param path the path to the store file<a name="line.1900"></a>
-<span class="sourceLineNo">1901</span>   */<a name="line.1901"></a>
-<span class="sourceLineNo">1902</span>  private void validateStoreFile(Path path) throws IOException {<a name="line.1902"></a>
-<span class="sourceLineNo">1903</span>    HStoreFile storeFile = null;<a name="line.1903"></a>
-<span class="sourceLineNo">1904</span>    try {<a name="line.1904"></a>
-<span class="sourceLineNo">1905</span>      storeFile = createStoreFileAndReader(path);<a name="line.1905"></a>
-<span class="sourceLineNo">1906</span>    } catch (IOException e) {<a name="line.1906"></a>
-<span class="sourceLineNo">1907</span>      LOG.error("Failed to open store file : {}, keeping it in tmp location", path, e);<a name="line.1907"></a>
-<span class="sourceLineNo">1908</span>      throw e;<a name="line.1908"></a>
-<span class="sourceLineNo">1909</span>    } finally {<a name="line.1909"></a>
-<span class="sourceLineNo">1910</span>      if (storeFile != null) {<a name="line.1910"></a>
-<span class="sourceLineNo">1911</span>        storeFile.closeStoreFile(false);<a name="line.1911"></a>
-<span class="sourceLineNo">1912</span>      }<a name="line.1912"></a>
-<span class="sourceLineNo">1913</span>    }<a name="line.1913"></a>
-<span class="sourceLineNo">1914</span>  }<a name="line.1914"></a>
-<span class="sourceLineNo">1915</span><a name="line.1915"></a>
-<span class="sourceLineNo">1916</span>  /**<a name="line.1916"></a>
-<span class="sourceLineNo">1917</span>   * &lt;p&gt;It works by processing a compaction that's been written to disk.<a name="line.1917"></a>
-<span class="sourceLineNo">1918</span>   *<a name="line.1918"></a>
-<span class="sourceLineNo">1919</span>   * &lt;p&gt;It is usually invoked at the end of a compaction, but might also be<a name="line.1919"></a>
-<span class="sourceLineNo">1920</span>   * invoked at HStore startup, if the prior execution died midway through.<a name="line.1920"></a>
-<span class="sourceLineNo">1921</span>   *<a name="line.1921"></a>
-<span class="sourceLineNo">1922</span>   * &lt;p&gt;Moving the compacted TreeMap into place means:<a name="line.1922"></a>
-<span class="sourceLineNo">1923</span>   * &lt;pre&gt;<a name="line.1923"></a>
-<span class="sourceLineNo">1924</span>   * 1) Unload all replaced StoreFile, close and collect list to delete.<a name="line.1924"></a>
-<span class="sourceLineNo">1925</span>   * 2) Compute new store size<a name="line.1925"></a>
-<span class="sourceLineNo">1926</span>   * &lt;/pre&gt;<a name="line.1926"></a>
-<span class="sourceLineNo">1927</span>   *<a name="line.1927"></a>
-<span class="sourceLineNo">1928</span>   * @param compactedFiles list of files that were compacted<a name="line.1928"></a>
-<span class="sourceLineNo">1929</span>   */<a name="line.1929"></a>
-<span class="sourceLineNo">1930</span>  @VisibleForTesting<a name="line.1930"></a>
-<span class="sourceLineNo">1931</span>  protected void completeCompaction(Collection&lt;HStoreFile&gt; compactedFiles)<a name="line.1931"></a>
-<span class="sourceLineNo">1932</span>    throws IOException {<a name="line.1932"></a>
-<span class="sourceLineNo">1933</span>    this.storeSize.set(0L);<a name="line.1933"></a>
-<span class="sourceLineNo">1934</span>    this.totalUncompressedBytes.set(0L);<a name="line.1934"></a>
-<span class="sourceLineNo">1935</span>    for (HStoreFile hsf : this.storeEngine.getStoreFileManager().getStorefiles()) {<a name="line.1935"></a>
-<span class="sourceLineNo">1936</span>      StoreFileReader r = hsf.getReader();<a name="line.1936"></a>
-<span class="sourceLineNo">1937</span>      if (r == null) {<a name="line.1937"></a>
-<span class="sourceLineNo">1938</span>        LOG.warn("StoreFile {} has a null Reader", hsf);<a name="line.1938"></a>
-<span class="sourceLineNo">1939</span>        continue;<a name="line.1939"></a>
-<span class="sourceLineNo">1940</span>      }<a name="line.1940"></a>
-<span class="sourceLineNo">1941</span>      this.storeSize.addAndGet(r.length());<a name="line.1941"></a>
-<span class="sourceLineNo">1942</span>      this.totalUncompressedBytes.addAndGet(r.getTotalUncompressedBytes());<a name="line.1942"></a>
-<span class="sourceLineNo">1943</span>    }<a name="line.1943"></a>
-<span class="sourceLineNo">1944</span>  }<a name="line.1944"></a>
-<span class="sourceLineNo">1945</span><a name="line.1945"></a>
-<span class="sourceLineNo">1946</span>  /*<a name="line.1946"></a>
-<span class="sourceLineNo">1947</span>   * @param wantedVersions How many versions were asked for.<a name="line.1947"></a>
-<span class="sourceLineNo">1948</span>   * @return wantedVersions or this families' {@link HConstants#VERSIONS}.<a name="line.1948"></a>
-<span class="sourceLineNo">1949</span>   */<a name="line.1949"></a>
-<span class="sourceLineNo">1950</span>  int versionsToReturn(final int wantedVersions) {<a name="line.1950"></a>
-<span class="sourceLineNo">1951</span>    if (wantedVersions &lt;= 0) {<a name="line.1951"></a>
-<span class="sourceLineNo">1952</span>      throw new IllegalArgumentException("Number of versions must be &gt; 0");<a name="line.1952"></a>
-<span class="sourceLineNo">1953</span>    }<a name="line.1953"></a>
-<span class="sourceLineNo">1954</span>    // Make sure we do not return more than maximum versions for this store.<a name="line.1954"></a>
-<span class="sourceLineNo">1955</span>    int maxVersions = this.family.getMaxVersions();<a name="line.1955"></a>
-<span class="sourceLineNo">1956</span>    return wantedVersions &gt; maxVersions ? maxVersions: wantedVersions;<a name="line.1956"></a>
-<span class="sourceLineNo">1957</span>  }<a name="line.1957"></a>
-<span class="sourceLineNo">1958</span><a name="line.1958"></a>
-<span class="sourceLineNo">1959</span>  @Override<a name="line.1959"></a>
-<span class="sourceLineNo">1960</span>  public boolean canSplit() {<a name="line.1960"></a>
-<span class="sourceLineNo">1961</span>    this.lock.readLock().lock();<a name="line.1961"></a>
-<span class="sourceLineNo">1962</span>    try {<a name="line.1962"></a>
-<span class="sourceLineNo">1963</span>      // Not split-able if we find a reference store file present in the store.<a name="line.1963"></a>
-<span class="sourceLineNo">1964</span>      boolean result = !hasReferences();<a name="line.1964"></a>
-<span class="sourceLineNo">1965</span>      if (!result) {<a name="line.1965"></a>
-<span class="sourceLineNo">1966</span>        LOG.trace("Not splittable; has references: {}", this);<a name="line.1966"></a>
-<span class="sourceLineNo">1967</span>      }<a name="line.1967"></a>
-<span class="sourceLineNo">1968</span>      return result;<a name="line.1968"></a>
-<span class="sourceLineNo">1969</span>    } finally {<a name="line.1969"></a>
-<span class="sourceLineNo">1970</span>      this.lock.readLock().unlock();<a name="line.1970"></a>
-<span class="sourceLineNo">1971</span>    }<a name="line.1971"></a>
-<span class="sourceLineNo">1972</span>  }<a name="line.1972"></a>
-<span class="sourceLineNo">1973</span><a name="line.1973"></a>
-<span class="sourceLineNo">1974</span>  /**<a name="line.1974"></a>
-<span class="sourceLineNo">1975</span>   * Determines if Store should be split.<a name="line.1975"></a>
-<span class="sourceLineNo">1976</span>   */<a name="line.1976"></a>
-<span class="sourceLineNo">1977</span>  public Optional&lt;byte[]&gt; getSplitPoint() {<a name="line.1977"></a>
-<span class="sourceLineNo">1978</span>    this.lock.readLock().lock();<a name="line.1978"></a>
-<span class="sourceLineNo">1979</span>    try {<a name="line.1979"></a>
-<span class="sourceLineNo">1980</span>      // Should already be enforced by the split policy!<a name="line.1980"></a>
-<span class="sourceLineNo">1981</span>      assert !this.getRegionInfo().isMetaRegion();<a name="line.1981"></a>
-<span class="sourceLineNo">1982</span>      // Not split-able if we find a reference store file present in the store.<a name="line.1982"></a>
-<span class="sourceLineNo">1983</span>      if (hasReferences()) {<a name="line.1983"></a>
-<span class="sourceLineNo">1984</span>        LOG.trace("Not splittable; has references: {}", this);<a name="line.1984"></a>
-<span class="sourceLineNo">1985</span>        return Optional.empty();<a name="line.1985"></a>
-<span class="sourceLineNo">1986</span>      }<a name="line.1986"></a>
-<span class="sourceLineNo">1987</span>      return this.storeEngine.getStoreFileManager().getSplitPoint();<a name="line.1987"></a>
-<span class="sourceLineNo">1988</span>    } catch(IOException e) {<a name="line.1988"></a>
-<span class="sourceLineNo">1989</span>      LOG.warn("Failed getting store size for {}", this, e);<a name="line.1989"></a>
-<span class="sourceLineNo">1990</span>    } finally {<a name="line.1990"></a>
-<span class="sourceLineNo">1991</span>      this.lock.readLock().unlock();<a name="line.1991"></a>
-<span class="sourceLineNo">1992</span>    }<a name="line.1992"></a>
-<span class="sourceLineNo">1993</span>    return Optional.empty();<a name="line.1993"></a>
-<span class="sourceLineNo">1994</span>  }<a name="line.1994"></a>
-<span class="sourceLineNo">1995</span><a name="line.1995"></a>
-<span class="sourceLineNo">1996</span>  @Override<a name="line.1996"></a>
-<span class="sourceLineNo">1997</span>  public long getLastCompactSize() {<a name="line.1997"></a>
-<span class="sourceLineNo">1998</span>    return this.lastCompactSize;<a name="line.1998"></a>
-<span class="sourceLineNo">1999</span>  }<a name="line.1999"></a>
-<span class="sourceLineNo">2000</span><a name="line.2000"></a>
-<span class="sourceLineNo">2001</span>  @Override<a name="line.2001"></a>
-<span class="sourceLineNo">2002</span>  public long getSize() {<a name="line.2002"></a>
-<span class="sourceLineNo">2003</span>    return storeSize.get();<a name="line.2003"></a>
-<span class="sourceLineNo">2004</span>  }<a name="line.2004"></a>
-<span class="sourceLineNo">2005</span><a name="line.2005"></a>
-<span class="sourceLineNo">2006</span>  public void triggerMajorCompaction() {<a name="line.2006"></a>
-<span class="sourceLineNo">2007</span>    this.forceMajor = true;<a name="line.2007"></a>
-<span class="sourceLineNo">2008</span>  }<a name="line.2008"></a>
-<span class="sourceLineNo">2009</span><a name="line.2009"></a>
-<span class="sourceLineNo">2010</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2010"></a>
-<span class="sourceLineNo">2011</span>  // File administration<a name="line.2011"></a>
-<span class="sourceLineNo">2012</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2012"></a>
-<span class="sourceLineNo">2013</span><a name="line.2013"></a>
-<span class="sourceLineNo">2014</span>  /**<a name="line.2014"></a>
-<span class="sourceLineNo">2015</span>   * Return a scanner for both the memstore and the HStore files. Assumes we are not in a<a name="line.2015"></a>
-<span class="sourceLineNo">2016</span>   * compaction.<a name="line.2016"></a>
-<span class="sourceLineNo">2017</span>   * @param scan Scan to apply when scanning the stores<a name="line.2017"></a>
-<span class="sourceLineNo">2018</span>   * @param targetCols columns to scan<a name="line.2018"></a>
-<span class="sourceLineNo">2019</span>   * @return a scanner over the current key values<a name="line.2019"></a>
-<span class="sourceLineNo">2020</span>   * @throws IOException on failure<a name="line.2020"></a>
-<span class="sourceLineNo">2021</span>   */<a name="line.2021"></a>
-<span class="sourceLineNo">2022</span>  public KeyValueScanner getScanner(Scan scan, final NavigableSet&lt;byte[]&gt; targetCols, long readPt)<a name="line.2022"></a>
-<span class="sourceLineNo">2023</span>      throws IOException {<a name="line.2023"></a>
-<span class="sourceLineNo">2024</span>    lock.readLock().lock();<a name="line.2024"></a>
-<span class="sourceLineNo">2025</span>    try {<a name="line.2025"></a>
-<span class="sourceLineNo">2026</span>      ScanInfo scanInfo;<a name="line.2026"></a>
-<span class="sourceLineNo">2027</span>      if (this.getCoprocessorHost() != null) {<a name="line.2027"></a>
-<span class="sourceLineNo">2028</span>        scanInfo = this.getCoprocessorHost().preStoreScannerOpen(this);<a name="line.2028"></a>
-<span class="sourceLineNo">2029</span>      } else {<a name="line.2029"></a>
-<span class="sourceLineNo">2030</span>        scanInfo = getScanInfo();<a name="line.2030"></a>
-<span class="sourceLineNo">2031</span>      }<a name="line.2031"></a>
-<span class="sourceLineNo">2032</span>      return createScanner(scan, scanInfo, targetCols, readPt);<a name="line.2032"></a>
-<span class="sourceLineNo">2033</span>    } finally {<a name="line.2033"></a>
-<span class="sourceLineNo">2034</span>      lock.readLock().unlock();<a name="line.2034"></a>
-<span class="sourceLineNo">2035</span>    }<a name="line.2035"></a>
-<span class="sourceLineNo">2036</span>  }<a name="line.2036"></a>
-<span class="sourceLineNo">2037</span><a name="line.2037"></a>
-<span class="sourceLineNo">2038</span>  // HMobStore will override this method to return its own implementation.<a name="line.2038"></a>
-<span class="sourceLineNo">2039</span>  protected KeyValueScanner createScanner(Scan scan, ScanInfo scanInfo,<a name="line.2039"></a>
-<span class="sourceLineNo">2040</span>      NavigableSet&lt;byte[]&gt; targetCols, long readPt) throws IOException {<a name="line.2040"></a>
-<span class="sourceLineNo">2041</span>    return scan.isReversed() ? new ReversedStoreScanner(this, scanInfo, scan, targetCols, readPt)<a name="line.2041"></a>
-<span class="sourceLineNo">2042</span>        : new StoreScanner(this, scanInfo, scan, targetCols, readPt);<a name="line.2042"></a>
-<span class="sourceLineNo">2043</span>  }<a name="line.2043"></a>
-<span class="sourceLineNo">2044</span><a name="line.2044"></a>
-<span class="sourceLineNo">2045</span>  /**<a name="line.2045"></a>
-<span class="sourceLineNo">2046</span>   * Recreates the scanners on the current list of active store file scanners<a name="line.2046"></a>
-<span class="sourceLineNo">2047</span>   * @param currentFileScanners the current set of active store file scanners<a name="line.2047"></a>
-<span class="sourceLineNo">2048</span>   * @param cacheBlocks cache the blocks or not<a name="line.2048"></a>
-<span class="sourceLineNo">2049</span>   * @param usePread use pread or not<a name="line.2049"></a>
-<span class="sourceLineNo">2050</span>   * @param isCompaction is the scanner for compaction<a name="line.2050"></a>
-<span class="sourceLineNo">2051</span>   * @param matcher the scan query matcher<a name="line.2051"></a>
-<span class="sourceLineNo">2052</span>   * @param startRow the scan's start row<a name="line.2052"></a>
-<span class="sourceLineNo">2053</span>   * @param includeStartRow should the scan include the start row<a name="line.2053"></a>
-<span class="sourceLineNo">2054</span>   * @param stopRow the scan's stop row<a name="line.2054"></a>
-<span class="sourceLineNo">2055</span>   * @param includeStopRow should the scan include the stop row<a name="line.2055"></a>
-<span class="sourceLineNo">2056</span>   * @param readPt the read point of the current scane<a name="line.2056"></a>
-<span class="sourceLineNo">2057</span>   * @param includeMemstoreScanner whether the current scanner should include memstorescanner<a name="line.2057"></a>
-<span class="sourceLineNo">2058</span>   * @return list of scanners recreated on the current Scanners<a name="line.2058"></a>
-<span class="sourceLineNo">2059</span>   * @throws IOException<a name="line.2059"></a>
-<span class="sourceLineNo">2060</span>   */<a name="line.2060"></a>
-<span class="sourceLineNo">2061</span>  public List&lt;KeyValueScanner&gt; recreateScanners(List&lt;KeyValueScanner&gt; currentFileScanners,<a name="line.2061"></a>
-<span class="sourceLineNo">2062</span>      boolean cacheBlocks, boolean usePread, boolean isCompaction, ScanQueryMatcher matcher,<a name="line.2062"></a>
-<span class="sourceLineNo">2063</span>      byte[] startRow, boolean includeStartRow, byte[] stopRow, boolean includeStopRow, long readPt,<a name="line.2063"></a>
-<span class="sourceLineNo">2064</span>      boolean includeMemstoreScanner) throws IOException {<a name="line.2064"></a>
-<span class="sourceLineNo">2065</span>    this.lock.readLock().lock();<a name="line.2065"></a>
-<span class="sourceLineNo">2066</span>    try {<a name="line.2066"></a>
-<span class="sourceLineNo">2067</span>      Map&lt;String, HStoreFile&gt; name2File =<a name="line.2067"></a>
-<span class="sourceLineNo">2068</span>          new HashMap&lt;&gt;(getStorefilesCount() + getCompactedFilesCount());<a name="line.2068"></a>
-<span class="sourceLineNo">2069</span>      for (HStoreFile file : getStorefiles()) {<a name="line.2069"></a>
-<span class="sourceLineNo">2070</span>        name2File.put(file.getFileInfo().getActiveFileName(), file);<a name="line.2070"></a>
-<span class="sourceLineNo">2071</span>      }<a name="line.2071"></a>
-<span class="sourceLineNo">2072</span>      Collection&lt;HStoreFile&gt; compactedFiles = getCompactedFiles();<a name="line.2072"></a>
-<span class="sourceLineNo">2073</span>      for (HStoreFile file : IterableUtils.emptyIfNull(compactedFiles)) {<a name="line.2073"></a>
-<span class="sourceLineNo">2074</span>        name2File.put(file.getFileInfo().getActiveFileName(), file);<a name="line.2074"></a>
-<span class="sourceLineNo">2075</span>      }<a name="line.2075"></a>
-<span class="sourceLineNo">2076</span>      List&lt;HStoreFile&gt; filesToReopen = new ArrayList&lt;&gt;();<a name="line.2076"></a>
-<span class="sourceLineNo">2077</span>      for (KeyValueScanner kvs : currentFileScanners) {<a name="line.2077"></a>
-<span class="sourceLineNo">2078</span>        assert kvs.isFileScanner();<a name="line.2078"></a>
-<span class="sourceLineNo">2079</span>        if (kvs.peek() == null) {<a name="line.2079"></a>
-<span class="sourceLineNo">2080</span>          continue;<a name="line.2080"></a>
-<span class="sourceLineNo">2081</span>        }<a name="line.2081"></a>
-<span class="sourceLineNo">2082</span>        filesToReopen.add(name2File.get(kvs.getFilePath().getName()));<a name="line.2082"></a>
-<span class="sourceLineNo">2083</span>      }<a name="line.2083"></a>
-<span class="sourceLineNo">2084</span>      if (filesToReopen.isEmpty()) {<a name="line.2084"></a>
-<span class="sourceLineNo">2085</span>        return null;<a name="line.2085"></a>
-<span class="sourceLineNo">2086</span>      }<a name="line.2086"></a>
-<span class="sourceLineNo">2087</span>      return getScanners(filesToReopen, cacheBlocks, false, false, matcher, startRow,<a name="line.2087"></a>
-<span class="sourceLineNo">2088</span>        includeStartRow, stopRow, includeStopRow, readPt, false);<a name="line.2088"></a>
-<span class="sourceLineNo">2089</span>    } finally {<a name="line.2089"></a>
-<span class="sourceLineNo">2090</span>      this.lock.readLock().unlock();<a name="line.2090"></a>
-<span class="sourceLineNo">2091</span>    }<a name="line.2091"></a>
-<span class="sourceLineNo">2092</span>  }<a name="line.2092"></a>
-<span class="sourceLineNo">2093</span><a name="line.2093"></a>
-<span class="sourceLineNo">2094</span>  @Override<a name="line.2094"></a>
-<span class="sourceLineNo">2095</span>  public String toString() {<a name="line.2095"></a>
-<span class="sourceLineNo">2096</span>    return this.getColumnFamilyName();<a name="line.2096"></a>
-<span class="sourceLineNo">2097</span>  }<a name="line.2097"></a>
-<span class="sourceLineNo">2098</span><a name="line.2098"></a>
-<span class="sourceLineNo">2099</span>  @Override<a name="line.2099"></a>
-<span class="sourceLineNo">2100</span>  public int getStorefilesCount() {<a name="line.2100"></a>
-<span class="sourceLineNo">2101</span>    return this.storeEngine.getStoreFileManager().getStorefileCount();<a name="line.2101"></a>
-<span class="sourceLineNo">2102</span>  }<a name="line.2102"></a>
-<span class="sourceLineNo">2103</span><a name="line.2103"></a>
-<span class="sourceLineNo">2104</span>  @Override<a name="line.2104"></a>
-<span class="sourceLineNo">2105</span>  public int getCompactedFilesCount() {<a name="line.2105"></a>
-<span class="sourceLineNo">2106</span>    return this.storeEngine.getStoreFileManager().getCompactedFilesCount();<a name="line.2106"></a>
-<span class="sourceLineNo">2107</span>  }<a name="line.2107"></a>
-<span class="sourceLineNo">2108</span><a name="line.2108"></a>
-<span class="sourceLineNo">2109</span>  private LongStream getStoreFileAgeStream() {<a name="line.2109"></a>
-<span class="sourceLineNo">2110</span>    return this.storeEngine.getStoreFileManager().getStorefiles().stream().filter(sf -&gt; {<a name="line.2110"></a>
-<span class="sourceLineNo">2111</span>      if (sf.getReader() == null) {<a name="line.2111"></a>
-<span class="sourceLineNo">2112</span>        LOG.warn("StoreFile {} has a null Reader", sf);<a name="line.2112"></a>
-<span class="sourceLineNo">2113</span>        return false;<a name="line.2113"></a>
-<span class="sourceLineNo">2114</span>      } else {<a name="line.2114"></a>
-<span class="sourceLineNo">2115</span>        return true;<a name="line.2115"></a>
-<span class="sourceLineNo">2116</span>      }<a name="line.2116"></a>
-<span class="sourceLineNo">2117</span>    }).filter(HStoreFile::isHFile).mapToLong(sf -&gt; sf.getFileInfo().getCreatedTimestamp())<a name="line.2117"></a>
-<span class="sourceLineNo">2118</span>        .map(t -&gt; EnvironmentEdgeManager.currentTime() - t);<a name="line.2118"></a>
-<span class="sourceLineNo">2119</span>  }<a name="line.2119"></a>
-<span class="sourceLineNo">2120</span><a name="line.2120"></a>
-<span class="sourceLineNo">2121</span>  @Override<a name="line.2121"></a>
-<span class="sourceLineNo">2122</span>  public OptionalLong getMaxStoreFileAge() {<a name="line.2122"></a>
-<span class="sourceLineNo">2123</span>    return getStoreFileAgeStream().max();<a name="line.2123"></a>
-<span class="sourceLineNo">2124</span>  }<a name="line.2124"></a>
-<span class="sourceLineNo">2125</span><a name="line.2125"></a>
-<span class="sourceLineNo">2126</span>  @Override<a name="line.2126"></a>
-<span class="sourceLineNo">2127</span>  public OptionalLong getMinStoreFileAge() {<a name="line.2127"></a>
-<span class="sourceLineNo">2128</span>    return getStoreFileAgeStream().min();<a name="line.2128"></a>
-<span class="sourceLineNo">2129</span>  }<a name="line.2129"></a>
-<span class="sourceLineNo">2130</span><a name="line.2130"></a>
-<span class="sourceLineNo">2131</span>  @Override<a name="line.2131"></a>
-<span class="sourceLineNo">2132</span>  public OptionalDouble getAvgStoreFileAge() {<a name="line.2132"></a>
-<span class="sourceLineNo">2133</span>    return getStoreFileAgeStream().average();<a name="line.2133"></a>
-<span class="sourceLineNo">2134</span>  }<a name="line.2134"></a>
-<span class="sourceLineNo">2135</span><a name="line.2135"></a>
-<span class="sourceLineNo">2136</span>  @Override<a name="line.2136"></a>
-<span class="sourceLineNo">2137</span>  public long getNumReferenceFiles() {<a name="line.2137"></a>
-<span class="sourceLineNo">2138</span>    return this.storeEngine.getStoreFileManager().getStorefiles().stream()<a name="line.2138"></a>
-<span class="sourceLineNo">2139</span>        .filter(HStoreFile::isReference).count();<a name="line.2139"></a>
-<span class="sourceLineNo">2140</span>  }<a name="line.2140"></a>
-<span class="sourceLineNo">2141</span><a name="line.2141"></a>
-<span class="sourceLineNo">2142</span>  @Override<a name="line.2142"></a>
-<span class="sourceLineNo">2143</span>  public long getNumHFiles() {<a name="line.2143"></a>
-<span class="sourceLineNo">2144</span>    return this.storeEngine.getStoreFileManager().getStorefiles().stream()<a name="line.2144"></a>
-<span class="sourceLineNo">2145</span>        .filter(HStoreFile::isHFile).count();<a name="line.2145"></a>
-<span class="sourceLineNo">2146</span>  }<a name="line.2146"></a>
-<span class="sourceLineNo">2147</span><a name="line.2147"></a>
-<span class="sourceLineNo">2148</span>  @Override<a name="line.2148"></a>
-<span class="sourceLineNo">2149</span>  public long getStoreSizeUncompressed() {<a name="line.2149"></a>
-<span class="sourceLineNo">2150</span>    return this.totalUncompressedBytes.get();<a name="line.2150"></a>
-<span class="sourceLineNo">2151</span>  }<a name="line.2151"></a>
-<span class="sourceLineNo">2152</span><a name="line.2152"></a>
-<span class="sourceLineNo">2153</span>  @Override<a name="line.2153"></a>
-<span class="sourceLineNo">2154</span>  public long getStorefilesSize() {<a name="line.2154"></a>
-<span class="sourceLineNo">2155</span>    // Include all StoreFiles<a name="line.2155"></a>
-<span class="sourceLineNo">2156</span>    return getStorefilesSize(this.storeEngine.getStoreFileManager().getStorefiles(), sf -&gt; true);<a name="line.2156"></a>
-<span class="sourceLineNo">2157</span>  }<a name="line.2157"></a>
-<span class="sourceLineNo">2158</span><a name="line.2158"></a>
-<span class="sourceLineNo">2159</span>  @Override<a name="line.2159"></a>
-<span class="sourceLineNo">2160</span>  public long getHFilesSize() {<a name="line.2160"></a>
-<span class="sourceLineNo">2161</span>    // Include only StoreFiles which are HFiles<a name="line.2161"></a>
-<span class="sourceLineNo">2162</span>    return getStorefilesSize(this.storeEngine.getStoreFileManager().getStorefiles(),<a name="line.2162"></a>
-<span class="sourceLineNo">2163</span>      HStoreFile::isHFile);<a name="line.2163"></a>
-<span class="sourceLineNo">2164</span>  }<a name="line.2164"></a>
-<span class="sourceLineNo">2165</span><a name="line.2165"></a>
-<span class="sourceLineNo">2166</span>  private long getTotalUmcompressedBytes(List&lt;HStoreFile&gt; files) {<a name="line.2166"></a>
-<span class="sourceLineNo">2167</span>    return files.stream().filter(f -&gt; f != null &amp;&amp; f.getReader() != null)<a name="line.2167"></a>
-<span class="sourceLineNo">2168</span>        .mapToLong(f -&gt; f.getReader().getTotalUncompressedBytes()).sum();<a name="line.2168"></a>
-<span class="sourceLineNo">2169</span>  }<a name="line.2169"></a>
-<span class="sourceLineNo">2170</span><a name="line.2170"></a>
-<span class="sourceLineNo">2171</span>  private long getStorefilesSize(Collection&lt;HStoreFile&gt; files, Predicate&lt;HStoreFile&gt; predicate) {<a name="line.2171"></a>
-<span class="sourceLineNo">2172</span>    return files.stream().filter(f -&gt; f != null &amp;&amp; f.getReader() != null).filter(predicate)<a name="line.2172"></a>
-<span class="sourceLineNo">2173</span>        .mapToLong(f -&gt; f.getReader().length()).sum();<a name="line.2173"></a>
-<span class="sourceLineNo">2174</span>  }<a name="line.2174"></a>
-<span class="sourceLineNo">2175</span><a name="line.2175"></a>
-<span class="sourceLineNo">2176</span>  private long getStoreFileFieldSize(ToLongFunction&lt;StoreFileReader&gt; f) {<a name="line.2176"></a>
-<span class="sourceLineNo">2177</span>    return this.storeEngine.getStoreFileManager().getStorefiles().stream().filter(sf -&gt; {<a name="line.2177"></a>
-<span class="sourceLineNo">2178</span>      if (sf.getReader() == null) {<a name="line.2178"></a>
-<span class="sourceLineNo">2179</span>        LOG.warn("StoreFile {} has a null Reader", sf);<a name="line.2179"></a>
-<span class="sourceLineNo">2180</span>        return false;<a name="line.2180"></a>
-<span class="sourceLineNo">2181</span>      } else {<a name="line.2181"></a>
-<span class="sourceLineNo">2182</span>        return true;<a name="line.2182"></a>
-<span class="sourceLineNo">2183</span>      }<a name="line.2183"></a>
-<span class="sourceLineNo">2184</span>    }).map(HStoreFile::getReader).mapToLong(f).sum();<a name="line.2184"></a>
-<span class="sourceLineNo">2185</span>  }<a name="line.2185"></a>
-<span class="sourceLineNo">2186</span><a name="line.2186"></a>
-<span class="sourceLineNo">2187</span>  @Override<a name="line.2187"></a>
-<span class="sourceLineNo">2188</span>  public long getStorefilesRootLevelIndexSize() {<a name="line.2188"></a>
-<span class="sourceLineNo">2189</span>    return getStoreFileFieldSize(StoreFileReader::indexSize);<a name="line.2189"></a>
-<span class="sourceLineNo">2190</span>  }<a name="line.2190"></a>
-<span class="sourceLineNo">2191</span><a name="line.2191"></a>
-<span class="sourceLineNo">2192</span>  @Override<a name="line.2192"></a>
-<span class="sourceLineNo">2193</span>  public long getTotalStaticIndexSize() {<a name="line.2193"></a>
-<span class="sourceLineNo">2194</span>    return getStoreFileFieldSize(StoreFileReader::getUncompressedDataIndexSize);<a name="line.2194"></a>
-<span class="sourceLineNo">2195</span>  }<a name="line.2195"></a>
-<span class="sourceLineNo">2196</span><a name="line.2196"></a>
-<span class="sourceLineNo">2197</span>  @Override<a name="line.2197"></a>
-<span class="sourceLineNo">2198</span>  public long getTotalStaticBloomSize() {<a name="line.2198"></a>
-<span class="sourceLineNo">2199</span>    return getStoreFileFieldSize(StoreFileReader::getTotalBloomSize);<a name="line.2199"></a>
-<span class="sourceLineNo">2200</span>  }<a name="line.2200"></a>
-<span class="sourceLineNo">2201</span><a name="line.2201"></a>
-<span class="sourceLineNo">2202</span>  @Override<a name="line.2202"></a>
-<span class="sourceLineNo">2203</span>  public MemStoreSize getMemStoreSize() {<a name="line.2203"></a>
-<span class="sourceLineNo">2204</span>    return this.memstore.size();<a name="line.2204"></a>
-<span class="sourceLineNo">2205</span>  }<a name="line.2205"></a>
-<span class="sourceLineNo">2206</span><a name="line.2206"></a>
-<span class="sourceLineNo">2207</span>  @Override<a name="line.2207"></a>
-<span class="sourceLineNo">2208</span>  public int getCompactPriority() {<a name="line.2208"></a>
-<span class="sourceLineNo">2209</span>    int priority = this.storeEngine.getStoreFileManager().getStoreCompactionPriority();<a name="line.2209"></a>
-<span class="sourceLineNo">2210</span>    if (priority == PRIORITY_USER) {<a name="line.2210"></a>
-<span class="sourceLineNo">2211</span>      LOG.warn("Compaction priority is USER despite there being no user compaction");<a name="line.2211"></a>
-<span class="sourceLineNo">2212</span>    }<a name="line.2212"></a>
-<span class="sourceLineNo">2213</span>    return priority;<a name="line.2213"></a>
-<span class="sourceLineNo">2214</span>  }<a name="line.2214"></a>
-<span class="sourceLineNo">2215</span><a name="line.2215"></a>
-<span class="sourceLineNo">2216</span>  public boolean throttleCompaction(long compactionSize) {<a name="line.2216"></a>
-<span class="sourceLineNo">2217</span>    return storeEngine.getCompactionPolicy().throttleCompaction(compactionSize);<a name="line.2217"></a>
-<span class="sourceLineNo">2218</span>  }<a name="line.2218"></a>
-<span class="sourceLineNo">2219</span><a name="line.2219"></a>
-<span class="sourceLineNo">2220</span>  public HRegion getHRegion() {<a name="line.2220"></a>
-<span class="sourceLineNo">2221</span>    return this.region;<a name="line.2221"></a>
-<span class="sourceLineNo">2222</span>  }<a name="line.2222"></a>
-<span class="sourceLineNo">2223</span><a name="line.2223"></a>
-<span class="sourceLineNo">2224</span>  public RegionCoprocessorHost getCoprocessorHost() {<a name="line.2224"></a>
-<span class="sourceLineNo">2225</span>    return this.region.getCoprocessorHost();<a name="line.2225"></a>
-<span class="sourceLineNo">2226</span>  }<a name="line.2226"></a>
-<span class="sourceLineNo">2227</span><a name="line.2227"></a>
-<span class="sourceLineNo">2228</span>  @Override<a name="line.2228"></a>
-<span class="sourceLineNo">2229</span>  public RegionInfo getRegionInfo() {<a name="line.2229"></a>
-<span class="sourceLineNo">2230</span>    return this.fs.getRegionInfo();<a name="line.2230"></a>
-<span class="sourceLineNo">2231</span>  }<a name="line.2231"></a>
-<span class="sourceLineNo">2232</span><a name="line.2232"></a>
-<span class="sourceLineNo">2233</span>  @Override<a name="line.2233"></a>
-<span class="sourceLineNo">2234</span>  public boolean areWritesEnabled() {<a name="line.2234"></a>
-<span class="sourceLineNo">2235</span>    return this.region.areWritesEnabled();<a name="line.2235"></a>
-<span class="sourceLineNo">2236</span>  }<a name="line.2236"></a>
-<span class="sourceLineNo">2237</span><a name="line.2237"></a>
-<span class="sourceLineNo">2238</span>  @Override<a name="line.2238"></a>
-<span class="sourceLineNo">2239</span>  public long getSmallestReadPoint() {<a name="line.2239"></a>
-<span class="sourceLineNo">2240</span>    return this.region.getSmallestReadPoint();<a name="line.2240"></a>
-<span class="sourceLineNo">2241</span>  }<a name="line.2241"></a>
-<span class="sourceLineNo">2242</span><a name="line.2242"></a>
-<span class="sourceLineNo">2243</span>  /**<a name="line.2243"></a>
-<span class="sourceLineNo">2244</span>   * Adds or replaces the specified KeyValues.<a name="line.2244"></a>
-<span class="sourceLineNo">2245</span>   * &lt;p&gt;<a name="line.2245"></a>
-<span class="sourceLineNo">2246</span>   * For each KeyValue specified, if a cell with the same row, family, and qualifier exists in<a name="line.2246"></a>
-<span class="sourceLineNo">2247</span>   * MemStore, it will be replaced. Otherwise, it will just be inserted to MemStore.<a name="line.2247"></a>
-<span class="sourceLineNo">2248</span>   * &lt;p&gt;<a name="line.2248"></a>
-<span class="sourceLineNo">2249</span>   * This operation is atomic on each KeyValue (row/family/qualifier) but not necessarily atomic<a name="line.2249"></a>
-<span class="sourceLineNo">2250</span>   * across all of them.<a name="line.2250"></a>
-<span class="sourceLineNo">2251</span>   * @param readpoint readpoint below which we can safely remove duplicate KVs<a name="line.2251"></a>
-<span class="sourceLineNo">2252</span>   * @throws IOException<a name="line.2252"></a>
-<span class="sourceLineNo">2253</span>   */<a name="line.2253"></a>
-<span class="sourceLineNo">2254</span>  public void upsert(Iterable&lt;Cell&gt; cells, long readpoint, MemStoreSizing memstoreSizing)<a name="line.2254"></a>
-<span class="sourceLineNo">2255</span>      throws IOException {<a name="line.2255"></a>
-<span class="sourceLineNo">2256</span>    this.lock.readLock().lock();<a name="line.2256"></a>
-<span class="sourceLineNo">2257</span>    try {<a name="line.2257"></a>
-<span class="sourceLineNo">2258</span>      this.memstore.upsert(cells, readpoint, memstoreSizing);<a name="line.2258"></a>
-<span class="sourceLineNo">2259</span>    } finally {<a name="line.2259"></a>
-<span class="sourceLineNo">2260</span>      this.lock.readLock().unlock();<a name="line.2260"></a>
-<span class="sourceLineNo">2261</span>    }<a name="line.2261"></a>
-<span class="sourceLineNo">2262</span>  }<a name="line.2262"></a>
-<span class="sourceLineNo">2263</span><a name="line.2263"></a>
-<span class="sourceLineNo">2264</span>  public StoreFlushContext createFlushContext(long cacheFlushId, FlushLifeCycleTracker tracker) {<a name="line.2264"></a>
-<span class="sourceLineNo">2265</span>    return new StoreFlusherImpl(cacheFlushId, tracker);<a name="line.2265"></a>
-<span class="sourceLineNo">2266</span>  }<a name="line.2266"></a>
-<span class="sourceLineNo">2267</span><a name="line.2267"></a>
-<span class="sourceLineNo">2268</span>  private final class StoreFlusherImpl implements StoreFlushContext {<a name="line.2268"></a>
-<span class="sourceLineNo">2269</span><a name="line.2269"></a>
-<span class="sourceLineNo">2270</span>    private final FlushLifeCycleTracker tracker;<a name="line.2270"></a>
-<span class="sourceLineNo">2271</span>    private final long cacheFlushSeqNum;<a name="line.2271"></a>
-<span class="sourceLineNo">2272</span>    private MemStoreSnapshot snapshot;<a name="line.2272"></a>
-<span class="sourceLineNo">2273</span>    private List&lt;Path&gt; tempFiles;<a name="line.2273"></a>
-<span class="sourceLineNo">2274</span>    private List&lt;Path&gt; committedFiles;<a name="line.2274"></a>
-<span class="sourceLineNo">2275</span>    private long cacheFlushCount;<a name="line.2275"></a>
-<span class="sourceLineNo">2276</span>    private long cacheFlushSize;<a name="line.2276"></a>
-<span class="sourceLineNo">2277</span>    private long outputFileSize;<a name="line.2277"></a>
-<span class="sourceLineNo">2278</span><a name="line.2278"></a>
-<span class="sourceLineNo">2279</span>    private StoreFlusherImpl(long cacheFlushSeqNum, FlushLifeCycleTracker tracker) {<a name="line.2279"></a>
-<span class="sourceLineNo">2280</span>      this.cacheFlushSeqNum = cacheFlushSeqNum;<a name="line.2280"></a>
-<span class="sourceLineNo">2281</span>      this.tracker = tracker;<a name="line.2281"></a>
-<span class="sourceLineNo">2282</span>    }<a name="line.2282"></a>
-<span class="sourceLineNo">2283</span><a name="line.2283"></a>
-<span class="sourceLineNo">2284</span>    /**<a name="line.2284"></a>
-<span class="sourceLineNo">2285</span>     * This is not thread safe. The caller should have a lock on the region or the store.<a name="line.2285"></a>
-<span class="sourceLineNo">2286</span>     * If necessary, the lock can be added with the patch provided in HBASE-10087<a name="line.2286"></a>
-<span class="sourceLineNo">2287</span>     */<a name="line.2287"></a>
-<span class="sourceLineNo">2288</span>    @Override<a name="line.2288"></a>
-<span class="sourceLineNo">2289</span>    public MemStoreSize prepare() {<a name="line.2289"></a>
-<span class="sourceLineNo">2290</span>      // passing the current sequence number of the wal - to allow bookkeeping in the memstore<a name="line.2290"></a>
-<span class="sourceLineNo">2291</span>      this.snapshot = memstore.snapshot();<a name="line.2291"></a>
-<span class="sourceLineNo">2292</span>      this.cacheFlushCount = snapshot.getCellsCount();<a name="line.2292"></a>
-<span class="sourceLineNo">2293</span>      this.cacheFlushSize = snapshot.getDataSize();<a name="line.2293"></a>
-<span class="sourceLineNo">2294</span>      committedFiles = new ArrayList&lt;&gt;(1);<a name="line.2294"></a>
-<span class="sourceLineNo">2295</span>      return snapshot.getMemStoreSize();<a name="line.2295"></a>
-<span class="sourceLineNo">2296</span>    }<a name="line.2296"></a>
-<span class="sourceLineNo">2297</span><a name="line.2297"></a>
-<span class="sourceLineNo">2298</span>    @Override<a name="line.2298"></a>
-<span class="sourceLineNo">2299</span>    public void flushCache(MonitoredTask status) throws IOException {<a name="line.2299"></a>
-<span class="sourceLineNo">2300</span>      RegionServerServices rsService = region.getRegionServerServices();<a name="line.2300"></a>
-<span class="sourceLineNo">2301</span>      ThroughputController throughputController =<a name="line.2301"></a>
-<span class="sourceLineNo">2302</span>          rsService == null ? null : rsService.getFlushThroughputController();<a name="line.2302"></a>
-<span class="sourceLineNo">2303</span>      tempFiles =<a name="line.2303"></a>
-<span class="sourceLineNo">2304</span>          HStore.this.flushCache(cacheFlushSeqNum, snapshot, status, throughputController, tracker);<a name="line.2304"></a>
-<span class="sourceLineNo">2305</span>    }<a name="line.2305"></a>
-<span class="sourceLineNo">2306</span><a name="line.2306"></a>
-<span class="sourceLineNo">2307</span>    @Override<a name="line.2307"></a>
-<span class="sourceLineNo">2308</span>    public boolean commit(MonitoredTask status) throws IOException {<a name="line.2308"></a>
-<span class="sourceLineNo">2309</span>      if (CollectionUtils.isEmpty(this.tempFiles)) {<a name="line.2309"></a>
-<span class="sourceLineNo">2310</span>        return false;<a name="line.2310"></a>
-<span class="sourceLineNo">2311</span>      }<a name="line.2311"></a>
-<span class="sourceLineNo">2312</span>      List&lt;HStoreFile&gt; storeFiles = new ArrayList&lt;&gt;(this.tempFiles.size());<a name="line.2312"></a>
-<span class="sourceLineNo">2313</span>      for (Path storeFilePath : tempFiles) {<a name="line.2313"></a>
-<span class="sourceLineNo">2314</span>        try {<a name="line.2314"></a>
-<span class="sourceLineNo">2315</span>          HStoreFile sf = HStore.this.commitFile(storeFilePath, cacheFlushSeqNum, status);<a name="line.2315"></a>
-<span class="sourceLineNo">2316</span>          outputFileSize += sf.getReader().length();<a name="line.2316"></a>
-<span class="sourceLineNo">2317</span>          storeFiles.add(sf);<a name="line.2317"></a>
-<span class="sourceLineNo">2318</span>        } catch (IOException ex) {<a name="line.2318"></a>
-<span class="sourceLineNo">2319</span>          LOG.error("Failed to commit store file {}", storeFilePath, ex);<a name="line.2319"></a>
-<span class="sourceLineNo">2320</span>          // Try to delete the files we have committed before.<a name="line.2320"></a>
-<span class="sourceLineNo">2321</span>          for (HStoreFile sf : storeFiles) {<a name="line.2321"></a>
-<span class="sourceLineNo">2322</span>            Path pathToDelete = sf.getPath();<a name="line.2322"></a>
-<span class="sourceLineNo">2323</span>            try {<a name="line.2323"></a>
-<span class="sourceLineNo">2324</span>              sf.deleteStoreFile();<a name="line.2324"></a>
-<span class="sourceLineNo">2325</span>            } catch (IOException deleteEx) {<a name="line.2325"></a>
-<span class="sourceLineNo">2326</span>              LOG.error(HBaseMarkers.FATAL, "Failed to delete store file we committed, "<a name="line.2326"></a>
-<span class="sourceLineNo">2327</span>                  + "halting {}", pathToDelete, ex);<a name="line.2327"></a>
-<span class="sourceLineNo">2328</span>              Runtime.getRuntime().halt(1);<a name="line.2328"></a>
-<span class="sourceLineNo">2329</span>            }<a name="line.2329"></a>
-<span class="sourceLineNo">2330</span>          }<a name="line.2330"></a>
-<span class="sourceLineNo">2331</span>          throw new IOException("Failed to commit the flush", ex);<a name="line.2331"></a>
-<span class="sourceLineNo">2332</span>        }<a name="line.2332"></a>
-<span class="sourceLineNo">2333</span>      }<a name="line.2333"></a>
-<span class="sourceLineNo">2334</span><a name="line.2334"></a>
-<span class="sourceLineNo">2335</span>      for (HStoreFile sf : storeFiles) {<a name="line.2335"></a>
-<span class="sourceLineNo">2336</span>        if (HStore.this.getCoprocessorHost() != null) {<a name="line.2336"></a>
-<span class="sourceLineNo">2337</span>          HStore.this.getCoprocessorHost().postFlush(HStore.this, sf, tracker);<a name="line.2337"></a>
-<span class="sourceLineNo">2338</span>        }<a name="line.2338"></a>
-<span class="sourceLineNo">2339</span>        committedFiles.add(sf.getPath());<a name="line.2339"></a>
-<span class="sourceLineNo">2340</span>      }<a name="line.2340"></a>
-<span class="sourceLineNo">2341</span><a name="line.2341"></a>
-<span class="sourceLineNo">2342</span>      HStore.this.flushedCellsCount.addAndGet(cacheFlushCount);<a name="line.2342"></a>
-<span class="sourceLineNo">2343</span>      HStore.this.flushedCellsSize.addAndGet(cacheFlushSize);<a name="line.2343"></a>
-<span class="sourceLineNo">2344</span>      HStore.this.flushedOutputFileSize.addAndGet(outputFileSize);<a name="line.2344"></a>
-<span class="sourceLineNo">2345</span><a name="line.2345"></a>
-<span class="sourceLineNo">2346</span>      // Add new file to store files.  Clear snapshot too while we have the Store write lock.<a name="line.2346"></a>
-<span class="sourceLineNo">2347</span>      return HStore.this.updateStorefiles(storeFiles, snapshot.getId());<a name="line.2347"></a>
-<span class="sourceLineNo">2348</span>    }<a name="line.2348"></a>
-<span class="sourceLineNo">2349</span><a name="line.2349"></a>
-<span class="sourceLineNo">2350</span>    @Override<a name="line.2350"></a>
-<span class="sourceLineNo">2351</span>    public long getOutputFileSize() {<a name="line.2351"></a>
-<span class="sourceLineNo">2352</span>      return outputFileSize;<a name="line.2352"></a>
-<span class="sourceLineNo">2353</span>    }<a name="line.2353"></a>
-<span class="sourceLineNo">2354</span><a name="line.2354"></a>
-<span class="sourceLineNo">2355</span>    @Override<a name="line.2355"></a>
-<span class="sourceLineNo">2356</span>    public List&lt;Path&gt; getCommittedFiles() {<a name="line.2356"></a>
-<span class="sourceLineNo">2357</span>      return committedFiles;<a name="line.2357"></a>
-<span class="sourceLineNo">2358</span>    }<a name="line.2358"></a>
-<span class="sourceLineNo">2359</span><a name="line.2359"></a>
-<span class="sourceLineNo">2360</span>    /**<a name="line.2360"></a>
-<span class="sourceLineNo">2361</span>     * Similar to commit, but called in secondary region replicas for replaying the<a name="line.2361"></a>
-<span class="sourceLineNo">2362</span>     * flush cache from primary region. Adds the new files to the store, and drops the<a name="line.2362"></a>
-<span class="sourceLineNo">2363</span>     * snapshot depending on dropMemstoreSnapshot argument.<a name="line.2363"></a>
-<span class="sourceLineNo">2364</span>     * @param fileNames names of the flushed files<a name="line.2364"></a>
-<span class="sourceLineNo">2365</span>     * @param dropMemstoreSnapshot whether to drop the prepared memstore snapshot<a name="line.2365"></a>
-<span class="sourceLineNo">2366</span>     * @throws IOException<a name="line.2366"></a>
-<span class="sourceLineNo">2367</span>     */<a name="line.2367"></a>
-<span class="sourceLineNo">2368</span>    @Override<a name="line.2368"></a>
-<span class="sourceLineNo">2369</span>    public void replayFlush(List&lt;String&gt; fileNames, boolean dropMemstoreSnapshot)<a name="line.2369"></a>
-<span class="sourceLineNo">2370</span>        throws IOException {<a name="line.2370"></a>
-<span class="sourceLineNo">2371</span>      List&lt;HStoreFile&gt; storeFiles = new ArrayList&lt;&gt;(fileNames.size());<a name="line.2371"></a>
-<span class="sourceLineNo">2372</span>      for (String file : fileNames) {<a name="line.2372"></a>
-<span class="sourceLineNo">2373</span>        // open the file as a store file (hfile link, etc)<a name="line.2373"></a>
-<span class="sourceLineNo">2374</span>        StoreFileInfo storeFileInfo = fs.getStoreFileInfo(getColumnFamilyName(), file);<a name="line.2374"></a>
-<span class="sourceLineNo">2375</span>        HStoreFile storeFile = createStoreFileAndReader(storeFileInfo);<a name="line.2375"></a>
-<span class="sourceLineNo">2376</span>        storeFiles.add(storeFile);<a name="line.2376"></a>
-<span class="sourceLineNo">2377</span>        HStore.this.storeSize.addAndGet(storeFile.getReader().length());<a name="line.2377"></a>
-<span class="sourceLineNo">2378</span>        HStore.this.totalUncompressedBytes<a name="line.2378"></a>
-<span class="sourceLineNo">2379</span>            .addAndGet(storeFile.getReader().getTotalUncompressedBytes());<a name="line.2379"></a>
-<span class="sourceLineNo">2380</span>        if (LOG.isInfoEnabled()) {<a name="line.2380"></a>
-<span class="sourceLineNo">2381</span>          LOG.info("Region: " + HStore.this.getRegionInfo().getEncodedName() +<a name="line.2381"></a>
-<span class="sourceLineNo">2382</span>            " added " + storeFile + ", entries=" + storeFile.getReader().getEntries() +<a name="line.2382"></a>
-<span class="sourceLineNo">2383</span>              ", sequenceid=" + +storeFile.getReader().getSequenceID() + ", filesize="<a name="line.2383"></a>
-<span class="sourceLineNo">2384</span>              + TraditionalBinaryPrefix.long2String(storeFile.getReader().length(), "", 1));<a name="line.2384"></a>
-<span class="sourceLineNo">2385</span>        }<a name="line.2385"></a>
-<span class="sourceLineNo">2386</span>      }<a name="line.2386"></a>
-<span class="sourceLineNo">2387</span><a name="line.2387"></a>
-<span class="sourceLineNo">2388</span>      long snapshotId = -1; // -1 means do not drop<a name="line.2388"></a>
-<span class="sourceLineNo">2389</span>      if (dropMemstoreSnapshot &amp;&amp; snapshot != null) {<a name="line.2389"></a>
-<span class="sourceLineNo">2390</span>        snapshotId = snapshot.getId();<a name="line.2390"></a>
-<span class="sourceLineNo">2391</span>        snapshot.close();<a name="line.2391"></a>
-<span class="sourceLineNo">2392</span>      }<a name="line.2392"></a>
-<span class="sourceLineNo">2393</span>      HStore.this.updateStorefiles(storeFiles, snapshotId);<a name="line.2393"></a>
-<span class="sourceLineNo">2394</span>    }<a name="line.2394"></a>
-<span class="sourceLineNo">2395</span><a name="line.2395"></a>
-<span class="sourceLineNo">2396</span>    /**<a name="line.2396"></a>
-<span class="sourceLineNo">2397</span>     * Abort the snapshot preparation. Drops the snapshot if any.<a name="line.2397"></a>
-<span class="sourceLineNo">2398</span>     * @throws IOException<a name="line.2398"></a>
-<span class="sourceLineNo">2399</span>     */<a name="line.2399"></a>
-<span class="sourceLineNo">2400</span>    @Override<a name="line.2400"></a>
-<span class="sourceLineNo">2401</span>    public void abort() throws IOException {<a name="line.2401"></a>
-<span class="sourceLineNo">2402</span>      if (snapshot != null) {<a name="line.2402"></a>
-<span class="sourceLineNo">2403</span>        //We need to close the snapshot when aborting, otherwise, the segment scanner<a name="line.2403"></a>
-<span class="sourceLineNo">2404</span>        //won't be closed. If we are using MSLAB, the chunk referenced by those scanners<a name="line.2404"></a>
-<span class="sourceLineNo">2405</span>        //can't be released, thus memory leak<a name="line.2405"></a>
-<span class="sourceLineNo">2406</span>        snapshot.close();<a name="line.2406"></a>
-<span class="sourceLineNo">2407</span>        HStore.this.updateStorefiles(Collections.emptyList(), snapshot.getId());<a name="line.2407"></a>
-<span class="sourceLineNo">2408</span>      }<a name="line.2408"></a>
-<span class="sourceLineNo">2409</span>    }<a name="line.2409"></a>
-<span class="sourceLineNo">2410</span>  }<a name="line.2410"></a>
-<span class="sourceLineNo">2411</span><a name="line.2411"></a>
-<span class="sourceLineNo">2412</span>  @Override<a name="line.2412"></a>
-<span class="sourceLineNo">2413</span>  public boolean needsCompaction() {<a name="line.2413"></a>
-<span class="sourceLineNo">2414</span>    List&lt;HStoreFile&gt; filesCompactingClone = null;<a name="line.2414"></a>
-<span class="sourceLineNo">2415</span>    synchronized (filesCompacting) {<a name="line.2415"></a>
-<span class="sourceLineNo">2416</span>      filesCompactingClone = Lists.newArrayList(filesCompacting);<a name="line.2416"></a>
-<span class="sourceLineNo">2417</span>    }<a name="line.2417"></a>
-<span class="sourceLineNo">2418</span>    return this.storeEngine.needsCompaction(filesCompactingClone);<a name="line.2418"></a>
-<span class="sourceLineNo">2419</span>  }<a name="line.2419"></a>
-<span class="sourceLineNo">2420</span><a name="line.2420"></a>
-<span class="sourceLineNo">2421</span>  /**<a name="line.2421"></a>
-<span class="sourceLineNo">2422</span>   * Used for tests.<a name="line.2422"></a>
-<span class="sourceLineNo">2423</span>   * @return cache configuration for this Store.<a name="line.2423"></a>
-<span class="sourceLineNo">2424</span>   */<a name="line.2424"></a>
-<span class="sourceLineNo">2425</span>  @VisibleForTesting<a name="line.2425"></a>
-<span class="sourceLineNo">2426</span>  public CacheConfig getCacheConfig() {<a name="line.2426"></a>
-<span class="sourceLineNo">2427</span>    return this.cacheConf;<a name="line.2427"></a>
-<span class="sourceLineNo">2428</span>  }<a name="line.2428"></a>
-<span class="sourceLineNo">2429</span><a name="line.2429"></a>
-<span class="sourceLineNo">2430</span>  public static final long FIXED_OVERHEAD =<a name="line.2430"></a>
-<span class="sourceLineNo">2431</span>      ClassSize.align(ClassSize.OBJECT + (27 * ClassSize.REFERENCE) + (2 * Bytes.SIZEOF_LONG)<a name="line.2431"></a>
-<span class="sourceLineNo">2432</span>              + (6 * Bytes.SIZEOF_INT) + (2 * Bytes.SIZEOF_BOOLEAN));<a name="line.2432"></a>
-<span class="sourceLineNo">2433</span><a name="line.2433"></a>
-<span class="sourceLineNo">2434</span>  public static final long DEEP_OVERHEAD = ClassSize.align(FIXED_OVERHEAD<a name="line.2434"></a>
-<span class="sourceLineNo">2435</span>      + ClassSize.OBJECT + ClassSize.REENTRANT_LOCK<a name="line.2435"></a>
-<span class="sourceLineNo">2436</span>      + ClassSize.CONCURRENT_SKIPLISTMAP<a name="line.2436"></a>
-<span class="sourceLineNo">2437</span>      + ClassSize.CONCURRENT_SKIPLISTMAP_ENTRY + ClassSize.OBJECT<a name="line.2437"></a>
-<span class="sourceLineNo">2438</span>      + ScanInfo.FIXED_OVERHEAD);<a name="line.2438"></a>
-<span class="sourceLineNo">2439</span><a name="line.2439"></a>
-<span class="sourceLineNo">2440</span>  @Override<a name="line.2440"></a>
-<span class="sourceLineNo">2441</span>  public long heapSize() {<a name="line.2441"></a>
-<span class="sourceLineNo">2442</span>    MemStoreSize memstoreSize = this.memstore.size();<a name="line.2442"></a>
-<span class="sourceLineNo">2443</span>    return DEEP_OVERHEAD + memstoreSize.getHeapSize();<a name="line.2443"></a>
-<span class="sourceLineNo">2444</span>  }<a name="line.2444"></a>
-<span class="sourceLineNo">2445</span><a name="line.2445"></a>
-<span class="sourceLineNo">2446</span>  @Override<a name="line.2446"></a>
-<span class="sourceLineNo">2447</span>  public CellComparator getComparator() {<a name="line.2447"></a>
-<span class="sourceLineNo">2448</span>    return comparator;<a name="line.2448"></a>
-<span class="sourceLineNo">2449</span>  }<a name="line.2449"></a>
-<span class="sourceLineNo">2450</span><a name="line.2450"></a>
-<span class="sourceLineNo">2451</span>  public ScanInfo getScanInfo() {<a name="line.2451"></a>
-<span class="sourceLineNo">2452</span>    return scanInfo;<a name="line.2452"></a>
-<span class="sourceLineNo">2453</span>  }<a name="line.2453"></a>
-<span class="sourceLineNo">2454</span><a name="line.2454"></a>
-<span class="sourceLineNo">2455</span>  /**<a name="line.2455"></a>
-<span class="sourceLineNo">2456</span>   * Set scan info, used by test<a name="line.2456"></a>
-<span class="sourceLineNo">2457</span>   * @param scanInfo new scan info to use for test<a name="line.2457"></a>
-<span class="sourceLineNo">2458</span>   */<a name="line.2458"></a>
-<span class="sourceLineNo">2459</span>  void setScanInfo(ScanInfo scanInfo) {<a name="line.2459"></a>
-<span class="sourceLineNo">2460</span>    this.scanInfo = scanInfo;<a name="line.2460"></a>
-<span class="sourceLineNo">2461</span>  }<a name="line.2461"></a>
-<span class="sourceLineNo">2462</span><a name="line.2462"></a>
-<span class="sourceLineNo">2463</span>  @Override<a name="line.2463"></a>
-<span class="sourceLineNo">2464</span>  public boolean hasTooManyStoreFiles() {<a name="line.2464"></a>
-<span class="sourceLineNo">2465</span>    return getStorefilesCount() &gt; this.blockingFileCount;<a name="line.2465"></a>
-<span class="sourceLineNo">2466</span>  }<a name="line.2466"></a>
-<span class="sourceLineNo">2467</span><a name="line.2467"></a>
-<span class="sourceLineNo">2468</span>  @Override<a name="line.2468"></a>
-<span class="sourceLineNo">2469</span>  public long getFlushedCellsCount() {<a name="line.2469"></a>
-<span class="sourceLineNo">2470</span>    return flushedCellsCount.get();<a name="line.2470"></a>
-<span class="sourceLineNo">2471</span>  }<a name="line.2471"></a>
-<span class="sourceLineNo">2472</span><a name="line.2472"></a>
-<span class="sourceLineNo">2473</span>  @Override<a name="line.2473"></a>
-<span class="sourceLineNo">2474</span>  public long getFlushedCellsSize() {<a name="line.2474"></a>
-<span class="sourceLineNo">2475</span>    return flushedCellsSize.get();<a name="line.2475"></a>
-<span class="sourceLineNo">2476</span>  }<a name="line.2476"></a>
-<span class="sourceLineNo">2477</span><a name="line.2477"></a>
-<span class="sourceLineNo">2478</span>  @Override<a name="line.2478"></a>
-<span class="sourceLineNo">2479</span>  public long getFlushedOutputFileSize() {<a name="line.2479"></a>
-<span class="sourceLineNo">2480</span>    return flushedOutputFileSize.get();<a name="line.2480"></a>
-<span class="sourceLineNo">2481</span>  }<a name="line.2481"></a>
-<span class="sourceLineNo">2482</span><a name="line.2482"></a>
-<span class="sourceLineNo">2483</span>  @Override<a name="line.2483"></a>
-<span class="sourceLineNo">2484</span>  public long getCompactedCellsCount() {<a name="line.2484"></a>
-<span class="sourceLineNo">2485</span>    return compactedCellsCount.get();<a name="line.2485"></a>
-<span class="sourceLineNo">2486</span>  }<a name="line.2486"></a>
-<span class="sourceLineNo">2487</span><a name="line.2487"></a>
-<span class="sourceLineNo">2488</span>  @Override<a name="line.2488"></a>
-<span class="sourceLineNo">2489</span>  public long getCompactedCellsSize() {<a name="line.2489"></a>
-<span class="sourceLineNo">2490</span>    return compactedCellsSize.get();<a name="line.2490"></a>
-<span class="sourceLineNo">2491</span>  }<a name="line.2491"></a>
-<span class="sourceLineNo">2492</span><a name="line.2492"></a>
-<span class="sourceLineNo">2493</span>  @Override<a name="line.2493"></a>
-<span class="sourceLineNo">2494</span>  public long getMajorCompactedCellsCount() {<a name="line.2494"></a>
-<span class="sourceLineNo">2495</span>    return majorCompactedCellsCount.get();<a name="line.2495"></a>
-<span class="sourceLineNo">2496</span>  }<a name="line.2496"></a>
-<span class="sourceLineNo">2497</span><a name="line.2497"></a>
-<span class="sourceLineNo">2498</span>  @Override<a name="line.2498"></a>
-<span class="sourceLineNo">2499</span>  public long getMajorCompactedCellsSize() {<a name="line.2499"></a>
-<span class="sourceLineNo">2500</span>    return majorCompactedCellsSize.get();<a name="line.2500"></a>
-<span class="sourceLineNo">2501</span>  }<a name="line.2501"></a>
-<span class="sourceLineNo">2502</span><a name="line.2502"></a>
-<span class="sourceLineNo">2503</span>  /**<a name="line.2503"></a>
-<span class="sourceLineNo">2504</span>   * Returns the StoreEngine that is backing this concrete implementation of Store.<a name="line.2504"></a>
-<span class="sourceLineNo">2505</span>   * @return Returns the {@link StoreEngine} object used internally inside this HStore object.<a name="line.2505"></a>
-<span class="sourceLineNo">2506</span>   */<a name="line.2506"></a>
-<span class="sourceLineNo">2507</span>  @VisibleForTesting<a name="line.2507"></a>
-<span class="sourceLineNo">2508</span>  public StoreEngine&lt;?, ?, ?, ?&gt; getStoreEngine() {<a name="line.2508"></a>
-<span class="sourceLineNo">2509</span>    return this.storeEngine;<a name="line.2509"></a>
-<span class="sourceLineNo">2510</span>  }<a name="line.2510"></a>
-<span class="sourceLineNo">2511</span><a name="line.2511"></a>
-<span class="sourceLineNo">2512</span>  protected OffPeakHours getOffPeakHours() {<a name="line.2512"></a>
-<span class="sourceLineNo">2513</span>    return this.offPeakHours;<a name="line.2513"></a>
-<span class="sourceLineNo">2514</span>  }<a name="line.2514"></a>
-<span class="sourceLineNo">2515</span><a name="line.2515"></a>
-<span class="sourceLineNo">2516</span>  /**<a name="line.2516"></a>
-<span class="sourceLineNo">2517</span>   * {@inheritDoc}<a name="line.2517"></a>
-<span class="sourceLineNo">2518</span>   */<a name="line.2518"></a>
-<span class="sourceLineNo">2519</span>  @Override<a name="line.2519"></a>
-<span class="sourceLineNo">2520</span>  public void onConfigurationChange(Configuration conf) {<a name="line.2520"></a>
-<span class="sourceLineNo">2521</span>    this.conf = new CompoundConfiguration()<a name="line.2521"></a>
-<span class="sourceLineNo">2522</span>            .add(conf)<a name="line.2522"></a>
-<span class="sourceLineNo">2523</span>            .addBytesMap(family.getValues());<a name="line.2523"></a>
-<span class="sourceLineNo">2524</span>    this.storeEngine.compactionPolicy.setConf(conf);<a name="line.2524"></a>
-<span class="sourceLineNo">2525</span>    this.offPeakHours = OffPeakHours.getInstance(conf);<a name="line.2525"></a>
-<span class="sourceLineNo">2526</span>  }<a name="line.2526"></a>
-<span class="sourceLineNo">2527</span><a name="line.2527"></a>
-<span class="sourceLineNo">2528</span>  /**<a name="line.2528"></a>
-<span class="sourceLineNo">2529</span>   * {@inheritDoc}<a name="line.2529"></a>
-<span class="sourceLineNo">2530</span>   */<a name="line.2530"></a>
-<span class="sourceLineNo">2531</span>  @Override<a name="line.2531"></a>
-<span class="sourceLineNo">2532</span>  public void registerChildren(ConfigurationManager manager) {<a name="line.2532"></a>
-<span class="sourceLineNo">2533</span>    // No children to register<a name="line.2533"></a>
-<span class="sourceLineNo">2534</span>  }<a name="line.2534"></a>
-<span class="sourceLineNo">2535</span><a name="line.2535"></a>
-<span class="sourceLineNo">2536</span>  /**<a name="line.2536"></a>
-<span class="sourceLineNo">2537</span>   * {@inheritDoc}<a name="line.2537"></a>
-<span class="sourceLineNo">2538</span>   */<a name="line.2538"></a>
-<span class="sourceLineNo">2539</span>  @Override<a name="line.2539"></a>
-<span class="sourceLineNo">2540</span>  public void deregisterChildren(ConfigurationManager manager) {<a name="line.2540"></a>
-<span class="sourceLineNo">2541</span>    // No children to deregister<a name="line.2541"></a>
-<span class="sourceLineNo">2542</span>  }<a name="line.2542"></a>
-<span class="sourceLineNo">2543</span><a name="line.2543"></a>
-<span class="sourceLineNo">2544</span>  @Override<a name="line.2544"></a>
-<span class="sourceLineNo">2545</span>  public double getCompactionPressure() {<a name="line.2545"></a>
-<span class="sourceLineNo">2546</span>    return storeEngine.getStoreFileManager().getCompactionPressure();<a name="line.2546"></a>
-<span class="sourceLineNo">2547</span>  }<a name="line.2547"></a>
-<span class="sourceLineNo">2548</span><a name="line.2548"></a>
-<span class="sourceLineNo">2549</span>  @Override<a name="line.2549"></a>
-<span class="sourceLineNo">2550</span>  public boolean isPrimaryReplicaStore() {<a name="line.2550"></a>
-<span class="sourceLineNo">2551</span>    return getRegionInfo().getReplicaId() == RegionInfo.DEFAULT_REPLICA_ID;<a name="line.2551"></a>
-<span class="sourceLineNo">2552</span>  }<a name="line.2552"></a>
-<span class="sourceLineNo">2553</span><a name="line.2553"></a>
-<span class="sourceLineNo">2554</span>  /**<a name="line.2554"></a>
-<span class="sourceLineNo">2555</span>   * Sets the store up for a region level snapshot operation.<a name="line.2555"></a>
-<span class="sourceLineNo">2556</span>   * @see #postSnapshotOperation()<a name="line.2556"></a>
-<span class="sourceLineNo">2557</span>   */<a name="line.2557"></a>
-<span class="sourceLineNo">2558</span>  public void preSnapshotOperation() {<a name="line.2558"></a>
-<span class="sourceLineNo">2559</span>    archiveLock.lock();<a name="line.2559"></a>
-<span class="sourceLineNo">2560</span>  }<a name="line.2560"></a>
-<span class="sourceLineNo">2561</span><a name="line.2561"></a>
-<span class="sourceLineNo">2562</span>  /**<a name="line.2562"></a>
-<span class="sourceLineNo">2563</span>   * Perform tasks needed after the completion of snapshot operation.<a name="line.2563"></a>
-<span class="sourceLineNo">2564</span>   * @see #preSnapshotOperation()<a name="line.2564"></a>
-<span class="sourceLineNo">2565</span>   */<a name="line.2565"></a>
-<span class="sourceLineNo">2566</span>  public void postSnapshotOperation() {<a name="line.2566"></a>
-<span class="sourceLineNo">2567</span>    archiveLock.unlock();<a name="line.2567"></a>
-<span class="sourceLineNo">2568</span>  }<a name="line.2568"></a>
-<span class="sourceLineNo">2569</span><a name="line.2569"></a>
-<span class="sourceLineNo">2570</span>  /**<a name="line.2570"></a>
-<span class="sourceLineNo">2571</span>   * Closes and archives the compacted files under this store<a name="line.2571"></a>
-<span class="sourceLineNo">2572</span>   */<a name="line.2572"></a>
-<span class="sourceLineNo">2573</span>  public synchronized void closeAndArchiveCompactedFiles() throws IOException {<a name="line.2573"></a>
-<span class="sourceLineNo">2574</span>    closeAndArchiveCompactedFiles(false);<a name="line.2574"></a>
-<span class="sourceLineNo">2575</span>  }<a name="line.2575"></a>
-<span class="sourceLineNo">2576</span><a name="line.2576"></a>
-<span class="sourceLineNo">2577</span>  @VisibleForTesting<a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>  public synchronized void closeAndArchiveCompactedFiles(boolean storeClosing) throws IOException {<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>    // ensure other threads do not attempt to archive the same files on close()<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>    archiveLock.lock();<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>    try {<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>      lock.readLock().lock();<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span>      Collection&lt;HStoreFile&gt; copyCompactedfiles = null;<a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>      try {<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span>        Collection&lt;HStoreFile&gt; compactedfiles =<a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>            this.getStoreEngine().getStoreFileManager().getCompactedfiles();<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span>        if (CollectionUtils.isNotEmpty(compactedfiles)) {<a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>          // Do a copy under read lock<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span>          copyCompactedfiles = new ArrayList&lt;&gt;(compactedfiles);<a name="line.2589"></a>
-<span class="sourceLineNo">2590</span>        } else {<a name="line.2590"></a>
-<span class="sourceLineNo">2591</span>          LOG.trace("No compacted files to archive");<a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>        }<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>      } finally {<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>        lock.readLock().unlock();<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span>      }<a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>      if (CollectionUtils.isNotEmpty(copyCompactedfiles)) {<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>        removeCompactedfiles(copyCompactedfiles, storeClosing);<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>      }<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span>    } finally {<a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>      archiveLock.unlock();<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span>    }<a name="line.2601"></a>
-<span class="sourceLineNo">2602</span>  }<a name="line.2602"></a>
-<span class="sourceLineNo">2603</span><a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>  /**<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span>   * Archives and removes the compacted files<a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>   * @param compactedfiles The compacted files in this store that are not active in reads<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>   */<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>  private void removeCompactedfiles(Collection&lt;HStoreFile&gt; compactedfiles, boolean storeClosing)<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span>      throws IOException {<a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>    final List&lt;HStoreFile&gt; filesToRemove = new ArrayList&lt;&gt;(compactedfiles.size());<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>    final List&lt;Long&gt; storeFileSizes = new ArrayList&lt;&gt;(compactedfiles.size());<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>    for (final HStoreFile file : compactedfiles) {<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span>      synchronized (file) {<a name="line.2613"></a>
-<span class="sourceLineNo">2614</span>        try {<a name="line.2614"></a>
-<span class="sourceLineNo">2615</span>          StoreFileReader r = file.getReader();<a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>          if (r == null) {<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>            LOG.debug("The file {} was closed but still not archived", file);<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>            // HACK: Temporarily re-open the reader so we can get the size of the file. Ideally,<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span>            // we should know the size of

<TRUNCATED>

[21/29] hbase-site git commit: Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html b/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html
index 6428b67..65c197f 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/KeyValue.KVComparator.html
@@ -260,2307 +260,2317 @@
 <span class="sourceLineNo">252</span>    }<a name="line.252"></a>
 <span class="sourceLineNo">253</span><a name="line.253"></a>
 <span class="sourceLineNo">254</span>    /**<a name="line.254"></a>
-<span class="sourceLineNo">255</span>     * Cannot rely on enum ordinals . They change if item is removed or moved.<a name="line.255"></a>
-<span class="sourceLineNo">256</span>     * Do our own codes.<a name="line.256"></a>
-<span class="sourceLineNo">257</span>     * @param b<a name="line.257"></a>
-<span class="sourceLineNo">258</span>     * @return Type associated with passed code.<a name="line.258"></a>
-<span class="sourceLineNo">259</span>     */<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    public static Type codeToType(final byte b) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      Type t = codeArray[b &amp; 0xff];<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      if (t != null) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        return t;<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      }<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      throw new RuntimeException("Unknown code " + b);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span>  }<a name="line.267"></a>
-<span class="sourceLineNo">268</span><a name="line.268"></a>
-<span class="sourceLineNo">269</span>  /**<a name="line.269"></a>
-<span class="sourceLineNo">270</span>   * Lowest possible key.<a name="line.270"></a>
-<span class="sourceLineNo">271</span>   * Makes a Key with highest possible Timestamp, empty row and column.  No<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   * key can be equal or lower than this one in memstore or in store file.<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   */<a name="line.273"></a>
-<span class="sourceLineNo">274</span>  public static final KeyValue LOWESTKEY =<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    new KeyValue(HConstants.EMPTY_BYTE_ARRAY, HConstants.LATEST_TIMESTAMP);<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>  ////<a name="line.277"></a>
-<span class="sourceLineNo">278</span>  // KeyValue core instance fields.<a name="line.278"></a>
-<span class="sourceLineNo">279</span>  protected byte [] bytes = null;  // an immutable byte array that contains the KV<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  protected int offset = 0;  // offset into bytes buffer KV starts at<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  protected int length = 0;  // length of the KV starting from offset.<a name="line.281"></a>
-<span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  /** Here be dragons **/<a name="line.283"></a>
-<span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>  /**<a name="line.285"></a>
-<span class="sourceLineNo">286</span>   * used to achieve atomic operations in the memstore.<a name="line.286"></a>
-<span class="sourceLineNo">287</span>   */<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  @Override<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  public long getSequenceId() {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    return seqId;<a name="line.290"></a>
-<span class="sourceLineNo">291</span>  }<a name="line.291"></a>
-<span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>  @Override<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  public void setSequenceId(long seqId) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    this.seqId = seqId;<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  }<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>  // multi-version concurrency control version.  default value is 0, aka do not care.<a name="line.298"></a>
-<span class="sourceLineNo">299</span>  private long seqId = 0;<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>  /** Dragon time over, return to normal business */<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>  /** Writable Constructor -- DO NOT USE */<a name="line.304"></a>
-<span class="sourceLineNo">305</span>  public KeyValue() {}<a name="line.305"></a>
+<span class="sourceLineNo">255</span>     * True to indicate that the byte b is a valid type.<a name="line.255"></a>
+<span class="sourceLineNo">256</span>     * @param b byte to check<a name="line.256"></a>
+<span class="sourceLineNo">257</span>     * @return true or false<a name="line.257"></a>
+<span class="sourceLineNo">258</span>     */<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    static boolean isValidType(byte b) {<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      return codeArray[b &amp; 0xff] != null;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    }<a name="line.261"></a>
+<span class="sourceLineNo">262</span><a name="line.262"></a>
+<span class="sourceLineNo">263</span>    /**<a name="line.263"></a>
+<span class="sourceLineNo">264</span>     * Cannot rely on enum ordinals . They change if item is removed or moved.<a name="line.264"></a>
+<span class="sourceLineNo">265</span>     * Do our own codes.<a name="line.265"></a>
+<span class="sourceLineNo">266</span>     * @param b<a name="line.266"></a>
+<span class="sourceLineNo">267</span>     * @return Type associated with passed code.<a name="line.267"></a>
+<span class="sourceLineNo">268</span>     */<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    public static Type codeToType(final byte b) {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      Type t = codeArray[b &amp; 0xff];<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      if (t != null) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        return t;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      throw new RuntimeException("Unknown code " + b);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  }<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>  /**<a name="line.278"></a>
+<span class="sourceLineNo">279</span>   * Lowest possible key.<a name="line.279"></a>
+<span class="sourceLineNo">280</span>   * Makes a Key with highest possible Timestamp, empty row and column.  No<a name="line.280"></a>
+<span class="sourceLineNo">281</span>   * key can be equal or lower than this one in memstore or in store file.<a name="line.281"></a>
+<span class="sourceLineNo">282</span>   */<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  public static final KeyValue LOWESTKEY =<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    new KeyValue(HConstants.EMPTY_BYTE_ARRAY, HConstants.LATEST_TIMESTAMP);<a name="line.284"></a>
+<span class="sourceLineNo">285</span><a name="line.285"></a>
+<span class="sourceLineNo">286</span>  ////<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  // KeyValue core instance fields.<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  protected byte [] bytes = null;  // an immutable byte array that contains the KV<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  protected int offset = 0;  // offset into bytes buffer KV starts at<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  protected int length = 0;  // length of the KV starting from offset.<a name="line.290"></a>
+<span class="sourceLineNo">291</span><a name="line.291"></a>
+<span class="sourceLineNo">292</span>  /** Here be dragons **/<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>  /**<a name="line.294"></a>
+<span class="sourceLineNo">295</span>   * used to achieve atomic operations in the memstore.<a name="line.295"></a>
+<span class="sourceLineNo">296</span>   */<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  @Override<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  public long getSequenceId() {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    return seqId;<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>
+<span class="sourceLineNo">303</span>  public void setSequenceId(long seqId) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    this.seqId = seqId;<a name="line.304"></a>
+<span class="sourceLineNo">305</span>  }<a name="line.305"></a>
 <span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>  /**<a name="line.307"></a>
-<span class="sourceLineNo">308</span>   * Creates a KeyValue from the start of the specified byte array.<a name="line.308"></a>
-<span class="sourceLineNo">309</span>   * Presumes &lt;code&gt;bytes&lt;/code&gt; content is formatted as a KeyValue blob.<a name="line.309"></a>
-<span class="sourceLineNo">310</span>   * @param bytes byte array<a name="line.310"></a>
-<span class="sourceLineNo">311</span>   */<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  public KeyValue(final byte [] bytes) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    this(bytes, 0);<a name="line.313"></a>
-<span class="sourceLineNo">314</span>  }<a name="line.314"></a>
+<span class="sourceLineNo">307</span>  // multi-version concurrency control version.  default value is 0, aka do not care.<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  private long seqId = 0;<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>  /** Dragon time over, return to normal business */<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>  /** Writable Constructor -- DO NOT USE */<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  public KeyValue() {}<a name="line.314"></a>
 <span class="sourceLineNo">315</span><a name="line.315"></a>
 <span class="sourceLineNo">316</span>  /**<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * Creates a KeyValue from the specified byte array and offset.<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * Presumes &lt;code&gt;bytes&lt;/code&gt; content starting at &lt;code&gt;offset&lt;/code&gt; is<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   * formatted as a KeyValue blob.<a name="line.319"></a>
-<span class="sourceLineNo">320</span>   * @param bytes byte array<a name="line.320"></a>
-<span class="sourceLineNo">321</span>   * @param offset offset to start of KeyValue<a name="line.321"></a>
-<span class="sourceLineNo">322</span>   */<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  public KeyValue(final byte [] bytes, final int offset) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    this(bytes, offset, getLength(bytes, offset));<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  }<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>  /**<a name="line.327"></a>
-<span class="sourceLineNo">328</span>   * Creates a KeyValue from the specified byte array, starting at offset, and<a name="line.328"></a>
-<span class="sourceLineNo">329</span>   * for length &lt;code&gt;length&lt;/code&gt;.<a name="line.329"></a>
-<span class="sourceLineNo">330</span>   * @param bytes byte array<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   * @param offset offset to start of the KeyValue<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   * @param length length of the KeyValue<a name="line.332"></a>
-<span class="sourceLineNo">333</span>   */<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  public KeyValue(final byte [] bytes, final int offset, final int length) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    this.bytes = bytes;<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    this.offset = offset;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    this.length = length;<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  }<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>  /**<a name="line.340"></a>
-<span class="sourceLineNo">341</span>   * Creates a KeyValue from the specified byte array, starting at offset, and<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   * for length &lt;code&gt;length&lt;/code&gt;.<a name="line.342"></a>
-<span class="sourceLineNo">343</span>   *<a name="line.343"></a>
-<span class="sourceLineNo">344</span>   * @param bytes  byte array<a name="line.344"></a>
-<span class="sourceLineNo">345</span>   * @param offset offset to start of the KeyValue<a name="line.345"></a>
-<span class="sourceLineNo">346</span>   * @param length length of the KeyValue<a name="line.346"></a>
-<span class="sourceLineNo">347</span>   * @param ts<a name="line.347"></a>
-<span class="sourceLineNo">348</span>   */<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  public KeyValue(final byte[] bytes, final int offset, final int length, long ts) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    this(bytes, offset, length, null, 0, 0, null, 0, 0, ts, Type.Maximum, null, 0, 0, null);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  }<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  /** Constructors that build a new backing byte array from fields */<a name="line.353"></a>
-<span class="sourceLineNo">354</span><a name="line.354"></a>
-<span class="sourceLineNo">355</span>  /**<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   * Constructs KeyValue structure filled with null value.<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   * Sets type to {@link KeyValue.Type#Maximum}<a name="line.357"></a>
-<span class="sourceLineNo">358</span>   * @param row - row key (arbitrary byte array)<a name="line.358"></a>
-<span class="sourceLineNo">359</span>   * @param timestamp<a name="line.359"></a>
-<span class="sourceLineNo">360</span>   */<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  public KeyValue(final byte [] row, final long timestamp) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    this(row, null, null, timestamp, Type.Maximum, null);<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  }<a name="line.363"></a>
+<span class="sourceLineNo">317</span>   * Creates a KeyValue from the start of the specified byte array.<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * Presumes &lt;code&gt;bytes&lt;/code&gt; content is formatted as a KeyValue blob.<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * @param bytes byte array<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   */<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  public KeyValue(final byte [] bytes) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    this(bytes, 0);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  }<a name="line.323"></a>
+<span class="sourceLineNo">324</span><a name="line.324"></a>
+<span class="sourceLineNo">325</span>  /**<a name="line.325"></a>
+<span class="sourceLineNo">326</span>   * Creates a KeyValue from the specified byte array and offset.<a name="line.326"></a>
+<span class="sourceLineNo">327</span>   * Presumes &lt;code&gt;bytes&lt;/code&gt; content starting at &lt;code&gt;offset&lt;/code&gt; is<a name="line.327"></a>
+<span class="sourceLineNo">328</span>   * formatted as a KeyValue blob.<a name="line.328"></a>
+<span class="sourceLineNo">329</span>   * @param bytes byte array<a name="line.329"></a>
+<span class="sourceLineNo">330</span>   * @param offset offset to start of KeyValue<a name="line.330"></a>
+<span class="sourceLineNo">331</span>   */<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  public KeyValue(final byte [] bytes, final int offset) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    this(bytes, offset, getLength(bytes, offset));<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  }<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>  /**<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   * Creates a KeyValue from the specified byte array, starting at offset, and<a name="line.337"></a>
+<span class="sourceLineNo">338</span>   * for length &lt;code&gt;length&lt;/code&gt;.<a name="line.338"></a>
+<span class="sourceLineNo">339</span>   * @param bytes byte array<a name="line.339"></a>
+<span class="sourceLineNo">340</span>   * @param offset offset to start of the KeyValue<a name="line.340"></a>
+<span class="sourceLineNo">341</span>   * @param length length of the KeyValue<a name="line.341"></a>
+<span class="sourceLineNo">342</span>   */<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  public KeyValue(final byte[] bytes, final int offset, final int length) {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    KeyValueUtil.checkKeyValueBytes(bytes, offset, length, true);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    this.bytes = bytes;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    this.offset = offset;<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    this.length = length;<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>  /**<a name="line.350"></a>
+<span class="sourceLineNo">351</span>   * Creates a KeyValue from the specified byte array, starting at offset, and<a name="line.351"></a>
+<span class="sourceLineNo">352</span>   * for length &lt;code&gt;length&lt;/code&gt;.<a name="line.352"></a>
+<span class="sourceLineNo">353</span>   *<a name="line.353"></a>
+<span class="sourceLineNo">354</span>   * @param bytes  byte array<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * @param offset offset to start of the KeyValue<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   * @param length length of the KeyValue<a name="line.356"></a>
+<span class="sourceLineNo">357</span>   * @param ts<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   */<a name="line.358"></a>
+<span class="sourceLineNo">359</span>  public KeyValue(final byte[] bytes, final int offset, final int length, long ts) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    this(bytes, offset, length, null, 0, 0, null, 0, 0, ts, Type.Maximum, null, 0, 0, null);<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  }<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>  /** Constructors that build a new backing byte array from fields */<a name="line.363"></a>
 <span class="sourceLineNo">364</span><a name="line.364"></a>
 <span class="sourceLineNo">365</span>  /**<a name="line.365"></a>
 <span class="sourceLineNo">366</span>   * Constructs KeyValue structure filled with null value.<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   * @param row - row key (arbitrary byte array)<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   * @param timestamp<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   */<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  public KeyValue(final byte [] row, final long timestamp, Type type) {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    this(row, null, null, timestamp, type, null);<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>  /**<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   * Constructs KeyValue structure filled with null value.<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   * Sets type to {@link KeyValue.Type#Maximum}<a name="line.376"></a>
+<span class="sourceLineNo">367</span>   * Sets type to {@link KeyValue.Type#Maximum}<a name="line.367"></a>
+<span class="sourceLineNo">368</span>   * @param row - row key (arbitrary byte array)<a name="line.368"></a>
+<span class="sourceLineNo">369</span>   * @param timestamp<a name="line.369"></a>
+<span class="sourceLineNo">370</span>   */<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  public KeyValue(final byte [] row, final long timestamp) {<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    this(row, null, null, timestamp, Type.Maximum, null);<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>   * Constructs KeyValue structure filled with null value.<a name="line.376"></a>
 <span class="sourceLineNo">377</span>   * @param row - row key (arbitrary byte array)<a name="line.377"></a>
-<span class="sourceLineNo">378</span>   * @param family family name<a name="line.378"></a>
-<span class="sourceLineNo">379</span>   * @param qualifier column qualifier<a name="line.379"></a>
-<span class="sourceLineNo">380</span>   */<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  public KeyValue(final byte [] row, final byte [] family,<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      final byte [] qualifier) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    this(row, family, qualifier, HConstants.LATEST_TIMESTAMP, Type.Maximum);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  }<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span>  /**<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   * Constructs KeyValue structure as a put filled with specified values and<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * LATEST_TIMESTAMP.<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * @param row - row key (arbitrary byte array)<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   * @param family family name<a name="line.390"></a>
-<span class="sourceLineNo">391</span>   * @param qualifier column qualifier<a name="line.391"></a>
-<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  public KeyValue(final byte [] row, final byte [] family,<a name="line.393"></a>
-<span class="sourceLineNo">394</span>      final byte [] qualifier, final byte [] value) {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    this(row, family, qualifier, HConstants.LATEST_TIMESTAMP, Type.Put, value);<a name="line.395"></a>
-<span class="sourceLineNo">396</span>  }<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>  /**<a name="line.398"></a>
-<span class="sourceLineNo">399</span>   * Constructs KeyValue structure filled with specified values.<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * @param row row key<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * @param family family name<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @param qualifier column qualifier<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   * @param timestamp version timestamp<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * @param type key type<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   * @throws IllegalArgumentException<a name="line.405"></a>
-<span class="sourceLineNo">406</span>   */<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      final byte[] qualifier, final long timestamp, Type type) {<a name="line.408"></a>
-<span class="sourceLineNo">409</span>    this(row, family, qualifier, timestamp, type, null);<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>   * Constructs KeyValue structure filled with specified values.<a name="line.413"></a>
-<span class="sourceLineNo">414</span>   * @param row row key<a name="line.414"></a>
-<span class="sourceLineNo">415</span>   * @param family family name<a name="line.415"></a>
-<span class="sourceLineNo">416</span>   * @param qualifier column qualifier<a name="line.416"></a>
-<span class="sourceLineNo">417</span>   * @param timestamp version timestamp<a name="line.417"></a>
-<span class="sourceLineNo">418</span>   * @param value column value<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * @throws IllegalArgumentException<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   */<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.421"></a>
-<span class="sourceLineNo">422</span>      final byte[] qualifier, final long timestamp, final byte[] value) {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    this(row, family, qualifier, timestamp, Type.Put, value);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>  }<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span>  /**<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * Constructs KeyValue structure filled with specified values.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * @param row row key<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * @param family family name<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   * @param qualifier column qualifier<a name="line.430"></a>
-<span class="sourceLineNo">431</span>   * @param timestamp version timestamp<a name="line.431"></a>
-<span class="sourceLineNo">432</span>   * @param value column value<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   * @param tags tags<a name="line.433"></a>
-<span class="sourceLineNo">434</span>   * @throws IllegalArgumentException<a name="line.434"></a>
-<span class="sourceLineNo">435</span>   */<a name="line.435"></a>
-<span class="sourceLineNo">436</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      final byte[] qualifier, final long timestamp, final byte[] value,<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      final Tag[] tags) {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    this(row, family, qualifier, timestamp, value, tags != null ? Arrays.asList(tags) : null);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>  }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * Constructs KeyValue structure filled with specified values.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   * @param row row key<a name="line.444"></a>
-<span class="sourceLineNo">445</span>   * @param family family name<a name="line.445"></a>
-<span class="sourceLineNo">446</span>   * @param qualifier column qualifier<a name="line.446"></a>
-<span class="sourceLineNo">447</span>   * @param timestamp version timestamp<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * @param value column value<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   * @param tags tags non-empty list of tags or null<a name="line.449"></a>
-<span class="sourceLineNo">450</span>   * @throws IllegalArgumentException<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   */<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      final byte[] qualifier, final long timestamp, final byte[] value,<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      final List&lt;Tag&gt; tags) {<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.455"></a>
-<span class="sourceLineNo">456</span>      family, 0, family==null ? 0 : family.length,<a name="line.456"></a>
-<span class="sourceLineNo">457</span>      qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      timestamp, Type.Put,<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      value, 0, value==null ? 0 : value.length, tags);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>  }<a name="line.460"></a>
-<span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>  /**<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * Constructs KeyValue structure filled with specified values.<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * @param row row key<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   * @param family family name<a name="line.465"></a>
-<span class="sourceLineNo">466</span>   * @param qualifier column qualifier<a name="line.466"></a>
-<span class="sourceLineNo">467</span>   * @param timestamp version timestamp<a name="line.467"></a>
-<span class="sourceLineNo">468</span>   * @param type key type<a name="line.468"></a>
-<span class="sourceLineNo">469</span>   * @param value column value<a name="line.469"></a>
-<span class="sourceLineNo">470</span>   * @throws IllegalArgumentException<a name="line.470"></a>
-<span class="sourceLineNo">471</span>   */<a name="line.471"></a>
-<span class="sourceLineNo">472</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.472"></a>
-<span class="sourceLineNo">473</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      final byte[] value) {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    this(row, 0, len(row),   family, 0, len(family),   qualifier, 0, len(qualifier),<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        timestamp, type,   value, 0, len(value));<a name="line.476"></a>
-<span class="sourceLineNo">477</span>  }<a name="line.477"></a>
-<span class="sourceLineNo">478</span><a name="line.478"></a>
-<span class="sourceLineNo">479</span>  /**<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * Constructs KeyValue structure filled with specified values.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   * &lt;p&gt;<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * Column is split into two fields, family and qualifier.<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * @param row row key<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   * @param family family name<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   * @param qualifier column qualifier<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * @param timestamp version timestamp<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * @param type key type<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * @param value column value<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   * @throws IllegalArgumentException<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   */<a name="line.490"></a>
-<span class="sourceLineNo">491</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      final byte[] value, final List&lt;Tag&gt; tags) {<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    this(row, family, qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.494"></a>
-<span class="sourceLineNo">495</span>        timestamp, type, value, 0, value==null ? 0 : value.length, tags);<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>  /**<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   * Constructs KeyValue structure filled with specified values.<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   * @param row row key<a name="line.500"></a>
-<span class="sourceLineNo">501</span>   * @param family family name<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   * @param qualifier column qualifier<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   * @param timestamp version timestamp<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   * @param type key type<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @param value column value<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * @throws IllegalArgumentException<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   */<a name="line.507"></a>
-<span class="sourceLineNo">508</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      final byte[] value, final byte[] tags) {<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    this(row, family, qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.511"></a>
-<span class="sourceLineNo">512</span>        timestamp, type, value, 0, value==null ? 0 : value.length, tags);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>  }<a name="line.513"></a>
-<span class="sourceLineNo">514</span><a name="line.514"></a>
-<span class="sourceLineNo">515</span>  /**<a name="line.515"></a>
-<span class="sourceLineNo">516</span>   * Constructs KeyValue structure filled with specified values.<a name="line.516"></a>
-<span class="sourceLineNo">517</span>   * @param row row key<a name="line.517"></a>
-<span class="sourceLineNo">518</span>   * @param family family name<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   * @param qualifier column qualifier<a name="line.519"></a>
-<span class="sourceLineNo">520</span>   * @param qoffset qualifier offset<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   * @param qlength qualifier length<a name="line.521"></a>
-<span class="sourceLineNo">522</span>   * @param timestamp version timestamp<a name="line.522"></a>
-<span class="sourceLineNo">523</span>   * @param type key type<a name="line.523"></a>
-<span class="sourceLineNo">524</span>   * @param value column value<a name="line.524"></a>
-<span class="sourceLineNo">525</span>   * @param voffset value offset<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * @param vlength value length<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * @throws IllegalArgumentException<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   */<a name="line.528"></a>
-<span class="sourceLineNo">529</span>  public KeyValue(byte [] row, byte [] family,<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      byte [] qualifier, int qoffset, int qlength, long timestamp, Type type,<a name="line.530"></a>
-<span class="sourceLineNo">531</span>      byte [] value, int voffset, int vlength, List&lt;Tag&gt; tags) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.532"></a>
-<span class="sourceLineNo">533</span>        family, 0, family==null ? 0 : family.length,<a name="line.533"></a>
-<span class="sourceLineNo">534</span>        qualifier, qoffset, qlength, timestamp, type,<a name="line.534"></a>
-<span class="sourceLineNo">535</span>        value, voffset, vlength, tags);<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  }<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>  /**<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * @param row<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   * @param family<a name="line.540"></a>
-<span class="sourceLineNo">541</span>   * @param qualifier<a name="line.541"></a>
-<span class="sourceLineNo">542</span>   * @param qoffset<a name="line.542"></a>
-<span class="sourceLineNo">543</span>   * @param qlength<a name="line.543"></a>
-<span class="sourceLineNo">544</span>   * @param timestamp<a name="line.544"></a>
-<span class="sourceLineNo">545</span>   * @param type<a name="line.545"></a>
-<span class="sourceLineNo">546</span>   * @param value<a name="line.546"></a>
-<span class="sourceLineNo">547</span>   * @param voffset<a name="line.547"></a>
-<span class="sourceLineNo">548</span>   * @param vlength<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   * @param tags<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   */<a name="line.550"></a>
-<span class="sourceLineNo">551</span>  public KeyValue(byte [] row, byte [] family,<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      byte [] qualifier, int qoffset, int qlength, long timestamp, Type type,<a name="line.552"></a>
-<span class="sourceLineNo">553</span>      byte [] value, int voffset, int vlength, byte[] tags) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.554"></a>
-<span class="sourceLineNo">555</span>        family, 0, family==null ? 0 : family.length,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>        qualifier, qoffset, qlength, timestamp, type,<a name="line.556"></a>
-<span class="sourceLineNo">557</span>        value, voffset, vlength, tags, 0, tags==null ? 0 : tags.length);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>  }<a name="line.558"></a>
-<span class="sourceLineNo">559</span><a name="line.559"></a>
-<span class="sourceLineNo">560</span>  /**<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   * Constructs KeyValue structure filled with specified values.<a name="line.561"></a>
-<span class="sourceLineNo">562</span>   * &lt;p&gt;<a name="line.562"></a>
-<span class="sourceLineNo">563</span>   * Column is split into two fields, family and qualifier.<a name="line.563"></a>
-<span class="sourceLineNo">564</span>   * @param row row key<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   * @throws IllegalArgumentException<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   */<a name="line.566"></a>
-<span class="sourceLineNo">567</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.567"></a>
-<span class="sourceLineNo">568</span>      final byte [] family, final int foffset, final int flength,<a name="line.568"></a>
-<span class="sourceLineNo">569</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.569"></a>
-<span class="sourceLineNo">570</span>      final long timestamp, final Type type,<a name="line.570"></a>
-<span class="sourceLineNo">571</span>      final byte [] value, final int voffset, final int vlength) {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    this(row, roffset, rlength, family, foffset, flength, qualifier, qoffset,<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      qlength, timestamp, type, value, voffset, vlength, null);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>  }<a name="line.574"></a>
-<span class="sourceLineNo">575</span><a name="line.575"></a>
-<span class="sourceLineNo">576</span>  /**<a name="line.576"></a>
-<span class="sourceLineNo">577</span>   * Constructs KeyValue structure filled with specified values. Uses the provided buffer as the<a name="line.577"></a>
-<span class="sourceLineNo">578</span>   * data buffer.<a name="line.578"></a>
-<span class="sourceLineNo">579</span>   * &lt;p&gt;<a name="line.579"></a>
-<span class="sourceLineNo">580</span>   * Column is split into two fields, family and qualifier.<a name="line.580"></a>
-<span class="sourceLineNo">581</span>   *<a name="line.581"></a>
-<span class="sourceLineNo">582</span>   * @param buffer the bytes buffer to use<a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * @param boffset buffer offset<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   * @param row row key<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   * @param roffset row offset<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   * @param rlength row length<a name="line.586"></a>
-<span class="sourceLineNo">587</span>   * @param family family name<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   * @param foffset family offset<a name="line.588"></a>
-<span class="sourceLineNo">589</span>   * @param flength family length<a name="line.589"></a>
-<span class="sourceLineNo">590</span>   * @param qualifier column qualifier<a name="line.590"></a>
-<span class="sourceLineNo">591</span>   * @param qoffset qualifier offset<a name="line.591"></a>
-<span class="sourceLineNo">592</span>   * @param qlength qualifier length<a name="line.592"></a>
-<span class="sourceLineNo">593</span>   * @param timestamp version timestamp<a name="line.593"></a>
-<span class="sourceLineNo">594</span>   * @param type key type<a name="line.594"></a>
-<span class="sourceLineNo">595</span>   * @param value column value<a name="line.595"></a>
-<span class="sourceLineNo">596</span>   * @param voffset value offset<a name="line.596"></a>
-<span class="sourceLineNo">597</span>   * @param vlength value length<a name="line.597"></a>
-<span class="sourceLineNo">598</span>   * @param tags non-empty list of tags or null<a name="line.598"></a>
-<span class="sourceLineNo">599</span>   * @throws IllegalArgumentException an illegal value was passed or there is insufficient space<a name="line.599"></a>
-<span class="sourceLineNo">600</span>   * remaining in the buffer<a name="line.600"></a>
-<span class="sourceLineNo">601</span>   */<a name="line.601"></a>
-<span class="sourceLineNo">602</span>  public KeyValue(byte [] buffer, final int boffset,<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      final byte [] row, final int roffset, final int rlength,<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      final byte [] family, final int foffset, final int flength,<a name="line.604"></a>
-<span class="sourceLineNo">605</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.605"></a>
-<span class="sourceLineNo">606</span>      final long timestamp, final Type type,<a name="line.606"></a>
-<span class="sourceLineNo">607</span>      final byte [] value, final int voffset, final int vlength,<a name="line.607"></a>
-<span class="sourceLineNo">608</span>      final Tag[] tags) {<a name="line.608"></a>
-<span class="sourceLineNo">609</span>     this.bytes  = buffer;<a name="line.609"></a>
-<span class="sourceLineNo">610</span>     this.length = writeByteArray(buffer, boffset,<a name="line.610"></a>
-<span class="sourceLineNo">611</span>         row, roffset, rlength,<a name="line.611"></a>
-<span class="sourceLineNo">612</span>         family, foffset, flength, qualifier, qoffset, qlength,<a name="line.612"></a>
-<span class="sourceLineNo">613</span>        timestamp, type, value, voffset, vlength, tags);<a name="line.613"></a>
-<span class="sourceLineNo">614</span>     this.offset = boffset;<a name="line.614"></a>
-<span class="sourceLineNo">615</span>   }<a name="line.615"></a>
-<span class="sourceLineNo">616</span><a name="line.616"></a>
-<span class="sourceLineNo">617</span>  /**<a name="line.617"></a>
-<span class="sourceLineNo">618</span>   * Constructs KeyValue structure filled with specified values.<a name="line.618"></a>
-<span class="sourceLineNo">619</span>   * &lt;p&gt;<a name="line.619"></a>
-<span class="sourceLineNo">620</span>   * Column is split into two fields, family and qualifier.<a name="line.620"></a>
-<span class="sourceLineNo">621</span>   * @param row row key<a name="line.621"></a>
-<span class="sourceLineNo">622</span>   * @param roffset row offset<a name="line.622"></a>
-<span class="sourceLineNo">623</span>   * @param rlength row length<a name="line.623"></a>
-<span class="sourceLineNo">624</span>   * @param family family name<a name="line.624"></a>
-<span class="sourceLineNo">625</span>   * @param foffset family offset<a name="line.625"></a>
-<span class="sourceLineNo">626</span>   * @param flength family length<a name="line.626"></a>
-<span class="sourceLineNo">627</span>   * @param qualifier column qualifier<a name="line.627"></a>
-<span class="sourceLineNo">628</span>   * @param qoffset qualifier offset<a name="line.628"></a>
-<span class="sourceLineNo">629</span>   * @param qlength qualifier length<a name="line.629"></a>
-<span class="sourceLineNo">630</span>   * @param timestamp version timestamp<a name="line.630"></a>
-<span class="sourceLineNo">631</span>   * @param type key type<a name="line.631"></a>
-<span class="sourceLineNo">632</span>   * @param value column value<a name="line.632"></a>
-<span class="sourceLineNo">633</span>   * @param voffset value offset<a name="line.633"></a>
-<span class="sourceLineNo">634</span>   * @param vlength value length<a name="line.634"></a>
-<span class="sourceLineNo">635</span>   * @param tags tags<a name="line.635"></a>
-<span class="sourceLineNo">636</span>   * @throws IllegalArgumentException<a name="line.636"></a>
-<span class="sourceLineNo">637</span>   */<a name="line.637"></a>
-<span class="sourceLineNo">638</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      final byte [] family, final int foffset, final int flength,<a name="line.639"></a>
-<span class="sourceLineNo">640</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      final long timestamp, final Type type,<a name="line.641"></a>
-<span class="sourceLineNo">642</span>      final byte [] value, final int voffset, final int vlength,<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      final List&lt;Tag&gt; tags) {<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    this.bytes = createByteArray(row, roffset, rlength,<a name="line.644"></a>
-<span class="sourceLineNo">645</span>        family, foffset, flength, qualifier, qoffset, qlength,<a name="line.645"></a>
-<span class="sourceLineNo">646</span>        timestamp, type, value, voffset, vlength, tags);<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    this.length = bytes.length;<a name="line.647"></a>
-<span class="sourceLineNo">648</span>    this.offset = 0;<a name="line.648"></a>
-<span class="sourceLineNo">649</span>  }<a name="line.649"></a>
-<span class="sourceLineNo">650</span><a name="line.650"></a>
-<span class="sourceLineNo">651</span>  /**<a name="line.651"></a>
-<span class="sourceLineNo">652</span>   * @param row<a name="line.652"></a>
-<span class="sourceLineNo">653</span>   * @param roffset<a name="line.653"></a>
-<span class="sourceLineNo">654</span>   * @param rlength<a name="line.654"></a>
-<span class="sourceLineNo">655</span>   * @param family<a name="line.655"></a>
-<span class="sourceLineNo">656</span>   * @param foffset<a name="line.656"></a>
-<span class="sourceLineNo">657</span>   * @param flength<a name="line.657"></a>
-<span class="sourceLineNo">658</span>   * @param qualifier<a name="line.658"></a>
-<span class="sourceLineNo">659</span>   * @param qoffset<a name="line.659"></a>
-<span class="sourceLineNo">660</span>   * @param qlength<a name="line.660"></a>
-<span class="sourceLineNo">661</span>   * @param timestamp<a name="line.661"></a>
-<span class="sourceLineNo">662</span>   * @param type<a name="line.662"></a>
-<span class="sourceLineNo">663</span>   * @param value<a name="line.663"></a>
-<span class="sourceLineNo">664</span>   * @param voffset<a name="line.664"></a>
-<span class="sourceLineNo">665</span>   * @param vlength<a name="line.665"></a>
-<span class="sourceLineNo">666</span>   * @param tags<a name="line.666"></a>
-<span class="sourceLineNo">667</span>   */<a name="line.667"></a>
-<span class="sourceLineNo">668</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.668"></a>
-<span class="sourceLineNo">669</span>      final byte [] family, final int foffset, final int flength,<a name="line.669"></a>
-<span class="sourceLineNo">670</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.670"></a>
-<span class="sourceLineNo">671</span>      final long timestamp, final Type type,<a name="line.671"></a>
-<span class="sourceLineNo">672</span>      final byte [] value, final int voffset, final int vlength,<a name="line.672"></a>
-<span class="sourceLineNo">673</span>      final byte[] tags, final int tagsOffset, final int tagsLength) {<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    this.bytes = createByteArray(row, roffset, rlength,<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        family, foffset, flength, qualifier, qoffset, qlength,<a name="line.675"></a>
-<span class="sourceLineNo">676</span>        timestamp, type, value, voffset, vlength, tags, tagsOffset, tagsLength);<a name="line.676"></a>
-<span class="sourceLineNo">677</span>    this.length = bytes.length;<a name="line.677"></a>
-<span class="sourceLineNo">678</span>    this.offset = 0;<a name="line.678"></a>
-<span class="sourceLineNo">679</span>  }<a name="line.679"></a>
-<span class="sourceLineNo">680</span><a name="line.680"></a>
-<span class="sourceLineNo">681</span>  /**<a name="line.681"></a>
-<span class="sourceLineNo">682</span>   * Constructs an empty KeyValue structure, with specified sizes.<a name="line.682"></a>
-<span class="sourceLineNo">683</span>   * This can be used to partially fill up KeyValues.<a name="line.683"></a>
-<span class="sourceLineNo">684</span>   * &lt;p&gt;<a name="line.684"></a>
-<span class="sourceLineNo">685</span>   * Column is split into two fields, family and qualifier.<a name="line.685"></a>
-<span class="sourceLineNo">686</span>   * @param rlength row length<a name="line.686"></a>
-<span class="sourceLineNo">687</span>   * @param flength family length<a name="line.687"></a>
-<span class="sourceLineNo">688</span>   * @param qlength qualifier length<a name="line.688"></a>
-<span class="sourceLineNo">689</span>   * @param timestamp version timestamp<a name="line.689"></a>
-<span class="sourceLineNo">690</span>   * @param type key type<a name="line.690"></a>
-<span class="sourceLineNo">691</span>   * @param vlength value length<a name="line.691"></a>
-<span class="sourceLineNo">692</span>   * @throws IllegalArgumentException<a name="line.692"></a>
-<span class="sourceLineNo">693</span>   */<a name="line.693"></a>
-<span class="sourceLineNo">694</span>  public KeyValue(final int rlength,<a name="line.694"></a>
-<span class="sourceLineNo">695</span>      final int flength,<a name="line.695"></a>
-<span class="sourceLineNo">696</span>      final int qlength,<a name="line.696"></a>
-<span class="sourceLineNo">697</span>      final long timestamp, final Type type,<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      final int vlength) {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>    this(rlength, flength, qlength, timestamp, type, vlength, 0);<a name="line.699"></a>
-<span class="sourceLineNo">700</span>  }<a name="line.700"></a>
-<span class="sourceLineNo">701</span><a name="line.701"></a>
-<span class="sourceLineNo">702</span>  /**<a name="line.702"></a>
-<span class="sourceLineNo">703</span>   * Constructs an empty KeyValue structure, with specified sizes.<a name="line.703"></a>
-<span class="sourceLineNo">704</span>   * This can be used to partially fill up KeyValues.<a name="line.704"></a>
-<span class="sourceLineNo">705</span>   * &lt;p&gt;<a name="line.705"></a>
-<span class="sourceLineNo">706</span>   * Column is split into two fields, family and qualifier.<a name="line.706"></a>
-<span class="sourceLineNo">707</span>   * @param rlength row length<a name="line.707"></a>
-<span class="sourceLineNo">708</span>   * @param flength family length<a name="line.708"></a>
-<span class="sourceLineNo">709</span>   * @param qlength qualifier length<a name="line.709"></a>
-<span class="sourceLineNo">710</span>   * @param timestamp version timestamp<a name="line.710"></a>
-<span class="sourceLineNo">711</span>   * @param type key type<a name="line.711"></a>
-<span class="sourceLineNo">712</span>   * @param vlength value length<a name="line.712"></a>
-<span class="sourceLineNo">713</span>   * @param tagsLength<a name="line.713"></a>
-<span class="sourceLineNo">714</span>   * @throws IllegalArgumentException<a name="line.714"></a>
-<span class="sourceLineNo">715</span>   */<a name="line.715"></a>
-<span class="sourceLineNo">716</span>  public KeyValue(final int rlength,<a name="line.716"></a>
-<span class="sourceLineNo">717</span>      final int flength,<a name="line.717"></a>
-<span class="sourceLineNo">718</span>      final int qlength,<a name="line.718"></a>
-<span class="sourceLineNo">719</span>      final long timestamp, final Type type,<a name="line.719"></a>
-<span class="sourceLineNo">720</span>      final int vlength, final int tagsLength) {<a name="line.720"></a>
-<span class="sourceLineNo">721</span>    this.bytes = createEmptyByteArray(rlength, flength, qlength, timestamp, type, vlength,<a name="line.721"></a>
-<span class="sourceLineNo">722</span>        tagsLength);<a name="line.722"></a>
-<span class="sourceLineNo">723</span>    this.length = bytes.length;<a name="line.723"></a>
-<span class="sourceLineNo">724</span>    this.offset = 0;<a name="line.724"></a>
-<span class="sourceLineNo">725</span>  }<a name="line.725"></a>
-<span class="sourceLineNo">726</span><a name="line.726"></a>
-<span class="sourceLineNo">727</span><a name="line.727"></a>
-<span class="sourceLineNo">728</span>  public KeyValue(byte[] row, int roffset, int rlength,<a name="line.728"></a>
-<span class="sourceLineNo">729</span>                  byte[] family, int foffset, int flength,<a name="line.729"></a>
-<span class="sourceLineNo">730</span>                  ByteBuffer qualifier, long ts, Type type, ByteBuffer value, List&lt;Tag&gt; tags) {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    this.bytes = createByteArray(row, roffset, rlength, family, foffset, flength,<a name="line.731"></a>
-<span class="sourceLineNo">732</span>        qualifier, 0, qualifier == null ? 0 : qualifier.remaining(), ts, type,<a name="line.732"></a>
-<span class="sourceLineNo">733</span>        value, 0, value == null ? 0 : value.remaining(), tags);<a name="line.733"></a>
-<span class="sourceLineNo">734</span>    this.length = bytes.length;<a name="line.734"></a>
-<span class="sourceLineNo">735</span>    this.offset = 0;<a name="line.735"></a>
-<span class="sourceLineNo">736</span>  }<a name="line.736"></a>
+<span class="sourceLineNo">378</span>   * @param timestamp<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   */<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  public KeyValue(final byte [] row, final long timestamp, Type type) {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>    this(row, null, null, timestamp, type, null);<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>
+<span class="sourceLineNo">385</span>   * Constructs KeyValue structure filled with null value.<a name="line.385"></a>
+<span class="sourceLineNo">386</span>   * Sets type to {@link KeyValue.Type#Maximum}<a name="line.386"></a>
+<span class="sourceLineNo">387</span>   * @param row - row key (arbitrary byte array)<a name="line.387"></a>
+<span class="sourceLineNo">388</span>   * @param family family name<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * @param qualifier column qualifier<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   */<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  public KeyValue(final byte [] row, final byte [] family,<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      final byte [] qualifier) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    this(row, family, qualifier, HConstants.LATEST_TIMESTAMP, Type.Maximum);<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>   * Constructs KeyValue structure as a put filled with specified values and<a name="line.397"></a>
+<span class="sourceLineNo">398</span>   * LATEST_TIMESTAMP.<a name="line.398"></a>
+<span class="sourceLineNo">399</span>   * @param row - row key (arbitrary byte array)<a name="line.399"></a>
+<span class="sourceLineNo">400</span>   * @param family family name<a name="line.400"></a>
+<span class="sourceLineNo">401</span>   * @param qualifier column qualifier<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
+<span class="sourceLineNo">403</span>  public KeyValue(final byte [] row, final byte [] family,<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      final byte [] qualifier, final byte [] value) {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>    this(row, family, qualifier, HConstants.LATEST_TIMESTAMP, Type.Put, value);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  }<a name="line.406"></a>
+<span class="sourceLineNo">407</span><a name="line.407"></a>
+<span class="sourceLineNo">408</span>  /**<a name="line.408"></a>
+<span class="sourceLineNo">409</span>   * Constructs KeyValue structure filled with specified values.<a name="line.409"></a>
+<span class="sourceLineNo">410</span>   * @param row row key<a name="line.410"></a>
+<span class="sourceLineNo">411</span>   * @param family family name<a name="line.411"></a>
+<span class="sourceLineNo">412</span>   * @param qualifier column qualifier<a name="line.412"></a>
+<span class="sourceLineNo">413</span>   * @param timestamp version timestamp<a name="line.413"></a>
+<span class="sourceLineNo">414</span>   * @param type key type<a name="line.414"></a>
+<span class="sourceLineNo">415</span>   * @throws IllegalArgumentException<a name="line.415"></a>
+<span class="sourceLineNo">416</span>   */<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      final byte[] qualifier, final long timestamp, Type type) {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>    this(row, family, qualifier, timestamp, type, null);<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>   * Constructs KeyValue structure filled with specified values.<a name="line.423"></a>
+<span class="sourceLineNo">424</span>   * @param row row key<a name="line.424"></a>
+<span class="sourceLineNo">425</span>   * @param family family name<a name="line.425"></a>
+<span class="sourceLineNo">426</span>   * @param qualifier column qualifier<a name="line.426"></a>
+<span class="sourceLineNo">427</span>   * @param timestamp version timestamp<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   * @param value column value<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * @throws IllegalArgumentException<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   */<a name="line.430"></a>
+<span class="sourceLineNo">431</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      final byte[] qualifier, final long timestamp, final byte[] value) {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    this(row, family, qualifier, timestamp, Type.Put, value);<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  }<a name="line.434"></a>
+<span class="sourceLineNo">435</span><a name="line.435"></a>
+<span class="sourceLineNo">436</span>  /**<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   * Constructs KeyValue structure filled with specified values.<a name="line.437"></a>
+<span class="sourceLineNo">438</span>   * @param row row key<a name="line.438"></a>
+<span class="sourceLineNo">439</span>   * @param family family name<a name="line.439"></a>
+<span class="sourceLineNo">440</span>   * @param qualifier column qualifier<a name="line.440"></a>
+<span class="sourceLineNo">441</span>   * @param timestamp version timestamp<a name="line.441"></a>
+<span class="sourceLineNo">442</span>   * @param value column value<a name="line.442"></a>
+<span class="sourceLineNo">443</span>   * @param tags tags<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   * @throws IllegalArgumentException<a name="line.444"></a>
+<span class="sourceLineNo">445</span>   */<a name="line.445"></a>
+<span class="sourceLineNo">446</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      final byte[] qualifier, final long timestamp, final byte[] value,<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      final Tag[] tags) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>    this(row, family, qualifier, timestamp, value, tags != null ? Arrays.asList(tags) : null);<a name="line.449"></a>
+<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>  /**<a name="line.452"></a>
+<span class="sourceLineNo">453</span>   * Constructs KeyValue structure filled with specified values.<a name="line.453"></a>
+<span class="sourceLineNo">454</span>   * @param row row key<a name="line.454"></a>
+<span class="sourceLineNo">455</span>   * @param family family name<a name="line.455"></a>
+<span class="sourceLineNo">456</span>   * @param qualifier column qualifier<a name="line.456"></a>
+<span class="sourceLineNo">457</span>   * @param timestamp version timestamp<a name="line.457"></a>
+<span class="sourceLineNo">458</span>   * @param value column value<a name="line.458"></a>
+<span class="sourceLineNo">459</span>   * @param tags tags non-empty list of tags or null<a name="line.459"></a>
+<span class="sourceLineNo">460</span>   * @throws IllegalArgumentException<a name="line.460"></a>
+<span class="sourceLineNo">461</span>   */<a name="line.461"></a>
+<span class="sourceLineNo">462</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      final byte[] qualifier, final long timestamp, final byte[] value,<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      final List&lt;Tag&gt; tags) {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      family, 0, family==null ? 0 : family.length,<a name="line.466"></a>
+<span class="sourceLineNo">467</span>      qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      timestamp, Type.Put,<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      value, 0, value==null ? 0 : value.length, tags);<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  }<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
+<span class="sourceLineNo">472</span>  /**<a name="line.472"></a>
+<span class="sourceLineNo">473</span>   * Constructs KeyValue structure filled with specified values.<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   * @param row row key<a name="line.474"></a>
+<span class="sourceLineNo">475</span>   * @param family family name<a name="line.475"></a>
+<span class="sourceLineNo">476</span>   * @param qualifier column qualifier<a name="line.476"></a>
+<span class="sourceLineNo">477</span>   * @param timestamp version timestamp<a name="line.477"></a>
+<span class="sourceLineNo">478</span>   * @param type key type<a name="line.478"></a>
+<span class="sourceLineNo">479</span>   * @param value column value<a name="line.479"></a>
+<span class="sourceLineNo">480</span>   * @throws IllegalArgumentException<a name="line.480"></a>
+<span class="sourceLineNo">481</span>   */<a name="line.481"></a>
+<span class="sourceLineNo">482</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.483"></a>
+<span class="sourceLineNo">484</span>      final byte[] value) {<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    this(row, 0, len(row),   family, 0, len(family),   qualifier, 0, len(qualifier),<a name="line.485"></a>
+<span class="sourceLineNo">486</span>        timestamp, type,   value, 0, len(value));<a name="line.486"></a>
+<span class="sourceLineNo">487</span>  }<a name="line.487"></a>
+<span class="sourceLineNo">488</span><a name="line.488"></a>
+<span class="sourceLineNo">489</span>  /**<a name="line.489"></a>
+<span class="sourceLineNo">490</span>   * Constructs KeyValue structure filled with specified values.<a name="line.490"></a>
+<span class="sourceLineNo">491</span>   * &lt;p&gt;<a name="line.491"></a>
+<span class="sourceLineNo">492</span>   * Column is split into two fields, family and qualifier.<a name="line.492"></a>
+<span class="sourceLineNo">493</span>   * @param row row key<a name="line.493"></a>
+<span class="sourceLineNo">494</span>   * @param family family name<a name="line.494"></a>
+<span class="sourceLineNo">495</span>   * @param qualifier column qualifier<a name="line.495"></a>
+<span class="sourceLineNo">496</span>   * @param timestamp version timestamp<a name="line.496"></a>
+<span class="sourceLineNo">497</span>   * @param type key type<a name="line.497"></a>
+<span class="sourceLineNo">498</span>   * @param value column value<a name="line.498"></a>
+<span class="sourceLineNo">499</span>   * @throws IllegalArgumentException<a name="line.499"></a>
+<span class="sourceLineNo">500</span>   */<a name="line.500"></a>
+<span class="sourceLineNo">501</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.501"></a>
+<span class="sourceLineNo">502</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      final byte[] value, final List&lt;Tag&gt; tags) {<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    this(row, family, qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.504"></a>
+<span class="sourceLineNo">505</span>        timestamp, type, value, 0, value==null ? 0 : value.length, tags);<a name="line.505"></a>
+<span class="sourceLineNo">506</span>  }<a name="line.506"></a>
+<span class="sourceLineNo">507</span><a name="line.507"></a>
+<span class="sourceLineNo">508</span>  /**<a name="line.508"></a>
+<span class="sourceLineNo">509</span>   * Constructs KeyValue structure filled with specified values.<a name="line.509"></a>
+<span class="sourceLineNo">510</span>   * @param row row key<a name="line.510"></a>
+<span class="sourceLineNo">511</span>   * @param family family name<a name="line.511"></a>
+<span class="sourceLineNo">512</span>   * @param qualifier column qualifier<a name="line.512"></a>
+<span class="sourceLineNo">513</span>   * @param timestamp version timestamp<a name="line.513"></a>
+<span class="sourceLineNo">514</span>   * @param type key type<a name="line.514"></a>
+<span class="sourceLineNo">515</span>   * @param value column value<a name="line.515"></a>
+<span class="sourceLineNo">516</span>   * @throws IllegalArgumentException<a name="line.516"></a>
+<span class="sourceLineNo">517</span>   */<a name="line.517"></a>
+<span class="sourceLineNo">518</span>  public KeyValue(final byte[] row, final byte[] family,<a name="line.518"></a>
+<span class="sourceLineNo">519</span>      final byte[] qualifier, final long timestamp, Type type,<a name="line.519"></a>
+<span class="sourceLineNo">520</span>      final byte[] value, final byte[] tags) {<a name="line.520"></a>
+<span class="sourceLineNo">521</span>    this(row, family, qualifier, 0, qualifier==null ? 0 : qualifier.length,<a name="line.521"></a>
+<span class="sourceLineNo">522</span>        timestamp, type, value, 0, value==null ? 0 : value.length, tags);<a name="line.522"></a>
+<span class="sourceLineNo">523</span>  }<a name="line.523"></a>
+<span class="sourceLineNo">524</span><a name="line.524"></a>
+<span class="sourceLineNo">525</span>  /**<a name="line.525"></a>
+<span class="sourceLineNo">526</span>   * Constructs KeyValue structure filled with specified values.<a name="line.526"></a>
+<span class="sourceLineNo">527</span>   * @param row row key<a name="line.527"></a>
+<span class="sourceLineNo">528</span>   * @param family family name<a name="line.528"></a>
+<span class="sourceLineNo">529</span>   * @param qualifier column qualifier<a name="line.529"></a>
+<span class="sourceLineNo">530</span>   * @param qoffset qualifier offset<a name="line.530"></a>
+<span class="sourceLineNo">531</span>   * @param qlength qualifier length<a name="line.531"></a>
+<span class="sourceLineNo">532</span>   * @param timestamp version timestamp<a name="line.532"></a>
+<span class="sourceLineNo">533</span>   * @param type key type<a name="line.533"></a>
+<span class="sourceLineNo">534</span>   * @param value column value<a name="line.534"></a>
+<span class="sourceLineNo">535</span>   * @param voffset value offset<a name="line.535"></a>
+<span class="sourceLineNo">536</span>   * @param vlength value length<a name="line.536"></a>
+<span class="sourceLineNo">537</span>   * @throws IllegalArgumentException<a name="line.537"></a>
+<span class="sourceLineNo">538</span>   */<a name="line.538"></a>
+<span class="sourceLineNo">539</span>  public KeyValue(byte [] row, byte [] family,<a name="line.539"></a>
+<span class="sourceLineNo">540</span>      byte [] qualifier, int qoffset, int qlength, long timestamp, Type type,<a name="line.540"></a>
+<span class="sourceLineNo">541</span>      byte [] value, int voffset, int vlength, List&lt;Tag&gt; tags) {<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.542"></a>
+<span class="sourceLineNo">543</span>        family, 0, family==null ? 0 : family.length,<a name="line.543"></a>
+<span class="sourceLineNo">544</span>        qualifier, qoffset, qlength, timestamp, type,<a name="line.544"></a>
+<span class="sourceLineNo">545</span>        value, voffset, vlength, tags);<a name="line.545"></a>
+<span class="sourceLineNo">546</span>  }<a name="line.546"></a>
+<span class="sourceLineNo">547</span><a name="line.547"></a>
+<span class="sourceLineNo">548</span>  /**<a name="line.548"></a>
+<span class="sourceLineNo">549</span>   * @param row<a name="line.549"></a>
+<span class="sourceLineNo">550</span>   * @param family<a name="line.550"></a>
+<span class="sourceLineNo">551</span>   * @param qualifier<a name="line.551"></a>
+<span class="sourceLineNo">552</span>   * @param qoffset<a name="line.552"></a>
+<span class="sourceLineNo">553</span>   * @param qlength<a name="line.553"></a>
+<span class="sourceLineNo">554</span>   * @param timestamp<a name="line.554"></a>
+<span class="sourceLineNo">555</span>   * @param type<a name="line.555"></a>
+<span class="sourceLineNo">556</span>   * @param value<a name="line.556"></a>
+<span class="sourceLineNo">557</span>   * @param voffset<a name="line.557"></a>
+<span class="sourceLineNo">558</span>   * @param vlength<a name="line.558"></a>
+<span class="sourceLineNo">559</span>   * @param tags<a name="line.559"></a>
+<span class="sourceLineNo">560</span>   */<a name="line.560"></a>
+<span class="sourceLineNo">561</span>  public KeyValue(byte [] row, byte [] family,<a name="line.561"></a>
+<span class="sourceLineNo">562</span>      byte [] qualifier, int qoffset, int qlength, long timestamp, Type type,<a name="line.562"></a>
+<span class="sourceLineNo">563</span>      byte [] value, int voffset, int vlength, byte[] tags) {<a name="line.563"></a>
+<span class="sourceLineNo">564</span>    this(row, 0, row==null ? 0 : row.length,<a name="line.564"></a>
+<span class="sourceLineNo">565</span>        family, 0, family==null ? 0 : family.length,<a name="line.565"></a>
+<span class="sourceLineNo">566</span>        qualifier, qoffset, qlength, timestamp, type,<a name="line.566"></a>
+<span class="sourceLineNo">567</span>        value, voffset, vlength, tags, 0, tags==null ? 0 : tags.length);<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>  /**<a name="line.570"></a>
+<span class="sourceLineNo">571</span>   * Constructs KeyValue structure filled with specified values.<a name="line.571"></a>
+<span class="sourceLineNo">572</span>   * &lt;p&gt;<a name="line.572"></a>
+<span class="sourceLineNo">573</span>   * Column is split into two fields, family and qualifier.<a name="line.573"></a>
+<span class="sourceLineNo">574</span>   * @param row row key<a name="line.574"></a>
+<span class="sourceLineNo">575</span>   * @throws IllegalArgumentException<a name="line.575"></a>
+<span class="sourceLineNo">576</span>   */<a name="line.576"></a>
+<span class="sourceLineNo">577</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.577"></a>
+<span class="sourceLineNo">578</span>      final byte [] family, final int foffset, final int flength,<a name="line.578"></a>
+<span class="sourceLineNo">579</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      final long timestamp, final Type type,<a name="line.580"></a>
+<span class="sourceLineNo">581</span>      final byte [] value, final int voffset, final int vlength) {<a name="line.581"></a>
+<span class="sourceLineNo">582</span>    this(row, roffset, rlength, family, foffset, flength, qualifier, qoffset,<a name="line.582"></a>
+<span class="sourceLineNo">583</span>      qlength, timestamp, type, value, voffset, vlength, null);<a name="line.583"></a>
+<span class="sourceLineNo">584</span>  }<a name="line.584"></a>
+<span class="sourceLineNo">585</span><a name="line.585"></a>
+<span class="sourceLineNo">586</span>  /**<a name="line.586"></a>
+<span class="sourceLineNo">587</span>   * Constructs KeyValue structure filled with specified values. Uses the provided buffer as the<a name="line.587"></a>
+<span class="sourceLineNo">588</span>   * data buffer.<a name="line.588"></a>
+<span class="sourceLineNo">589</span>   * &lt;p&gt;<a name="line.589"></a>
+<span class="sourceLineNo">590</span>   * Column is split into two fields, family and qualifier.<a name="line.590"></a>
+<span class="sourceLineNo">591</span>   *<a name="line.591"></a>
+<span class="sourceLineNo">592</span>   * @param buffer the bytes buffer to use<a name="line.592"></a>
+<span class="sourceLineNo">593</span>   * @param boffset buffer offset<a name="line.593"></a>
+<span class="sourceLineNo">594</span>   * @param row row key<a name="line.594"></a>
+<span class="sourceLineNo">595</span>   * @param roffset row offset<a name="line.595"></a>
+<span class="sourceLineNo">596</span>   * @param rlength row length<a name="line.596"></a>
+<span class="sourceLineNo">597</span>   * @param family family name<a name="line.597"></a>
+<span class="sourceLineNo">598</span>   * @param foffset family offset<a name="line.598"></a>
+<span class="sourceLineNo">599</span>   * @param flength family length<a name="line.599"></a>
+<span class="sourceLineNo">600</span>   * @param qualifier column qualifier<a name="line.600"></a>
+<span class="sourceLineNo">601</span>   * @param qoffset qualifier offset<a name="line.601"></a>
+<span class="sourceLineNo">602</span>   * @param qlength qualifier length<a name="line.602"></a>
+<span class="sourceLineNo">603</span>   * @param timestamp version timestamp<a name="line.603"></a>
+<span class="sourceLineNo">604</span>   * @param type key type<a name="line.604"></a>
+<span class="sourceLineNo">605</span>   * @param value column value<a name="line.605"></a>
+<span class="sourceLineNo">606</span>   * @param voffset value offset<a name="line.606"></a>
+<span class="sourceLineNo">607</span>   * @param vlength value length<a name="line.607"></a>
+<span class="sourceLineNo">608</span>   * @param tags non-empty list of tags or null<a name="line.608"></a>
+<span class="sourceLineNo">609</span>   * @throws IllegalArgumentException an illegal value was passed or there is insufficient space<a name="line.609"></a>
+<span class="sourceLineNo">610</span>   * remaining in the buffer<a name="line.610"></a>
+<span class="sourceLineNo">611</span>   */<a name="line.611"></a>
+<span class="sourceLineNo">612</span>  public KeyValue(byte [] buffer, final int boffset,<a name="line.612"></a>
+<span class="sourceLineNo">613</span>      final byte [] row, final int roffset, final int rlength,<a name="line.613"></a>
+<span class="sourceLineNo">614</span>      final byte [] family, final int foffset, final int flength,<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.615"></a>
+<span class="sourceLineNo">616</span>      final long timestamp, final Type type,<a name="line.616"></a>
+<span class="sourceLineNo">617</span>      final byte [] value, final int voffset, final int vlength,<a name="line.617"></a>
+<span class="sourceLineNo">618</span>      final Tag[] tags) {<a name="line.618"></a>
+<span class="sourceLineNo">619</span>     this.bytes  = buffer;<a name="line.619"></a>
+<span class="sourceLineNo">620</span>     this.length = writeByteArray(buffer, boffset,<a name="line.620"></a>
+<span class="sourceLineNo">621</span>         row, roffset, rlength,<a name="line.621"></a>
+<span class="sourceLineNo">622</span>         family, foffset, flength, qualifier, qoffset, qlength,<a name="line.622"></a>
+<span class="sourceLineNo">623</span>        timestamp, type, value, voffset, vlength, tags);<a name="line.623"></a>
+<span class="sourceLineNo">624</span>     this.offset = boffset;<a name="line.624"></a>
+<span class="sourceLineNo">625</span>   }<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">628</span>   * Constructs KeyValue structure filled with specified values.<a name="line.628"></a>
+<span class="sourceLineNo">629</span>   * &lt;p&gt;<a name="line.629"></a>
+<span class="sourceLineNo">630</span>   * Column is split into two fields, family and qualifier.<a name="line.630"></a>
+<span class="sourceLineNo">631</span>   * @param row row key<a name="line.631"></a>
+<span class="sourceLineNo">632</span>   * @param roffset row offset<a name="line.632"></a>
+<span class="sourceLineNo">633</span>   * @param rlength row length<a name="line.633"></a>
+<span class="sourceLineNo">634</span>   * @param family family name<a name="line.634"></a>
+<span class="sourceLineNo">635</span>   * @param foffset family offset<a name="line.635"></a>
+<span class="sourceLineNo">636</span>   * @param flength family length<a name="line.636"></a>
+<span class="sourceLineNo">637</span>   * @param qualifier column qualifier<a name="line.637"></a>
+<span class="sourceLineNo">638</span>   * @param qoffset qualifier offset<a name="line.638"></a>
+<span class="sourceLineNo">639</span>   * @param qlength qualifier length<a name="line.639"></a>
+<span class="sourceLineNo">640</span>   * @param timestamp version timestamp<a name="line.640"></a>
+<span class="sourceLineNo">641</span>   * @param type key type<a name="line.641"></a>
+<span class="sourceLineNo">642</span>   * @param value column value<a name="line.642"></a>
+<span class="sourceLineNo">643</span>   * @param voffset value offset<a name="line.643"></a>
+<span class="sourceLineNo">644</span>   * @param vlength value length<a name="line.644"></a>
+<span class="sourceLineNo">645</span>   * @param tags tags<a name="line.645"></a>
+<span class="sourceLineNo">646</span>   * @throws IllegalArgumentException<a name="line.646"></a>
+<span class="sourceLineNo">647</span>   */<a name="line.647"></a>
+<span class="sourceLineNo">648</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.648"></a>
+<span class="sourceLineNo">649</span>      final byte [] family, final int foffset, final int flength,<a name="line.649"></a>
+<span class="sourceLineNo">650</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.650"></a>
+<span class="sourceLineNo">651</span>      final long timestamp, final Type type,<a name="line.651"></a>
+<span class="sourceLineNo">652</span>      final byte [] value, final int voffset, final int vlength,<a name="line.652"></a>
+<span class="sourceLineNo">653</span>      final List&lt;Tag&gt; tags) {<a name="line.653"></a>
+<span class="sourceLineNo">654</span>    this.bytes = createByteArray(row, roffset, rlength,<a name="line.654"></a>
+<span class="sourceLineNo">655</span>        family, foffset, flength, qualifier, qoffset, qlength,<a name="line.655"></a>
+<span class="sourceLineNo">656</span>        timestamp, type, value, voffset, vlength, tags);<a name="line.656"></a>
+<span class="sourceLineNo">657</span>    this.length = bytes.length;<a name="line.657"></a>
+<span class="sourceLineNo">658</span>    this.offset = 0;<a name="line.658"></a>
+<span class="sourceLineNo">659</span>  }<a name="line.659"></a>
+<span class="sourceLineNo">660</span><a name="line.660"></a>
+<span class="sourceLineNo">661</span>  /**<a name="line.661"></a>
+<span class="sourceLineNo">662</span>   * @param row<a name="line.662"></a>
+<span class="sourceLineNo">663</span>   * @param roffset<a name="line.663"></a>
+<span class="sourceLineNo">664</span>   * @param rlength<a name="line.664"></a>
+<span class="sourceLineNo">665</span>   * @param family<a name="line.665"></a>
+<span class="sourceLineNo">666</span>   * @param foffset<a name="line.666"></a>
+<span class="sourceLineNo">667</span>   * @param flength<a name="line.667"></a>
+<span class="sourceLineNo">668</span>   * @param qualifier<a name="line.668"></a>
+<span class="sourceLineNo">669</span>   * @param qoffset<a name="line.669"></a>
+<span class="sourceLineNo">670</span>   * @param qlength<a name="line.670"></a>
+<span class="sourceLineNo">671</span>   * @param timestamp<a name="line.671"></a>
+<span class="sourceLineNo">672</span>   * @param type<a name="line.672"></a>
+<span class="sourceLineNo">673</span>   * @param value<a name="line.673"></a>
+<span class="sourceLineNo">674</span>   * @param voffset<a name="line.674"></a>
+<span class="sourceLineNo">675</span>   * @param vlength<a name="line.675"></a>
+<span class="sourceLineNo">676</span>   * @param tags<a name="line.676"></a>
+<span class="sourceLineNo">677</span>   */<a name="line.677"></a>
+<span class="sourceLineNo">678</span>  public KeyValue(final byte [] row, final int roffset, final int rlength,<a name="line.678"></a>
+<span class="sourceLineNo">679</span>      final byte [] family, final int foffset, final int flength,<a name="line.679"></a>
+<span class="sourceLineNo">680</span>      final byte [] qualifier, final int qoffset, final int qlength,<a name="line.680"></a>
+<span class="sourceLineNo">681</span>      final long timestamp, final Type type,<a name="line.681"></a>
+<span class="sourceLineNo">682</span>      final byte [] value, final int voffset, final int vlength,<a name="line.682"></a>
+<span class="sourceLineNo">683</span>      final byte[] tags, final int tagsOffset, final int tagsLength) {<a name="line.683"></a>
+<span class="sourceLineNo">684</span>    this.bytes = createByteArray(row, roffset, rlength,<a name="line.684"></a>
+<span class="sourceLineNo">685</span>        family, foffset, flength, qualifier, qoffset, qlength,<a name="line.685"></a>
+<span class="sourceLineNo">686</span>        timestamp, type, value, voffset, vlength, tags, tagsOffset, tagsLength);<a name="line.686"></a>
+<span class="sourceLineNo">687</span>    this.length = bytes.length;<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    this.offset = 0;<a name="line.688"></a>
+<span class="sourceLineNo">689</span>  }<a name="line.689"></a>
+<span class="sourceLineNo">690</span><a name="line.690"></a>
+<span class="sourceLineNo">691</span>  /**<a name="line.691"></a>
+<span class="sourceLineNo">692</span>   * Constructs an empty KeyValue structure, with specified sizes.<a name="line.692"></a>
+<span class="sourceLineNo">693</span>   * This can be used to partially fill up KeyValues.<a name="line.693"></a>
+<span class="sourceLineNo">694</span>   * &lt;p&gt;<a name="line.694"></a>
+<span class="sourceLineNo">695</span>   * Column is split into two fields, family and qualifier.<a name="line.695"></a>
+<span class="sourceLineNo">696</span>   * @param rlength row length<a name="line.696"></a>
+<span class="sourceLineNo">697</span>   * @param flength family length<a name="line.697"></a>
+<span class="sourceLineNo">698</span>   * @param qlength qualifier length<a name="line.698"></a>
+<span class="sourceLineNo">699</span>   * @param timestamp version timestamp<a name="line.699"></a>
+<span class="sourceLineNo">700</span>   * @param type key type<a name="line.700"></a>
+<span class="sourceLineNo">701</span>   * @param vlength value length<a name="line.701"></a>
+<span class="sourceLineNo">702</span>   * @throws IllegalArgumentException<a name="line.702"></a>
+<span class="sourceLineNo">703</span>   */<a name="line.703"></a>
+<span class="sourceLineNo">704</span>  public KeyValue(final int rlength,<a name="line.704"></a>
+<span class="sourceLineNo">705</span>      final int flength,<a name="line.705"></a>
+<span class="sourceLineNo">706</span>      final int qlength,<a name="line.706"></a>
+<span class="sourceLineNo">707</span>      final long timestamp, final Type type,<a name="line.707"></a>
+<span class="sourceLineNo">708</span>      final int vlength) {<a name="line.708"></a>
+<span class="sourceLineNo">709</span>    this(rlength, flength, qleng

<TRUNCATED>

[11/29] hbase-site git commit: Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/testdevapidocs/org/apache/hadoop/hbase/TestKeyValue.FailureCase.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/TestKeyValue.FailureCase.html b/testdevapidocs/org/apache/hadoop/hbase/TestKeyValue.FailureCase.html
new file mode 100644
index 0000000..e4655da
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/TestKeyValue.FailureCase.html
@@ -0,0 +1,389 @@
+<!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>TestKeyValue.FailureCase (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="TestKeyValue.FailureCase (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestKeyValue.FailureCase.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/TestKeyValue.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/TestLocalHBaseCluster.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/hadoop/hbase/TestKeyValue.FailureCase.html" target="_top">Frames</a></li>
+<li><a href="TestKeyValue.FailureCase.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase</div>
+<h2 title="Class TestKeyValue.FailureCase" class="title">Class TestKeyValue.FailureCase</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.TestKeyValue.FailureCase</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue</a></dd>
+</dl>
+<hr>
+<br>
+<pre>private static class <a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.626">TestKeyValue.FailureCase</a>
+extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.FailureCase.html#buf">buf</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>(package 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></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.FailureCase.html#expectedMessage">expectedMessage</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.FailureCase.html#length">length</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>(package private) int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.FailureCase.html#offset">offset</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.FailureCase.html#withTags">withTags</a></span></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.FailureCase.html#FailureCase-byte:A-int-int-boolean-java.lang.String-">FailureCase</a></span>(byte[]&nbsp;buf,
+           int&nbsp;offset,
+           int&nbsp;length,
+           boolean&nbsp;withTags,
+           <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;expectedMessage)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/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/TestKeyValue.FailureCase.html#getExpectedMessage--">getExpectedMessage</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.FailureCase.html#toString--">toString</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#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="buf">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>buf</h4>
+<pre>byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.FailureCase.html#line.627">buf</a></pre>
+</li>
+</ul>
+<a name="offset">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>offset</h4>
+<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.FailureCase.html#line.628">offset</a></pre>
+</li>
+</ul>
+<a name="length">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>length</h4>
+<pre>int <a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.FailureCase.html#line.629">length</a></pre>
+</li>
+</ul>
+<a name="withTags">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>withTags</h4>
+<pre>boolean <a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.FailureCase.html#line.630">withTags</a></pre>
+</li>
+</ul>
+<a name="expectedMessage">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>expectedMessage</h4>
+<pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.FailureCase.html#line.631">expectedMessage</a></pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="FailureCase-byte:A-int-int-boolean-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>FailureCase</h4>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.FailureCase.html#line.633">FailureCase</a>(byte[]&nbsp;buf,
+                   int&nbsp;offset,
+                   int&nbsp;length,
+                   boolean&nbsp;withTags,
+                   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;expectedMessage)</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="toString--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>toString</h4>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.FailureCase.html#line.643">toString</a>()</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="getExpectedMessage--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getExpectedMessage</h4>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.FailureCase.html#line.649">getExpectedMessage</a>()</pre>
+</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/TestKeyValue.FailureCase.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/TestKeyValue.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/TestLocalHBaseCluster.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/hadoop/hbase/TestKeyValue.FailureCase.html" target="_top">Frames</a></li>
+<li><a href="TestKeyValue.FailureCase.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/testdevapidocs/org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html b/testdevapidocs/org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html
deleted file mode 100644
index aaa7429..0000000
--- a/testdevapidocs/org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html
+++ /dev/null
@@ -1,676 +0,0 @@
-<!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>TestKeyValue.MockKeyValue (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="TestKeyValue.MockKeyValue (Apache HBase 3.0.0-SNAPSHOT Test API)";
-        }
-    }
-    catch(err) {
-    }
-//-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10};
-var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
-var altColor = "altColor";
-var rowColor = "rowColor";
-var tableTab = "tableTab";
-var activeTableTab = "activeTableTab";
-</script>
-<noscript>
-<div>JavaScript is disabled on your browser.</div>
-</noscript>
-<!-- ========= START OF TOP NAVBAR ======= -->
-<div class="topNav"><a name="navbar.top">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.top.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../overview-summary.html">Overview</a></li>
-<li><a href="package-summary.html">Package</a></li>
-<li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/TestKeyValue.MockKeyValue.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/TestKeyValue.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../org/apache/hadoop/hbase/TestLocalHBaseCluster.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../index.html?org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" target="_top">Frames</a></li>
-<li><a href="TestKeyValue.MockKeyValue.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_top");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&nbsp;</li>
-<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail:&nbsp;</li>
-<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.detail">Method</a></li>
-</ul>
-</div>
-<a name="skip.navbar.top">
-<!--   -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-<!-- ======== START OF CLASS DATA ======== -->
-<div class="header">
-<div class="subTitle">org.apache.hadoop.hbase</div>
-<h2 title="Class TestKeyValue.MockKeyValue" class="title">Class TestKeyValue.MockKeyValue</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.TestKeyValue.MockKeyValue</li>
-</ul>
-</li>
-</ul>
-<div class="description">
-<ul class="blockList">
-<li class="blockList">
-<dl>
-<dt>All Implemented Interfaces:</dt>
-<dd>org.apache.hadoop.hbase.Cell</dd>
-</dl>
-<dl>
-<dt>Enclosing class:</dt>
-<dd><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue</a></dd>
-</dl>
-<hr>
-<br>
-<pre>private static class <a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.613">TestKeyValue.MockKeyValue</a>
-extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
-implements org.apache.hadoop.hbase.Cell</pre>
-</li>
-</ul>
-</div>
-<div class="summary">
-<ul class="blockList">
-<li class="blockList">
-<!-- ======== NESTED CLASS SUMMARY ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="nested.class.summary">
-<!--   -->
-</a>
-<h3>Nested Class Summary</h3>
-<ul class="blockList">
-<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.Cell">
-<!--   -->
-</a>
-<h3>Nested classes/interfaces inherited from interface&nbsp;org.apache.hadoop.hbase.Cell</h3>
-<code>org.apache.hadoop.hbase.Cell.Type</code></li>
-</ul>
-</li>
-</ul>
-<!-- =========== FIELD SUMMARY =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="field.summary">
-<!--   -->
-</a>
-<h3>Field Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
-<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Field and Description</th>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>private org.apache.hadoop.hbase.KeyValue</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#kv">kv</a></span></code>&nbsp;</td>
-</tr>
-</table>
-</li>
-</ul>
-<!-- ======== CONSTRUCTOR SUMMARY ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="constructor.summary">
-<!--   -->
-</a>
-<h3>Constructor Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
-<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colOne" scope="col">Constructor and Description</th>
-</tr>
-<tr class="altColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#MockKeyValue-org.apache.hadoop.hbase.KeyValue-">MockKeyValue</a></span>(org.apache.hadoop.hbase.KeyValue&nbsp;kv)</code>&nbsp;</td>
-</tr>
-</table>
-</li>
-</ul>
-<!-- ========== METHOD SUMMARY =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="method.summary">
-<!--   -->
-</a>
-<h3>Method Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
-<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<tr id="i0" class="altColor">
-<td class="colFirst"><code>byte[]</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getFamilyArray--">getFamilyArray</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i1" class="rowColor">
-<td class="colFirst"><code>byte</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getFamilyLength--">getFamilyLength</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i2" class="altColor">
-<td class="colFirst"><code>int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getFamilyOffset--">getFamilyOffset</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i3" class="rowColor">
-<td class="colFirst"><code>byte[]</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getQualifierArray--">getQualifierArray</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i4" class="altColor">
-<td class="colFirst"><code>int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getQualifierLength--">getQualifierLength</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i5" class="rowColor">
-<td class="colFirst"><code>int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getQualifierOffset--">getQualifierOffset</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i6" class="altColor">
-<td class="colFirst"><code>byte[]</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getRowArray--">getRowArray</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i7" class="rowColor">
-<td class="colFirst"><code>short</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getRowLength--">getRowLength</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i8" class="altColor">
-<td class="colFirst"><code>int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getRowOffset--">getRowOffset</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i9" class="rowColor">
-<td class="colFirst"><code>long</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getSequenceId--">getSequenceId</a></span>()</code>
-<div class="block">used to achieve atomic operations in the memstore.</div>
-</td>
-</tr>
-<tr id="i10" class="altColor">
-<td class="colFirst"><code>byte[]</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getTagsArray--">getTagsArray</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i11" class="rowColor">
-<td class="colFirst"><code>int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getTagsLength--">getTagsLength</a></span>()</code>
-<div class="block">This returns the total length of the tag bytes</div>
-</td>
-</tr>
-<tr id="i12" class="altColor">
-<td class="colFirst"><code>int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getTagsOffset--">getTagsOffset</a></span>()</code>
-<div class="block">This returns the offset where the tag actually starts.</div>
-</td>
-</tr>
-<tr id="i13" class="rowColor">
-<td class="colFirst"><code>long</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getTimestamp--">getTimestamp</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i14" class="altColor">
-<td class="colFirst"><code>byte</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getTypeByte--">getTypeByte</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i15" class="rowColor">
-<td class="colFirst"><code>byte[]</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getValueArray--">getValueArray</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i16" class="altColor">
-<td class="colFirst"><code>int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getValueLength--">getValueLength</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i17" class="rowColor">
-<td class="colFirst"><code>int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#getValueOffset--">getValueOffset</a></span>()</code>&nbsp;</td>
-</tr>
-</table>
-<ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
-<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
-</ul>
-<ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.Cell">
-<!--   -->
-</a>
-<h3>Methods inherited from interface&nbsp;org.apache.hadoop.hbase.Cell</h3>
-<code>getType</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="kv">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>kv</h4>
-<pre>private final&nbsp;org.apache.hadoop.hbase.KeyValue <a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#line.614">kv</a></pre>
-</li>
-</ul>
-</li>
-</ul>
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="constructor.detail">
-<!--   -->
-</a>
-<h3>Constructor Detail</h3>
-<a name="MockKeyValue-org.apache.hadoop.hbase.KeyValue-">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>MockKeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#line.616">MockKeyValue</a>(org.apache.hadoop.hbase.KeyValue&nbsp;kv)</pre>
-</li>
-</ul>
-</li>
-</ul>
-<!-- ============ METHOD DETAIL ========== -->
-<ul class="blockList">
-<li class="blockList"><a name="method.detail">
-<!--   -->
-</a>
-<h3>Method Detail</h3>
-<a name="getTagsOffset--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getTagsOffset</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#line.624">getTagsOffset</a>()</pre>
-<div class="block">This returns the offset where the tag actually starts.</div>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code>getTagsOffset</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Cell</code></dd>
-</dl>
-</li>
-</ul>
-<a name="getSequenceId--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getSequenceId</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#line.632">getSequenceId</a>()</pre>
-<div class="block">used to achieve atomic operations in the memstore.</div>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code>getSequenceId</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Cell</code></dd>
-</dl>
-</li>
-</ul>
-<a name="getTagsLength--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getTagsLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#line.640">getTagsLength</a>()</pre>
-<div class="block">This returns the total length of the tag bytes</div>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code>getTagsLength</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Cell</code></dd>
-</dl>
-</li>
-</ul>
-<a name="getTimestamp--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getTimestamp</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#line.649">getTimestamp</a>()</pre>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code>getTimestamp</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Cell</code></dd>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>Timestamp</dd>
-</dl>
-</li>
-</ul>
-<a name="getTypeByte--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getTypeByte</h4>
-<pre>public&nbsp;byte&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#line.657">getTypeByte</a>()</pre>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code>getTypeByte</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Cell</code></dd>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>KeyValue.TYPE byte representation</dd>
-</dl>
-</li>
-</ul>
-<a name="getValueArray--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getValueArray</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#line.666">getValueArray</a>()</pre>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code>getValueArray</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Cell</code></dd>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>the backing array of the entire KeyValue (all KeyValue fields are
-         in a single array)</dd>
-</dl>
-</li>
-</ul>
-<a name="getValueOffset--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getValueOffset</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#line.674">getValueOffset</a>()</pre>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code>getValueOffset</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Cell</code></dd>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>the value offset</dd>
-</dl>
-</li>
-</ul>
-<a name="getValueLength--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getValueLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#line.682">getValueLength</a>()</pre>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code>getValueLength</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Cell</code></dd>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>Value length</dd>
-</dl>
-</li>
-</ul>
-<a name="getRowArray--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getRowArray</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#line.691">getRowArray</a>()</pre>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code>getRowArray</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Cell</code></dd>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>the backing array of the entire KeyValue (all KeyValue fields are
-         in a single array)</dd>
-</dl>
-</li>
-</ul>
-<a name="getRowOffset--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getRowOffset</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#line.699">getRowOffset</a>()</pre>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code>getRowOffset</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Cell</code></dd>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>Row offset</dd>
-</dl>
-</li>
-</ul>
-<a name="getRowLength--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getRowLength</h4>
-<pre>public&nbsp;short&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#line.707">getRowLength</a>()</pre>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code>getRowLength</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Cell</code></dd>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>Row length</dd>
-</dl>
-</li>
-</ul>
-<a name="getFamilyArray--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getFamilyArray</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#line.716">getFamilyArray</a>()</pre>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code>getFamilyArray</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Cell</code></dd>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>the backing array of the entire KeyValue (all KeyValue fields are
-         in a single array)</dd>
-</dl>
-</li>
-</ul>
-<a name="getFamilyOffset--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getFamilyOffset</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#line.724">getFamilyOffset</a>()</pre>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code>getFamilyOffset</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Cell</code></dd>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>Family offset</dd>
-</dl>
-</li>
-</ul>
-<a name="getFamilyLength--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getFamilyLength</h4>
-<pre>public&nbsp;byte&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#line.732">getFamilyLength</a>()</pre>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code>getFamilyLength</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Cell</code></dd>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>Family length</dd>
-</dl>
-</li>
-</ul>
-<a name="getQualifierArray--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getQualifierArray</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#line.741">getQualifierArray</a>()</pre>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code>getQualifierArray</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Cell</code></dd>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>the backing array of the entire KeyValue (all KeyValue fields are
-         in a single array)</dd>
-</dl>
-</li>
-</ul>
-<a name="getQualifierOffset--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getQualifierOffset</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#line.749">getQualifierOffset</a>()</pre>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code>getQualifierOffset</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Cell</code></dd>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>Qualifier offset</dd>
-</dl>
-</li>
-</ul>
-<a name="getQualifierLength--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getQualifierLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#line.757">getQualifierLength</a>()</pre>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code>getQualifierLength</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Cell</code></dd>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>Qualifier length</dd>
-</dl>
-</li>
-</ul>
-<a name="getTagsArray--">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>getTagsArray</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html#line.766">getTagsArray</a>()</pre>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code>getTagsArray</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.Cell</code></dd>
-<dt><span class="returnLabel">Returns:</span></dt>
-<dd>the backing array of the entire KeyValue (all KeyValue fields are
-         in a single array)</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/TestKeyValue.MockKeyValue.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/TestKeyValue.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../org/apache/hadoop/hbase/TestLocalHBaseCluster.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../index.html?org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" target="_top">Frames</a></li>
-<li><a href="TestKeyValue.MockKeyValue.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_bottom");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&nbsp;</li>
-<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail:&nbsp;</li>
-<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
-<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.detail">Method</a></li>
-</ul>
-</div>
-<a name="skip.navbar.bottom">
-<!--   -->
-</a></div>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/testdevapidocs/org/apache/hadoop/hbase/TestKeyValue.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/TestKeyValue.html b/testdevapidocs/org/apache/hadoop/hbase/TestKeyValue.html
index 89fab6e..87a9064 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/TestKeyValue.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/TestKeyValue.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../org/apache/hadoop/hbase/TestJMXListener.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.FailureCase.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../index.html?org/apache/hadoop/hbase/TestKeyValue.html" target="_top">Frames</a></li>
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.48">TestKeyValue</a>
+<pre>public class <a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.50">TestKeyValue</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>
@@ -131,7 +131,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private static class&nbsp;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase">TestKeyValue.MockKeyValue</a></span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.FailureCase.html" title="class in org.apache.hadoop.hbase">TestKeyValue.FailureCase</a></span></code>&nbsp;</td>
 </tr>
 </table>
 </li>
@@ -247,72 +247,76 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </tr>
 <tr id="i7" class="rowColor">
 <td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.html#testCheckKeyValueBytesFailureCase--">testCheckKeyValueBytesFailureCase</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.html#testColumnCompare_prefix--">testColumnCompare_prefix</a></span>()</code>
 <div class="block">Test a corner case when the family qualifier is a prefix of the
   column qualifier.</div>
 </td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.html#testColumnCompare--">testColumnCompare</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.html#testCompareWithoutRow--">testCompareWithoutRow</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.html#testCreateKeyOnly--">testCreateKeyOnly</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.html#testCreateKeyValueFromKey--">testCreateKeyValueFromKey</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i12" class="altColor">
+<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/TestKeyValue.html#testEqualsAndHashCode--">testEqualsAndHashCode</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.html#testFirstLastOnRow--">testFirstLastOnRow</a></span>()</code>&nbsp;</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/TestKeyValue.html#testGetTimestamp--">testGetTimestamp</a></span>()</code>
 <div class="block">Tests that getTimestamp() does always return the proper timestamp, even after updating it.</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/TestKeyValue.html#testKeyValueBorderCases--">testKeyValueBorderCases</a></span>()</code>
 <div class="block">Tests cases where rows keys have characters below the ','.</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/TestKeyValue.html#testKeyValueSerialization--">testKeyValueSerialization</a></span>()</code>&nbsp;</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/TestKeyValue.html#testKVsWithTags--">testKVsWithTags</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i18" class="altColor">
+<tr id="i19" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.html#testMetaComparatorTableKeysWithCommaOk--">testMetaComparatorTableKeysWithCommaOk</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i19" class="rowColor">
+<tr id="i20" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.html#testMetaKeyComparator--">testMetaKeyComparator</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i20" class="altColor">
+<tr id="i21" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.html#testMoreComparisons--">testMoreComparisons</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i21" class="rowColor">
+<tr id="i22" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.html#testPlainCompare--">testPlainCompare</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i22" class="altColor">
+<tr id="i23" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.html#testStackedUpKeyValue--">testStackedUpKeyValue</a></span>()</code>&nbsp;</td>
 </tr>
@@ -344,7 +348,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CLASS_RULE</h4>
-<pre>public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.50">CLASS_RULE</a></pre>
+<pre>public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.52">CLASS_RULE</a></pre>
 </li>
 </ul>
 <a name="LOG">
@@ -353,7 +357,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.52">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.54">LOG</a></pre>
 </li>
 </ul>
 <a name="rowA">
@@ -362,7 +366,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>rowA</h4>
-<pre>private final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.285">rowA</a></pre>
+<pre>private final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.287">rowA</a></pre>
 </li>
 </ul>
 <a name="rowB">
@@ -371,7 +375,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>rowB</h4>
-<pre>private final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.286">rowB</a></pre>
+<pre>private final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.288">rowB</a></pre>
 </li>
 </ul>
 <a name="family">
@@ -380,7 +384,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>family</h4>
-<pre>private final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.288">family</a></pre>
+<pre>private final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.290">family</a></pre>
 </li>
 </ul>
 <a name="qualA">
@@ -389,7 +393,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>qualA</h4>
-<pre>private final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.289">qualA</a></pre>
+<pre>private final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.291">qualA</a></pre>
 </li>
 </ul>
 <a name="qualB">
@@ -398,7 +402,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>qualB</h4>
-<pre>private final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.290">qualB</a></pre>
+<pre>private final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.292">qualB</a></pre>
 </li>
 </ul>
 </li>
@@ -415,7 +419,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestKeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.48">TestKeyValue</a>()</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.50">TestKeyValue</a>()</pre>
 </li>
 </ul>
 </li>
@@ -432,7 +436,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testColumnCompare</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.55">testColumnCompare</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.57">testColumnCompare</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>
@@ -446,7 +450,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testColumnCompare_prefix</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.79">testColumnCompare_prefix</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.81">testColumnCompare_prefix</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 a corner case when the family qualifier is a prefix of the
   column qualifier.</div>
@@ -462,7 +466,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testBasics</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.91">testBasics</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.93">testBasics</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>
@@ -476,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>check</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.107">check</a>(byte[]&nbsp;row,
+<pre>private&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.109">check</a>(byte[]&nbsp;row,
                    byte[]&nbsp;family,
                    byte[]&nbsp;qualifier,
                    long&nbsp;timestamp,
@@ -489,7 +493,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testPlainCompare</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.118">testPlainCompare</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.120">testPlainCompare</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>
@@ -503,7 +507,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testMoreComparisons</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.146">testMoreComparisons</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.148">testMoreComparisons</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>
@@ -517,7 +521,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testMetaComparatorTableKeysWithCommaOk</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.175">testMetaComparatorTableKeysWithCommaOk</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.177">testMetaComparatorTableKeysWithCommaOk</a>()</pre>
 </li>
 </ul>
 <a name="testKeyValueBorderCases--">
@@ -526,7 +530,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testKeyValueBorderCases</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.191">testKeyValueBorderCases</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.193">testKeyValueBorderCases</a>()
                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Tests cases where rows keys have characters below the ','.
  See HBASE-832</div>
@@ -542,7 +546,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>metacomparisons</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.208">metacomparisons</a>(org.apache.hadoop.hbase.CellComparatorImpl&nbsp;c)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.210">metacomparisons</a>(org.apache.hadoop.hbase.CellComparatorImpl&nbsp;c)</pre>
 </li>
 </ul>
 <a name="comparisons-org.apache.hadoop.hbase.CellComparatorImpl-">
@@ -551,7 +555,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>comparisons</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.225">comparisons</a>(org.apache.hadoop.hbase.CellComparatorImpl&nbsp;c)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.227">comparisons</a>(org.apache.hadoop.hbase.CellComparatorImpl&nbsp;c)</pre>
 </li>
 </ul>
 <a name="testBinaryKeys--">
@@ -560,7 +564,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testBinaryKeys</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.242">testBinaryKeys</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.244">testBinaryKeys</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>
@@ -574,7 +578,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testStackedUpKeyValue</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.278">testStackedUpKeyValue</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.280">testStackedUpKeyValue</a>()</pre>
 </li>
 </ul>
 <a name="assertKVLess-org.apache.hadoop.hbase.CellComparator-org.apache.hadoop.hbase.KeyValue-org.apache.hadoop.hbase.KeyValue-">
@@ -583,7 +587,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>assertKVLess</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.292">assertKVLess</a>(org.apache.hadoop.hbase.CellComparator&nbsp;c,
+<pre>private&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.294">assertKVLess</a>(org.apache.hadoop.hbase.CellComparator&nbsp;c,
                           org.apache.hadoop.hbase.KeyValue&nbsp;less,
                           org.apache.hadoop.hbase.KeyValue&nbsp;greater)</pre>
 </li>
@@ -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>assertKVLessWithoutRow</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.301">assertKVLessWithoutRow</a>(org.apache.hadoop.hbase.CellComparator&nbsp;c,
+<pre>private&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.303">assertKVLessWithoutRow</a>(org.apache.hadoop.hbase.CellComparator&nbsp;c,
                                     int&nbsp;common,
                                     org.apache.hadoop.hbase.KeyValue&nbsp;less,
                                     org.apache.hadoop.hbase.KeyValue&nbsp;greater)</pre>
@@ -606,7 +610,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testCompareWithoutRow</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.310">testCompareWithoutRow</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.312">testCompareWithoutRow</a>()</pre>
 </li>
 </ul>
 <a name="testFirstLastOnRow--">
@@ -615,7 +619,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testFirstLastOnRow</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.358">testFirstLastOnRow</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.360">testFirstLastOnRow</a>()</pre>
 </li>
 </ul>
 <a name="testCreateKeyOnly--">
@@ -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>testCreateKeyOnly</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.405">testCreateKeyOnly</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.407">testCreateKeyOnly</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>
@@ -638,7 +642,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testCreateKeyValueFromKey</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.427">testCreateKeyValueFromKey</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.429">testCreateKeyValueFromKey</a>()</pre>
 </li>
 </ul>
 <a name="testGetTimestamp--">
@@ -647,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>testGetTimestamp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.451">testGetTimestamp</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.453">testGetTimestamp</a>()</pre>
 <div class="block">Tests that getTimestamp() does always return the proper timestamp, even after updating it.
  See HBASE-6265.</div>
 </li>
@@ -658,7 +662,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testKVsWithTags</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.463">testKVsWithTags</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.465">testKVsWithTags</a>()</pre>
 </li>
 </ul>
 <a name="testMetaKeyComparator--">
@@ -667,7 +671,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testMetaKeyComparator</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.527">testMetaKeyComparator</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.529">testMetaKeyComparator</a>()</pre>
 </li>
 </ul>
 <a name="testEqualsAndHashCode--">
@@ -676,7 +680,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testEqualsAndHashCode</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.573">testEqualsAndHashCode</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.575">testEqualsAndHashCode</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>
@@ -687,10 +691,10 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <a name="testKeyValueSerialization--">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>testKeyValueSerialization</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.592">testKeyValueSerialization</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.594">testKeyValueSerialization</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>
@@ -698,6 +702,20 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
+<a name="testCheckKeyValueBytesFailureCase--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testCheckKeyValueBytesFailureCase</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestKeyValue.html#line.655">testCheckKeyValueBytesFailureCase</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>
@@ -727,7 +745,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../org/apache/hadoop/hbase/TestJMXListener.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.FailureCase.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../index.html?org/apache/hadoop/hbase/TestKeyValue.html" target="_top">Frames</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/testdevapidocs/org/apache/hadoop/hbase/TestLocalHBaseCluster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/TestLocalHBaseCluster.html b/testdevapidocs/org/apache/hadoop/hbase/TestLocalHBaseCluster.html
index 1d6fbf6..01214f9 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/TestLocalHBaseCluster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/TestLocalHBaseCluster.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.FailureCase.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../org/apache/hadoop/hbase/TestLocalHBaseCluster.MyHMaster.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -317,7 +317,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/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/TestKeyValue.FailureCase.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../org/apache/hadoop/hbase/TestLocalHBaseCluster.MyHMaster.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
index 6af42fe..2d9b60f 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -146,8 +146,8 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/TestIncrementalBackupMergeWithFailures.FailurePhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestIncrementalBackupMergeWithFailures.FailurePhase</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/TestBackupDeleteWithFailures.Failure.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestBackupDeleteWithFailures.Failure</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/TestIncrementalBackupMergeWithFailures.FailurePhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestIncrementalBackupMergeWithFailures.FailurePhase</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/testdevapidocs/org/apache/hadoop/hbase/class-use/TestKeyValue.FailureCase.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/class-use/TestKeyValue.FailureCase.html b/testdevapidocs/org/apache/hadoop/hbase/class-use/TestKeyValue.FailureCase.html
new file mode 100644
index 0000000..9bfec7a
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/TestKeyValue.FailureCase.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.TestKeyValue.FailureCase (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.TestKeyValue.FailureCase (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/TestKeyValue.FailureCase.html" title="class in org.apache.hadoop.hbase">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/class-use/TestKeyValue.FailureCase.html" target="_top">Frames</a></li>
+<li><a href="TestKeyValue.FailureCase.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.TestKeyValue.FailureCase" class="title">Uses of Class<br>org.apache.hadoop.hbase.TestKeyValue.FailureCase</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.TestKeyValue.FailureCase</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/TestKeyValue.FailureCase.html" title="class in org.apache.hadoop.hbase">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/class-use/TestKeyValue.FailureCase.html" target="_top">Frames</a></li>
+<li><a href="TestKeyValue.FailureCase.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>


[09/29] hbase-site git commit: Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/testdevapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/overview-tree.html b/testdevapidocs/overview-tree.html
index 18864af..ee46588 100644
--- a/testdevapidocs/overview-tree.html
+++ b/testdevapidocs/overview-tree.html
@@ -3073,7 +3073,7 @@
 <li type="circle">org.apache.hadoop.hbase.io.crypto.<a href="org/apache/hadoop/hbase/io/crypto/TestKeyProvider.html" title="class in org.apache.hadoop.hbase.io.crypto"><span class="typeNameLink">TestKeyProvider</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.crypto.<a href="org/apache/hadoop/hbase/io/crypto/TestKeyStoreKeyProvider.html" title="class in org.apache.hadoop.hbase.io.crypto"><span class="typeNameLink">TestKeyStoreKeyProvider</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">TestKeyValue</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.MockKeyValue.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">TestKeyValue.MockKeyValue</span></a> (implements org.apache.hadoop.hbase.Cell)</li>
+<li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestKeyValue.FailureCase.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">TestKeyValue.FailureCase</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.codec.<a href="org/apache/hadoop/hbase/codec/TestKeyValueCodec.html" title="class in org.apache.hadoop.hbase.codec"><span class="typeNameLink">TestKeyValueCodec</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.codec.<a href="org/apache/hadoop/hbase/codec/TestKeyValueCodecWithTags.html" title="class in org.apache.hadoop.hbase.codec"><span class="typeNameLink">TestKeyValueCodecWithTags</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/TestLazyDataBlockDecompression.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">TestLazyDataBlockDecompression</span></a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/testdevapidocs/src-html/org/apache/hadoop/hbase/TestKeyValue.FailureCase.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/TestKeyValue.FailureCase.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/TestKeyValue.FailureCase.html
new file mode 100644
index 0000000..0d49c9f
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/TestKeyValue.FailureCase.html
@@ -0,0 +1,815 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> *<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
+<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
+<span class="sourceLineNo">012</span> *<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
+<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
+<span class="sourceLineNo">018</span> */<a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.junit.Assert.assertArrayEquals;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.junit.Assert.assertEquals;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.junit.Assert.assertFalse;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.junit.Assert.assertNotEquals;<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.assertTrue;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import static org.junit.Assert.fail;<a name="line.27"></a>
+<span class="sourceLineNo">028</span><a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.io.ByteArrayInputStream;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.io.ByteArrayOutputStream;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.io.DataInputStream;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.io.DataOutputStream;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.io.IOException;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.Collections;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.Iterator;<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.Set;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.TreeSet;<a name="line.38"></a>
+<span class="sourceLineNo">039</span><a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.testclassification.SmallTests;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.util.ByteBufferUtils;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.junit.ClassRule;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.junit.Test;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.junit.experimental.categories.Category;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.slf4j.Logger;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.slf4j.LoggerFactory;<a name="line.47"></a>
+<span class="sourceLineNo">048</span><a name="line.48"></a>
+<span class="sourceLineNo">049</span>@Category(SmallTests.class)<a name="line.49"></a>
+<span class="sourceLineNo">050</span>public class TestKeyValue {<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  @ClassRule<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.52"></a>
+<span class="sourceLineNo">053</span>  HBaseClassTestRule.forClass(TestKeyValue.class);<a name="line.53"></a>
+<span class="sourceLineNo">054</span>  private static final Logger LOG = LoggerFactory.getLogger(TestKeyValue.class);<a name="line.54"></a>
+<span class="sourceLineNo">055</span><a name="line.55"></a>
+<span class="sourceLineNo">056</span>  @Test<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  public void testColumnCompare() throws Exception {<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    final byte [] a = Bytes.toBytes("aaa");<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    byte [] family1 = Bytes.toBytes("abc");<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    byte [] qualifier1 = Bytes.toBytes("def");<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    byte [] family2 = Bytes.toBytes("abcd");<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    byte [] qualifier2 = Bytes.toBytes("ef");<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span>    KeyValue aaa = new KeyValue(a, family1, qualifier1, 0L, KeyValue.Type.Put, a);<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    assertFalse(CellUtil.matchingColumn(aaa, family2, qualifier2));<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    assertTrue(CellUtil.matchingColumn(aaa, family1, qualifier1));<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    aaa = new KeyValue(a, family2, qualifier2, 0L, KeyValue.Type.Put, a);<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    assertFalse(CellUtil.matchingColumn(aaa, family1, qualifier1));<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    assertTrue(CellUtil.matchingColumn(aaa, family2,qualifier2));<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    byte [] nullQualifier = new byte[0];<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    aaa = new KeyValue(a, family1, nullQualifier, 0L, KeyValue.Type.Put, a);<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    assertTrue(CellUtil.matchingColumn(aaa, family1,null));<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    assertFalse(CellUtil.matchingColumn(aaa, family2,qualifier2));<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  }<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>  /**<a name="line.76"></a>
+<span class="sourceLineNo">077</span>   * Test a corner case when the family qualifier is a prefix of the<a name="line.77"></a>
+<span class="sourceLineNo">078</span>   *  column qualifier.<a name="line.78"></a>
+<span class="sourceLineNo">079</span>   */<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  @Test<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  public void testColumnCompare_prefix() throws Exception {<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    final byte [] a = Bytes.toBytes("aaa");<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    byte [] family1 = Bytes.toBytes("abc");<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    byte [] qualifier1 = Bytes.toBytes("def");<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    byte [] family2 = Bytes.toBytes("ab");<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    byte [] qualifier2 = Bytes.toBytes("def");<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>    KeyValue aaa = new KeyValue(a, family1, qualifier1, 0L, KeyValue.Type.Put, a);<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    assertFalse(CellUtil.matchingColumn(aaa, family2, qualifier2));<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>  @Test<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  public void testBasics() throws Exception {<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    LOG.info("LOWKEY: " + KeyValue.LOWESTKEY.toString());<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    String name = "testBasics";<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    check(Bytes.toBytes(name),<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      Bytes.toBytes(name), Bytes.toBytes(name), 1,<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      Bytes.toBytes(name));<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    // Test empty value and empty column -- both should work. (not empty fam)<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    check(Bytes.toBytes(name), Bytes.toBytes(name), null, 1, null);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    check(HConstants.EMPTY_BYTE_ARRAY, Bytes.toBytes(name), null, 1, null);<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    // empty qual is equivalent to null qual<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    assertEquals(<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      new KeyValue(Bytes.toBytes("rk"), Bytes.toBytes("fam"), null, 1, (byte[]) null),<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      new KeyValue(Bytes.toBytes("rk"), Bytes.toBytes("fam"),<a name="line.105"></a>
+<span class="sourceLineNo">106</span>        HConstants.EMPTY_BYTE_ARRAY, 1, (byte[]) null));<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>  private void check(final byte [] row, final byte [] family, byte [] qualifier,<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    final long timestamp, final byte [] value) {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    KeyValue kv = new KeyValue(row, family, qualifier, timestamp, value);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    assertTrue(Bytes.compareTo(kv.getRowArray(), kv.getRowOffset(), kv.getRowLength(), row, 0,<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      row.length) == 0);<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    assertTrue(CellUtil.matchingColumn(kv, family, qualifier));<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    // Call toString to make sure it works.<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    LOG.info(kv.toString());<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  }<a name="line.117"></a>
+<span class="sourceLineNo">118</span><a name="line.118"></a>
+<span class="sourceLineNo">119</span>  @Test<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  public void testPlainCompare() throws Exception {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    final byte [] a = Bytes.toBytes("aaa");<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    final byte [] b = Bytes.toBytes("bbb");<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    final byte [] fam = Bytes.toBytes("col");<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    final byte [] qf = Bytes.toBytes("umn");<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    KeyValue aaa = new KeyValue(a, fam, qf, a);<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    KeyValue bbb = new KeyValue(b, fam, qf, b);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(aaa, bbb) &lt; 0);<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(bbb, aaa) &gt; 0);<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    // Compare breaks if passed same ByteBuffer as both left and right arguments.<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(bbb, bbb) == 0);<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(aaa, aaa) == 0);<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    // Do compare with different timestamps.<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    aaa = new KeyValue(a, fam, qf, 1, a);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    bbb = new KeyValue(a, fam, qf, 2, a);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(aaa, bbb) &gt; 0);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(bbb, aaa) &lt; 0);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(aaa, aaa) == 0);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    // Do compare with different types.  Higher numbered types -- Delete<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    // should sort ahead of lower numbers; i.e. Put<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    aaa = new KeyValue(a, fam, qf, 1, KeyValue.Type.Delete, a);<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    bbb = new KeyValue(a, fam, qf, 1, a);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(aaa, bbb) &lt; 0);<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(bbb, aaa) &gt; 0);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(aaa, aaa) == 0);<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  }<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>  @Test<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  public void testMoreComparisons() throws Exception {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    long now = System.currentTimeMillis();<a name="line.149"></a>
+<span class="sourceLineNo">150</span><a name="line.150"></a>
+<span class="sourceLineNo">151</span>    // Meta compares<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    KeyValue aaa = new KeyValue(<a name="line.152"></a>
+<span class="sourceLineNo">153</span>        Bytes.toBytes("TestScanMultipleVersions,row_0500,1236020145502"), now);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    KeyValue bbb = new KeyValue(<a name="line.154"></a>
+<span class="sourceLineNo">155</span>        Bytes.toBytes("TestScanMultipleVersions,,99999999999999"), now);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    CellComparator c = CellComparatorImpl.META_COMPARATOR;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    assertTrue(c.compare(bbb, aaa) &lt; 0);<a name="line.157"></a>
+<span class="sourceLineNo">158</span><a name="line.158"></a>
+<span class="sourceLineNo">159</span>    KeyValue aaaa = new KeyValue(Bytes.toBytes("TestScanMultipleVersions,,1236023996656"),<a name="line.159"></a>
+<span class="sourceLineNo">160</span>        Bytes.toBytes("info"), Bytes.toBytes("regioninfo"), 1236024396271L,<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        (byte[])null);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    assertTrue(c.compare(aaaa, bbb) &lt; 0);<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>    KeyValue x = new KeyValue(Bytes.toBytes("TestScanMultipleVersions,row_0500,1236034574162"),<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        Bytes.toBytes("info"), Bytes.toBytes(""), 9223372036854775807L,<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        (byte[])null);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    KeyValue y = new KeyValue(Bytes.toBytes("TestScanMultipleVersions,row_0500,1236034574162"),<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        Bytes.toBytes("info"), Bytes.toBytes("regioninfo"), 1236034574912L,<a name="line.168"></a>
+<span class="sourceLineNo">169</span>        (byte[])null);<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    assertTrue(c.compare(x, y) &lt; 0);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    comparisons(CellComparatorImpl.META_COMPARATOR);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    comparisons(CellComparatorImpl.COMPARATOR);<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    metacomparisons(CellComparatorImpl.META_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>  @Test<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  public void testMetaComparatorTableKeysWithCommaOk() {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    CellComparator c = CellComparatorImpl.META_COMPARATOR;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    long now = System.currentTimeMillis();<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    // meta keys values are not quite right.  A users can enter illegal values<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    // from shell when scanning meta.<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    KeyValue a = new KeyValue(Bytes.toBytes("table,key,with,commas1,1234"), now);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    KeyValue b = new KeyValue(Bytes.toBytes("table,key,with,commas2,0123"), now);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    assertTrue(c.compare(a, b) &lt; 0);<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>   * Tests cases where rows keys have characters below the ','.<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   * See HBASE-832<a name="line.189"></a>
+<span class="sourceLineNo">190</span>   * @throws IOException<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   */<a name="line.191"></a>
+<span class="sourceLineNo">192</span>  @Test<a name="line.192"></a>
+<span class="sourceLineNo">193</span>  public void testKeyValueBorderCases() throws IOException {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    // % sorts before , so if we don't do special comparator, rowB would<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    // come before rowA.<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    KeyValue rowA = new KeyValue(Bytes.toBytes("testtable,www.hbase.org/,1234"),<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      Bytes.toBytes("fam"), Bytes.toBytes(""), Long.MAX_VALUE, (byte[])null);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    KeyValue rowB = new KeyValue(Bytes.toBytes("testtable,www.hbase.org/%20,99999"),<a name="line.198"></a>
+<span class="sourceLineNo">199</span>        Bytes.toBytes("fam"), Bytes.toBytes(""), Long.MAX_VALUE, (byte[])null);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    assertTrue(CellComparatorImpl.META_COMPARATOR.compare(rowA, rowB) &lt; 0);<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    rowA = new KeyValue(Bytes.toBytes("testtable,,1234"), Bytes.toBytes("fam"),<a name="line.202"></a>
+<span class="sourceLineNo">203</span>        Bytes.toBytes(""), Long.MAX_VALUE, (byte[])null);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    rowB = new KeyValue(Bytes.toBytes("testtable,$www.hbase.org/,99999"),<a name="line.204"></a>
+<span class="sourceLineNo">205</span>        Bytes.toBytes("fam"), Bytes.toBytes(""), Long.MAX_VALUE, (byte[])null);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    assertTrue(CellComparatorImpl.META_COMPARATOR.compare(rowA, rowB) &lt; 0);<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>  }<a name="line.208"></a>
+<span class="sourceLineNo">209</span><a name="line.209"></a>
+<span class="sourceLineNo">210</span>  private void metacomparisons(final CellComparatorImpl c) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    long now = System.currentTimeMillis();<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    assertTrue(c.compare(new KeyValue(<a name="line.212"></a>
+<span class="sourceLineNo">213</span>        Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",a,,0,1"), now),<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      new KeyValue(<a name="line.214"></a>
+<span class="sourceLineNo">215</span>          Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",a,,0,1"), now)) == 0);<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    KeyValue a = new KeyValue(<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",a,,0,1"), now);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    KeyValue b = new KeyValue(<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",a,,0,2"), now);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    assertTrue(c.compare(new KeyValue(<a name="line.221"></a>
+<span class="sourceLineNo">222</span>        Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",a,,0,2"), now),<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      new KeyValue(<a name="line.223"></a>
+<span class="sourceLineNo">224</span>          Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",a,,0,1"), now)) &gt; 0);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
+<span class="sourceLineNo">226</span><a name="line.226"></a>
+<span class="sourceLineNo">227</span>  private void comparisons(final CellComparatorImpl c) {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    long now = System.currentTimeMillis();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    assertTrue(c.compare(new KeyValue(<a name="line.229"></a>
+<span class="sourceLineNo">230</span>        Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",,1"), now),<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      new KeyValue(<a name="line.231"></a>
+<span class="sourceLineNo">232</span>          Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",,1"), now)) == 0);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    assertTrue(c.compare(new KeyValue(<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",,1"), now),<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      new KeyValue(<a name="line.235"></a>
+<span class="sourceLineNo">236</span>          Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",,2"), now)) &lt; 0);<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    assertTrue(c.compare(new KeyValue(<a name="line.237"></a>
+<span class="sourceLineNo">238</span>        Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",,2"), now),<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      new KeyValue(<a name="line.239"></a>
+<span class="sourceLineNo">240</span>          Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",,1"), now)) &gt; 0);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>  }<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span>  @Test<a name="line.243"></a>
+<span class="sourceLineNo">244</span>  public void testBinaryKeys() throws Exception {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    Set&lt;KeyValue&gt; set = new TreeSet&lt;&gt;(CellComparatorImpl.COMPARATOR);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    final byte [] fam = Bytes.toBytes("col");<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    final byte [] qf = Bytes.toBytes("umn");<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    final byte [] nb = new byte[0];<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    KeyValue [] keys = {new KeyValue(Bytes.toBytes("aaaaa,\u0000\u0000,2"), fam, qf, 2, nb),<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      new KeyValue(Bytes.toBytes("aaaaa,\u0001,3"), fam, qf, 3, nb),<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      new KeyValue(Bytes.toBytes("aaaaa,,1"), fam, qf, 1, nb),<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      new KeyValue(Bytes.toBytes("aaaaa,\u1000,5"), fam, qf, 5, nb),<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      new KeyValue(Bytes.toBytes("aaaaa,a,4"), fam, qf, 4, nb),<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      new KeyValue(Bytes.toBytes("a,a,0"), fam, qf, 0, nb),<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    };<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    // Add to set with bad comparator<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Collections.addAll(set, keys);<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    // This will output the keys incorrectly.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    boolean assertion = false;<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    int count = 0;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    try {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      for (KeyValue k: set) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>        assertTrue(count++ == k.getTimestamp());<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      }<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    } catch (java.lang.AssertionError e) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      // Expected<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      assertion = true;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    }<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    assertTrue(assertion);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    // Make set with good comparator<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    set = new TreeSet&lt;&gt;(CellComparatorImpl.META_COMPARATOR);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    Collections.addAll(set, keys);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    count = 0;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    for (KeyValue k: set) {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      assertTrue(count++ == k.getTimestamp());<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    }<a name="line.276"></a>
+<span class="sourceLineNo">277</span>  }<a name="line.277"></a>
+<span class="sourceLineNo">278</span><a name="line.278"></a>
+<span class="sourceLineNo">279</span>  @Test<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  public void testStackedUpKeyValue() {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    // Test multiple KeyValues in a single blob.<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>    // TODO actually write this test!<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>  }<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>  private final byte[] rowA = Bytes.toBytes("rowA");<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  private final byte[] rowB = Bytes.toBytes("rowB");<a name="line.288"></a>
+<span class="sourceLineNo">289</span><a name="line.289"></a>
+<span class="sourceLineNo">290</span>  private final byte[] family = Bytes.toBytes("family");<a name="line.290"></a>
+<span class="sourceLineNo">291</span>  private final byte[] qualA = Bytes.toBytes("qfA");<a name="line.291"></a>
+<span class="sourceLineNo">292</span>  private final byte[] qualB = Bytes.toBytes("qfB");<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>  private void assertKVLess(CellComparator c,<a name="line.294"></a>
+<span class="sourceLineNo">295</span>                            KeyValue less,<a name="line.295"></a>
+<span class="sourceLineNo">296</span>                            KeyValue greater) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    int cmp = c.compare(less,greater);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    assertTrue(cmp &lt; 0);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    cmp = c.compare(greater,less);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    assertTrue(cmp &gt; 0);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>  }<a name="line.301"></a>
+<span class="sourceLineNo">302</span><a name="line.302"></a>
+<span class="sourceLineNo">303</span>  private void assertKVLessWithoutRow(CellComparator c, int common, KeyValue less,<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      KeyValue greater) {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    int cmp = c.compare(less, greater);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    assertTrue(cmp &lt; 0);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    cmp = c.compare(greater, less);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    assertTrue(cmp &gt; 0);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  }<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>  @Test<a name="line.311"></a>
+<span class="sourceLineNo">312</span>  public void testCompareWithoutRow() {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    final CellComparator c = CellComparatorImpl.COMPARATOR;<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    byte[] row = Bytes.toBytes("row");<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>    byte[] fa = Bytes.toBytes("fa");<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    byte[] fami = Bytes.toBytes("fami");<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    byte[] fami1 = Bytes.toBytes("fami1");<a name="line.318"></a>
+<span class="sourceLineNo">319</span><a name="line.319"></a>
+<span class="sourceLineNo">320</span>    byte[] qual0 = Bytes.toBytes("");<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    byte[] qual1 = Bytes.toBytes("qf1");<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    byte[] qual2 = Bytes.toBytes("qf2");<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    long ts = 1;<a name="line.323"></a>
+<span class="sourceLineNo">324</span><a name="line.324"></a>
+<span class="sourceLineNo">325</span>    // 'fa:'<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    KeyValue kv_0 = new KeyValue(row, fa, qual0, ts, KeyValue.Type.Put);<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    // 'fami:'<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    KeyValue kv0_0 = new KeyValue(row, fami, qual0, ts, KeyValue.Type.Put);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    // 'fami:qf1'<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    KeyValue kv0_1 = new KeyValue(row, fami, qual1, ts, KeyValue.Type.Put);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    // 'fami:qf2'<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    KeyValue kv0_2 = new KeyValue(row, fami, qual2, ts, KeyValue.Type.Put);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    // 'fami1:'<a name="line.333"></a>
+<span class="sourceLineNo">334</span>    KeyValue kv1_0 = new KeyValue(row, fami1, qual0, ts, KeyValue.Type.Put);<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>    // 'fami:qf1' &lt; 'fami:qf2'<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    assertKVLessWithoutRow(c, 0, kv0_1, kv0_2);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    // 'fami:qf1' &lt; 'fami1:'<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    assertKVLessWithoutRow(c, 0, kv0_1, kv1_0);<a name="line.339"></a>
+<span class="sourceLineNo">340</span><a name="line.340"></a>
+<span class="sourceLineNo">341</span>    // Test comparison by skipping the same prefix bytes.<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    /***<a name="line.342"></a>
+<span class="sourceLineNo">343</span>     * KeyValue Format and commonLength:<a name="line.343"></a>
+<span class="sourceLineNo">344</span>     * |_keyLen_|_valLen_|_rowLen_|_rowKey_|_famiLen_|_fami_|_Quali_|....<a name="line.344"></a>
+<span class="sourceLineNo">345</span>     * ------------------|-------commonLength--------|--------------<a name="line.345"></a>
+<span class="sourceLineNo">346</span>     */<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    int commonLength = KeyValue.ROW_LENGTH_SIZE + KeyValue.FAMILY_LENGTH_SIZE<a name="line.347"></a>
+<span class="sourceLineNo">348</span>        + row.length;<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    // 'fa:' &lt; 'fami:'. They have commonPrefix + 2 same prefix bytes.<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    assertKVLessWithoutRow(c, commonLength + 2, kv_0, kv0_0);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    // 'fami:' &lt; 'fami:qf1'. They have commonPrefix + 4 same prefix bytes.<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    assertKVLessWithoutRow(c, commonLength + 4, kv0_0, kv0_1);<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    // 'fami:qf1' &lt; 'fami1:'. They have commonPrefix + 4 same prefix bytes.<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    assertKVLessWithoutRow(c, commonLength + 4, kv0_1, kv1_0);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    // 'fami:qf1' &lt; 'fami:qf2'. They have commonPrefix + 6 same prefix bytes.<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    assertKVLessWithoutRow(c, commonLength + 6, kv0_1, kv0_2);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>  }<a name="line.357"></a>
+<span class="sourceLineNo">358</span><a name="line.358"></a>
+<span class="sourceLineNo">359</span>  @Test<a name="line.359"></a>
+<span class="sourceLineNo">360</span>  public void testFirstLastOnRow() {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    final CellComparator c = CellComparatorImpl.COMPARATOR;<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    long ts = 1;<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    byte[] bufferA = new byte[128];<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    int offsetA = 0;<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    byte[] bufferB = new byte[128];<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    int offsetB = 7;<a name="line.366"></a>
+<span class="sourceLineNo">367</span><a name="line.367"></a>
+<span class="sourceLineNo">368</span>    // These are listed in sort order (ie: every one should be less<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    // than the one on the next line).<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    final KeyValue firstOnRowA = KeyValueUtil.createFirstOnRow(rowA);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    final KeyValue firstOnRowABufferFamQual = KeyValueUtil.createFirstOnRow(bufferA, offsetA,<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        rowA, 0, rowA.length, family, 0, family.length, qualA, 0, qualA.length);<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    final KeyValue kvA_1 = new KeyValue(rowA, null, null, ts, KeyValue.Type.Put);<a name="line.373"></a>
+<span class="sourceLineNo">374</span>    final KeyValue kvA_2 = new KeyValue(rowA, family, qualA, ts, KeyValue.Type.Put);<a name="line.374"></a>
+<span class="sourceLineNo">375</span><a name="line.375"></a>
+<span class="sourceLineNo">376</span>    final KeyValue lastOnRowA = KeyValueUtil.createLastOnRow(rowA);<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    final KeyValue firstOnRowB = KeyValueUtil.createFirstOnRow(rowB);<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    final KeyValue firstOnRowBBufferFam = KeyValueUtil.createFirstOnRow(bufferB, offsetB,<a name="line.378"></a>
+<span class="sourceLineNo">379</span>        rowB, 0, rowB.length, family, 0, family.length, null, 0, 0);<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    final KeyValue kvB = new KeyValue(rowB, family, qualA, ts, KeyValue.Type.Put);<a name="line.380"></a>
+<span class="sourceLineNo">381</span><a name="line.381"></a>
+<span class="sourceLineNo">382</span>    assertKVLess(c, firstOnRowA, firstOnRowB);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>    assertKVLess(c, firstOnRowA, firstOnRowBBufferFam);<a name="line.383"></a>
+<span class="sourceLineNo">384</span>    assertKVLess(c, firstOnRowABufferFamQual, firstOnRowB);<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    assertKVLess(c, firstOnRowA, kvA_1);<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    assertKVLess(c, firstOnRowA, kvA_2);<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    assertKVLess(c, firstOnRowABufferFamQual, kvA_2);<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    assertKVLess(c, kvA_1, kvA_2);<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    assertKVLess(c, kvA_2, firstOnRowB);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    assertKVLess(c, kvA_1, firstOnRowB);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>    assertKVLess(c, kvA_2, firstOnRowBBufferFam);<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    assertKVLess(c, kvA_1, firstOnRowBBufferFam);<a name="line.392"></a>
+<span class="sourceLineNo">393</span><a name="line.393"></a>
+<span class="sourceLineNo">394</span>    assertKVLess(c, lastOnRowA, firstOnRowB);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    assertKVLess(c, lastOnRowA, firstOnRowBBufferFam);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    assertKVLess(c, firstOnRowB, kvB);<a name="line.396"></a>
+<span class="sourceLineNo">397</span>    assertKVLess(c, firstOnRowBBufferFam, kvB);<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    assertKVLess(c, lastOnRowA, kvB);<a name="line.398"></a>
+<span class="sourceLineNo">399</span><a name="line.399"></a>
+<span class="sourceLineNo">400</span>    assertKVLess(c, kvA_2, lastOnRowA);<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    assertKVLess(c, kvA_1, lastOnRowA);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    assertKVLess(c, firstOnRowA, lastOnRowA);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>    assertKVLess(c, firstOnRowABufferFamQual, lastOnRowA);<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>  @Test<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  public void testCreateKeyOnly() throws Exception {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    long ts = 1;<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    byte [] value = Bytes.toBytes("a real value");<a name="line.409"></a>
+<span class="sourceLineNo">410</span>    byte [] evalue = new byte[0]; // empty value<a name="line.410"></a>
+<span class="sourceLineNo">411</span><a name="line.411"></a>
+<span class="sourceLineNo">412</span>    for (byte[] val : new byte[][]{value, evalue}) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      for (boolean useLen : new boolean[]{false,true}) {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        KeyValue kv1 = new KeyValue(rowA, family, qualA, ts, val);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        KeyValue kv1ko = kv1.createKeyOnly(useLen);<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        // keys are still the same<a name="line.416"></a>
+<span class="sourceLineNo">417</span>        assertTrue(kv1.equals(kv1ko));<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        // but values are not<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        assertTrue(kv1ko.getValueLength() == (useLen?Bytes.SIZEOF_INT:0));<a name="line.419"></a>
+<span class="sourceLineNo">420</span>        if (useLen) {<a name="line.420"></a>
+<span class="sourceLineNo">421</span>          assertEquals(kv1.getValueLength(),<a name="line.421"></a>
+<span class="sourceLineNo">422</span>            Bytes.toInt(kv1ko.getValueArray(), kv1ko.getValueOffset(), kv1ko.getValueLength()));<a name="line.422"></a>
+<span class="sourceLineNo">423</span>        }<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      }<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    }<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>  @Test<a name="line.428"></a>
+<span class="sourceLineNo">429</span>  public void testCreateKeyValueFromKey() {<a name="line.429"></a>
+<span class="sourceLineNo">430</span>    KeyValue kv = new KeyValue(Bytes.toBytes("myRow"), Bytes.toBytes("myCF"),<a name="line.430"></a>
+<span class="sourceLineNo">431</span>        Bytes.toBytes("myQualifier"), 12345L, Bytes.toBytes("myValue"));<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    int initialPadding = 10;<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    int endingPadding = 20;<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    int keyLen = kv.getKeyLength();<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    byte[] tmpArr = new byte[initialPadding + endingPadding + keyLen];<a name="line.435"></a>
+<span class="sourceLineNo">436</span>    System.arraycopy(kv.getBuffer(), kv.getKeyOffset(), tmpArr,<a name="line.436"></a>
+<span class="sourceLineNo">437</span>        initialPadding, keyLen);<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    KeyValue kvFromKey = KeyValueUtil.createKeyValueFromKey(tmpArr, initialPadding,<a name="line.438"></a>
+<span class="sourceLineNo">439</span>        keyLen);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    assertEquals(keyLen, kvFromKey.getKeyLength());<a name="line.440"></a>
+<span class="sourceLineNo">441</span>    assertEquals(KeyValue.ROW_OFFSET + keyLen, kvFromKey.getBuffer().length);<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    System.err.println("kv=" + kv);<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    System.err.println("kvFromKey=" + kvFromKey);<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    assertEquals(kvFromKey.toString(),<a name="line.444"></a>
+<span class="sourceLineNo">445</span>        kv.toString().replaceAll("=[0-9]+", "=0"));<a name="line.445"></a>
+<span class="sourceLineNo">446</span>  }<a name="line.446"></a>
+<span class="sourceLineNo">447</span><a name="line.447"></a>
+<span class="sourceLineNo">448</span>  /**<a name="line.448"></a>
+<span class="sourceLineNo">449</span>   * Tests that getTimestamp() does always return the proper timestamp, even after updating it.<a name="line.449"></a>
+<span class="sourceLineNo">450</span>   * See HBASE-6265.<a name="line.450"></a>
+<span class="sourceLineNo">451</span>   */<a name="line.451"></a>
+<span class="sourceLineNo">452</span>  @Test<a name="line.452"></a>
+<span class="sourceLineNo">453</span>  public void testGetTimestamp() {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    KeyValue kv = new KeyValue(Bytes.toBytes("myRow"), Bytes.toBytes("myCF"),<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      Bytes.toBytes("myQualifier"), HConstants.LATEST_TIMESTAMP,<a name="line.455"></a>
+<span class="sourceLineNo">456</span>      Bytes.toBytes("myValue"));<a name="line.456"></a>
+<span class="sourceLineNo">457</span>    long time1 = kv.getTimestamp();<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    kv.updateLatestStamp(Bytes.toBytes(12345L));<a name="line.458"></a>
+<span class="sourceLineNo">459</span>    long time2 = kv.getTimestamp();<a name="line.459"></a>
+<span class="sourceLineNo">460</span>    assertEquals(HConstants.LATEST_TIMESTAMP, time1);<a name="line.460"></a>
+<span class="sourceLineNo">461</span>    assertEquals(12345L, time2);<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>  @Test<a name="line.464"></a>
+<span class="sourceLineNo">465</span>  public void testKVsWithTags() {<a name="line.465"></a>
+<span class="sourceLineNo">466</span>    byte[] row = Bytes.toBytes("myRow");<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    byte[] cf = Bytes.toBytes("myCF");<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    byte[] q = Bytes.toBytes("myQualifier");<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    byte[] value = Bytes.toBytes("myValue");<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    byte[] metaValue1 = Bytes.toBytes("metaValue1");<a name="line.470"></a>
+<span class="sourceLineNo">471</span>    byte[] metaValue2 = Bytes.toBytes("metaValue2");<a name="line.471"></a>
+<span class="sourceLineNo">472</span>    KeyValue kv = new KeyValue(row, cf, q, HConstants.LATEST_TIMESTAMP, value, new Tag[] {<a name="line.472"></a>
+<span class="sourceLineNo">473</span>        new ArrayBackedTag((byte) 1, metaValue1), new ArrayBackedTag((byte) 2, metaValue2) });<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    assertTrue(kv.getTagsLength() &gt; 0);<a name="line.474"></a>
+<span class="sourceLineNo">475</span>    assertTrue(Bytes.equals(kv.getRowArray(), kv.getRowOffset(), kv.getRowLength(), row, 0,<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      row.length));<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    assertTrue(Bytes.equals(kv.getFamilyArray(), kv.getFamilyOffset(), kv.getFamilyLength(), cf, 0,<a name="line.477"></a>
+<span class="sourceLineNo">478</span>      cf.length));<a name="line.478"></a>
+<span class="sourceLineNo">479</span>    assertTrue(Bytes.equals(kv.getQualifierArray(), kv.getQualifierOffset(),<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      kv.getQualifierLength(), q, 0, q.length));<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    assertTrue(Bytes.equals(kv.getValueArray(), kv.getValueOffset(), kv.getValueLength(), value, 0,<a name="line.481"></a>
+<span class="sourceLineNo">482</span>      value.length));<a name="line.482"></a>
+<span class="sourceLineNo">483</span>    List&lt;Tag&gt; tags = PrivateCellUtil.getTags(kv);<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    assertNotNull(tags);<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    assertEquals(2, tags.size());<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    boolean meta1Ok = false, meta2Ok = false;<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    for (Tag tag : tags) {<a name="line.487"></a>
+<span class="sourceLineNo">488</span>      if (tag.getType() == (byte) 1) {<a name="line.488"></a>
+<span class="sourceLineNo">489</span>        if (Bytes.equals(Tag.cloneValue(tag), metaValue1)) {<a name="line.489"></a>
+<span class="sourceLineNo">490</span>          meta1Ok = true;<a name="line.490"></a>
+<span class="sourceLineNo">491</span>        }<a name="line.491"></a>
+<span class="sourceLineNo">492</span>      } else {<a name="line.492"></a>
+<span class="sourceLineNo">493</span>        if (Bytes.equals(Tag.cloneValue(tag), metaValue2)) {<a name="line.493"></a>
+<span class="sourceLineNo">494</span>          meta2Ok = true;<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>    assertTrue(meta1Ok);<a name="line.498"></a>
+<span class="sourceLineNo">499</span>    assertTrue(meta2Ok);<a name="line.499"></a>
+<span class="sourceLineNo">500</span>    Iterator&lt;Tag&gt; tagItr = PrivateCellUtil.tagsIterator(kv);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    //Iterator&lt;Tag&gt; tagItr = kv.tagsIterator();<a name="line.501"></a>
+<span class="sourceLineNo">502</span>    assertTrue(tagItr.hasNext());<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    Tag next = tagItr.next();<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    assertEquals(10, next.getValueLength());<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    assertEquals((byte) 1, next.getType());<a name="line.505"></a>
+<span class="sourceLineNo">506</span>    Bytes.equals(Tag.cloneValue(next), metaValue1);<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    assertTrue(tagItr.hasNext());<a name="line.507"></a>
+<span class="sourceLineNo">508</span>    next = tagItr.next();<a name="line.508"></a>
+<span class="sourceLineNo">509</span>    assertEquals(10, next.getValueLength());<a name="line.509"></a>
+<span class="sourceLineNo">510</span>    assertEquals((byte) 2, next.getType());<a name="line.510"></a>
+<span class="sourceLineNo">511</span>    Bytes.equals(Tag.cloneValue(next), metaValue2);<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    assertFalse(tagItr.hasNext());<a name="line.512"></a>
+<span class="sourceLineNo">513</span><a name="line.513"></a>
+<span class="sourceLineNo">514</span>    tagItr = PrivateCellUtil.tagsIterator(kv);<a name="line.514"></a>
+<span class="sourceLineNo">515</span>    assertTrue(tagItr.hasNext());<a name="line.515"></a>
+<span class="sourceLineNo">516</span>    next = tagItr.next();<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    assertEquals(10, next.getValueLength());<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    assertEquals((byte) 1, next.getType());<a name="line.518"></a>
+<span class="sourceLineNo">519</span>    Bytes.equals(Tag.cloneValue(next), metaValue1);<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    assertTrue(tagItr.hasNext());<a name="line.520"></a>
+<span class="sourceLineNo">521</span>    next = tagItr.next();<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    assertEquals(10, next.getValueLength());<a name="line.522"></a>
+<span class="sourceLineNo">523</span>    assertEquals((byte) 2, next.getType());<a name="line.523"></a>
+<span class="sourceLineNo">524</span>    Bytes.equals(Tag.cloneValue(next), metaValue2);<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    assertFalse(tagItr.hasNext());<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>  @Test<a name="line.528"></a>
+<span class="sourceLineNo">529</span>  public void testMetaKeyComparator() {<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    CellComparator c = CellComparatorImpl.META_COMPARATOR;<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    long now = System.currentTimeMillis();<a name="line.531"></a>
+<span class="sourceLineNo">532</span><a name="line.532"></a>
+<span class="sourceLineNo">533</span>    KeyValue a = new KeyValue(Bytes.toBytes("table1"), now);<a name="line.533"></a>
+<span class="sourceLineNo">534</span>    KeyValue b = new KeyValue(Bytes.toBytes("table2"), now);<a name="line.534"></a>
+<span class="sourceLineNo">535</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.535"></a>
+<span class="sourceLineNo">536</span><a name="line.536"></a>
+<span class="sourceLineNo">537</span>    a = new KeyValue(Bytes.toBytes("table1,111"), now);<a name="line.537"></a>
+<span class="sourceLineNo">538</span>    b = new KeyValue(Bytes.toBytes("table2"), now);<a name="line.538"></a>
+<span class="sourceLineNo">539</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.539"></a>
+<span class="sourceLineNo">540</span><a name="line.540"></a>
+<span class="sourceLineNo">541</span>    a = new KeyValue(Bytes.toBytes("table1"), now);<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    b = new KeyValue(Bytes.toBytes("table2,111"), now);<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.543"></a>
+<span class="sourceLineNo">544</span><a name="line.544"></a>
+<span class="sourceLineNo">545</span>    a = new KeyValue(Bytes.toBytes("table,111"), now);<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    b = new KeyValue(Bytes.toBytes("table,2222"), now);<a name="line.546"></a>
+<span class="sourceLineNo">547</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.547"></a>
+<span class="sourceLineNo">548</span><a name="line.548"></a>
+<span class="sourceLineNo">549</span>    a = new KeyValue(Bytes.toBytes("table,111,aaaa"), now);<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    b = new KeyValue(Bytes.toBytes("table,2222"), now);<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.551"></a>
+<span class="sourceLineNo">552</span><a name="line.552"></a>
+<span class="sourceLineNo">553</span>    a = new KeyValue(Bytes.toBytes("table,111"), now);<a name="line.553"></a>
+<span class="sourceLineNo">554</span>    b = new KeyValue(Bytes.toBytes("table,2222.bbb"), now);<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.555"></a>
+<span class="sourceLineNo">556</span><a name="line.556"></a>
+<span class="sourceLineNo">557</span>    a = new KeyValue(Bytes.toBytes("table,,aaaa"), now);<a name="line.557"></a>
+<span class="sourceLineNo">558</span>    b = new KeyValue(Bytes.toBytes("table,111,bbb"), now);<a name="line.558"></a>
+<span class="sourceLineNo">559</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.559"></a>
+<span class="sourceLineNo">560</span><a name="line.560"></a>
+<span class="sourceLineNo">561</span>    a = new KeyValue(Bytes.toBytes("table,111,aaaa"), now);<a name="line.561"></a>
+<span class="sourceLineNo">562</span>    b = new KeyValue(Bytes.toBytes("table,111,bbb"), now);<a name="line.562"></a>
+<span class="sourceLineNo">563</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.563"></a>
+<span class="sourceLineNo">564</span><a name="line.564"></a>
+<span class="sourceLineNo">565</span>    a = new KeyValue(Bytes.toBytes("table,111,xxxx"), now);<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    b = new KeyValue(Bytes.toBytes("table,111,222,bbb"), now);<a name="line.566"></a>
+<span class="sourceLineNo">567</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.567"></a>
+<span class="sourceLineNo">568</span><a name="line.568"></a>
+<span class="sourceLineNo">569</span>    a = new KeyValue(Bytes.toBytes("table,111,11,xxx"), now);<a name="line.569"></a>
+<span class="sourceLineNo">570</span>    b = new KeyValue(Bytes.toBytes("table,111,222,bbb"), now);<a name="line.570"></a>
+<span class="sourceLineNo">571</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.571"></a>
+<span class="sourceLineNo">572</span>  }<a name="line.572"></a>
+<span class="sourceLineNo">573</span><a name="line.573"></a>
+<span class="sourceLineNo">574</span>  @Test<a name="line.574"></a>
+<span class="sourceLineNo">575</span>  public void testEqualsAndHashCode() throws Exception {<a name="line.575"></a>
+<span class="sourceLineNo">576</span>    KeyValue kvA1 = new KeyValue(Bytes.toBytes("key"), Bytes.toBytes("cf"),<a name="line.576"></a>
+<span class="sourceLineNo">577</span>        Bytes.toBytes("qualA"), Bytes.toBytes("1"));<a name="line.577"></a>
+<span class="sourceLineNo">578</span>    KeyValue kvA2 = new KeyValue(Bytes.toBytes("key"), Bytes.toBytes("cf"),<a name="line.578"></a>
+<span class="sourceLineNo">579</span>        Bytes.toBytes("qualA"), Bytes.toBytes("2"));<a name="line.579"></a>
+<span class="sourceLineNo">580</span>    // We set a different sequence id on kvA2 to demonstrate that the equals and hashCode also<a name="line.580"></a>
+<span class="sourceLineNo">581</span>    // don't take this into account.<a name="line.581"></a>
+<span class="sourceLineNo">582</span>    kvA2.setSequenceId(2);<a name="line.582"></a>
+<span class="sourceLineNo">583</span>    KeyValue kvB = new KeyValue(Bytes.toBytes("key"), Bytes.toBytes("cf"),<a name="line.583"></a>
+<span class="sourceLineNo">584</span>        Bytes.toBytes("qualB"), Bytes.toBytes("1"));<a name="line.584"></a>
+<span class="sourceLineNo">585</span><a name="line.585"></a>
+<span class="sourceLineNo">586</span>    assertEquals(kvA1, kvA2);<a name="line.586"></a>
+<span class="sourceLineNo">587</span>    assertNotEquals(kvA1, kvB);<a name="line.587"></a>
+<span class="sourceLineNo">588</span>    assertEquals(kvA1.hashCode(), kvA2.hashCode());<a name="line.588"></a>
+<span class="sourceLineNo">589</span>    assertNotEquals(kvA1.hashCode(), kvB.hashCode());<a name="line.589"></a>
+<span class="sourceLineNo">590</span><a name="line.590"></a>
+<span class="sourceLineNo">591</span>  }<a name="line.591"></a>
+<span class="sourceLineNo">592</span><a name="line.592"></a>
+<span class="sourceLineNo">593</span>  @Test<a name="line.593"></a>
+<span class="sourceLineNo">594</span>  public void testKeyValueSerialization() throws Exception {<a name="line.594"></a>
+<span class="sourceLineNo">595</span>    KeyValue[] keyValues = new KeyValue[] {<a name="line.595"></a>
+<span class="sourceLineNo">596</span>        new KeyValue(Bytes.toBytes("key"), Bytes.toBytes("cf"), Bytes.toBytes("qualA"),<a name="line.596"></a>
+<span class="sourceLineNo">597</span>            Bytes.toBytes("1")),<a name="line.597"></a>
+<span class="sourceLineNo">598</span>        new KeyValue(Bytes.toBytes("key"), Bytes.toBytes("cf"), Bytes.toBytes("qualA"),<a name="line.598"></a>
+<span class="sourceLineNo">599</span>            Bytes.toBytes("2")),<a name="line.599"></a>
+<span class="sourceLineNo">600</span>        new KeyValue(Bytes.toBytes("key"), Bytes.toBytes("cf"), Bytes.toBytes("qualA"),<a name="line.600"></a>
+<span class="sourceLineNo">601</span>            System.currentTimeMillis(), Bytes.toBytes("2"),<a name="line.601"></a>
+<span class="sourceLineNo">602</span>            new Tag[] { new ArrayBackedTag((byte) 120, "tagA"),<a name="line.602"></a>
+<span class="sourceLineNo">603</span>                new ArrayBackedTag((byte) 121, Bytes.toBytes("tagB")) }),<a name="line.603"></a>
+<span class="sourceLineNo">604</span>        new KeyValue(Bytes.toBytes("key"), Bytes.toBytes("cf"), Bytes.toBytes("qualA"),<a name="line.604"></a>
+<span class="sourceLineNo">605</span>            System.currentTimeMillis(), Bytes.toBytes("2"),<a name="line.605"></a>
+<span class="sourceLineNo">606</span>            new Tag[] { new ArrayBackedTag((byte) 0, "tagA") }),<a name="line.606"></a>
+<span class="sourceLineNo">607</span>        new KeyValue(Bytes.toBytes("key"), Bytes.toBytes("cf"), Bytes.toBytes(""),<a name="line.607"></a>
+<span class="sourceLineNo">608</span>            Bytes.toBytes("1")) };<a name="line.608"></a>
+<span class="sourceLineNo">609</span>    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();<a name="line.609"></a>
+<span class="sourceLineNo">610</span>    for (KeyValue kv : keyValues) {<a name="line.610"></a>
+<span class="sourceLineNo">611</span>      DataOutputStream os = new DataOutputStream(byteArrayOutputStream);<a name="line.611"></a>
+<span class="sourceLineNo">612</span>      ByteBufferUtils.putInt(os, KeyValueUtil.getSerializedSize(kv, true));<a name="line.612"></a>
+<span class="sourceLineNo">613</span>      KeyValueUtil.oswrite(kv, os, true);<a name="line.613"></a>
+<span class="sourceLineNo">614</span>    }<a name="line.614"></a>
+<span class="sourceLineNo">615</span>    DataInputStream is =<a name="line.615"></a>
+<span class="sourceLineNo">616</span>        new DataInputStream(new ByteArrayInputStream(byteArrayOutputStream.toByteArray()));<a name="line.616"></a>
+<span class="sourceLineNo">617</span>    for (int i = 0; i &lt; keyValues.length; i++) {<a name="line.617"></a>
+<span class="sourceLineNo">618</span>      LOG.info("Case#" + i + ": deserialize the kv: " + keyValues[i]);<a name="line.618"></a>
+<span class="sourceLineNo">619</span>      KeyValue destKv = KeyValueUtil.createKeyValueFromInputStream(is, true);<a name="line.619"></a>
+<span class="sourceLineNo">620</span>      assertEquals(keyValues[i], destKv);<a name="line.620"></a>
+<span class="sourceLineNo">621</span>      assertArrayEquals(CellUtil.cloneValue(keyValues[i]), CellUtil.cloneValue(destKv));<a name="line.621"></a>
+<span class="sourceLineNo">622</span>      assertArrayEquals(PrivateCellUtil.cloneTags(keyValues[i]), PrivateCellUtil.cloneTags(destKv));<a name="line.622"></a>
+<span class="sourceLineNo">623</span>    }<a name="line.623"></a>
+<span class="sourceLineNo">624</span>  }<a name="line.624"></a>
+<span class="sourceLineNo">625</span><a name="line.625"></a>
+<span class="sourceLineNo">626</span>  private static class FailureCase {<a name="line.626"></a>
+<span class="sourceLineNo">627</span>    byte[] buf;<a name="line.627"></a>
+<span class="sourceLineNo">628</span>    int offset;<a name="line.628"></a>
+<span class="sourceLineNo">629</span>    int length;<a name="line.629"></a>
+<span class="sourceLineNo">630</span>    boolean withTags;<a name="line.630"></a>
+<span class="sourceLineNo">631</span>    String expectedMessage;<a name="line.631"></a>
+<span class="sourceLineNo">632</span><a name="line.632"></a>
+<span class="sourceLineNo">633</span>    public FailureCase(byte[] buf, int offset, int length, boolean withTags,<a name="line.633"></a>
+<span class="sourceLineNo">634</span>        String expectedMessage) {<a name="line.634"></a>
+<span class="sourceLineNo">635</span>      this.buf = buf;<a name="line.635"></a>
+<span class="sourceLineNo">636</span>      this.offset = offset;<a name="line.636"></a>
+<span class="sourceLineNo">637</span>      this.length = length;<a name="line.637"></a>
+<span class="sourceLineNo">638</span>      this.withTags = withTags;<a name="line.638"></a>
+<span class="sourceLineNo">639</span>      this.expectedMessage = expectedMessage;<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>    @Override<a name="line.642"></a>
+<span class="sourceLineNo">643</span>    public String toString() {<a name="line.643"></a>
+<span class="sourceLineNo">644</span>      return "FailureCaseDetails: [buf=" + Bytes.toStringBinary(buf, offset, length) + ", offset="<a name="line.644"></a>
+<span class="sourceLineNo">645</span>          + offset + ", " + "length=" + length + ", expectedMessage=" + expectedMessage<a name="line.645"></a>
+<span class="sourceLineNo">646</span>          + ", withtags=" + withTags + "]";<a name="line.646"></a>
+<span class="sourceLineNo">647</span>    }<a name="line.647"></a>
+<span class="sourceLineNo">648</span><a name="line.648"></a>
+<span class="sourceLineNo">649</span>    public String getExpectedMessage() {<a name="line.649"></a>
+<span class="sourceLineNo">650</span>      return this.expectedMessage + KeyValueUtil.bytesToHex(buf, offset, length);<a name="line.650"></a>
+<span class="sourceLineNo">651</span>    }<a name="line.651"></a>
+<span class="sourceLineNo">652</span>  }<a name="line.652"></a>
+<span class="sourceLineNo">653</span><a name="line.653"></a>
+<span class="sourceLineNo">654</span>  @Test<a name="line.654"></a>
+<span class="sourceLineNo">655</span>  public void testCheckKeyValueBytesFailureCase() throws Exception {<a name="line.655"></a>
+<span class="sourceLineNo">656</span>    byte[][] inputs = new byte[][] { HConstants.EMPTY_BYTE_ARRAY, // case.0<a name="line.656"></a>
+<span class="sourceLineNo">657</span>      Bytes.toBytesBinary("a"), // case.1<a name="line.657"></a>
+<span class="sourceLineNo">658</span>      Bytes.toBytesBinary("\\x00\\x00\\x00\\x01"), // case.2<a name="line.658"></a>
+<span class="sourceLineNo">659</span>      Bytes.toBytesBinary("\\x00\\x00\\x00\\x01\\x00"), // case.3<a name="line.659"></a>
+<span class="sourceLineNo">660</span>      Bytes.toBytesBinary("\\x00\\x00\\x00\\x01\\x00\\x00\\x00\\x01"), // case.4<a name="line.660"></a>
+<span class="sourceLineNo">661</span>      Bytes.toBytesBinary("\\x00\\x00\\x00\\x01\\x00\\x00\\x00\\x01\\x00"), // case.5<a name="line.661"></a>
+<span class="sourceLineNo">662</span>      Bytes.toBytesBinary("\\x00\\x00\\x00\\x01\\x00\\x00\\x00\\x01\\x00\\x01"), // case.6<a name="line.662"></a>
+<span class="sourceLineNo">663</span>      Bytes.toBytesBinary("\\x00\\x00\\x00\\x01\\x00\\x00\\x00\\x01\\x00\\x03ROW"), // case.7<a name="line.663"></a>
+<span class="sourceLineNo">664</span>      Bytes.toBytesBinary("\\x00\\x00\\x00\\x01\\x00\\x00\\x00\\x01\\x00\\x03ROW\\x01"), // case.8<a name="line.664"></a>
+<span class="sourceLineNo">665</span>      Bytes.toBytesBinary("\\x00\\x00\\x00\\x11\\x00\\x00\\x00\\x01\\x00\\x03ROW\\x01FQ\\xFF"<a name="line.665"></a>
+<span class="sourceLineNo">666</span>          + "\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\x03"), // case.9<a name="line.666"></a>
+<span class="sourceLineNo">667</span>      Bytes.toBytesBinary("\\x00\\x00\\x00\\x11\\x00\\x00\\x00\\x01\\x00\\x03ROW\\x01FQ\\x00"<a name="line.667"></a>
+<span class="sourceLineNo">668</span>          + "\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x03"), // case.10<a name="line.668"></a>
+<span class="sourceLineNo">669</span>      Bytes.toBytesBinary("\\x00\\x00\\x00\\x11\\x00\\x00\\x00\\x01\\x00\\x03ROW\\x01FQ\\x00"<a name="line.669"></a>
+<span class="sourceLineNo">670</span>          + "\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x04"), // case.11<a name="line.670"></a>
+<span class="sourceLineNo">671</span>      Bytes.toBytesBinary("\\x00\\x00\\x00\\x11\\x00\\x00\\x00\\x01\\x00\\x03ROW\\x01FQ\\x00"<a name="line.671"></a>
+<span class="sourceLineNo">672</span>          + "\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x04VALUE"), // case.12<a name="line.672"></a>
+<span class="sourceLineNo">673</span>    };<a name="line.673"></a>
+<span class="sourceLineNo">674</span>    String[] outputs = new String[] { "Overflow when reading key length at position=0",<a name="line.674"></a>
+<span class="sourceLineNo">675</span>      "Overflow when reading key length at position=0",<a name="line.675"></a>
+<span class="sourceLineNo">676</span>      "Invalid key length in KeyValue. keyLength=1",<a name="line.676"></a>
+<span class="sourceLineNo">677</span>      "Overflow when reading value length at position=4",<a name="line.677"></a>
+<span class="sourceLineNo">678</span>      "Invalid value length in KeyValue, valueLength=1",<a name="line.678"></a>
+<span class="sourceLineNo">679</span>      "Overflow when reading row length at position=8",<a name="line.679"></a>
+<span class="sourceLineNo">680</span>      "Invalid row length in KeyValue, rowLength=1",<a name="line.680"></a>
+<span class="sourceLineNo">681</span>      "Overflow when reading family length at position=13",<a name="line.681"></a>
+<span class="sourceLineNo">682</span>      "Invalid family length in KeyValue, familyLength=1", "Timestamp cannot be negative, ts=-1",<a name="line.682"></a>
+<span class="sourceLineNo">683</span>      "Invalid type in KeyValue, type=3", "Overflow when reading value part at position=25",<a name="line.683"></a>
+<span class="sourceLineNo">684</span>      "Invalid tags length in KeyValue at position=26", };<a name="line.684"></a>
+<span class="sourceLineNo">685</span>    byte[][] withTagsInputs = new byte[][] {<a name="line.685"></a>
+<span class="sourceLineNo">686</span>      Bytes.toBytesBinary("\\x00\\x00\\x00\\x11\\x00\\x00\\x00\\x01\\x00\\x03ROW\\x01FQ\\x00"<a name="line.686"></a>
+<span class="sourceLineNo">687</span>          + "\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x04V\\x01"), // case.13<a name="line.687"></a>
+<span class="sourceLineNo">688</span>      Bytes.toBytesBinary("\\x00\\x00\\x00\\x11\\x00\\x00\\x00\\x01\\x00\\x03ROW\\x01FQ\\x00"<a name="line.688"></a>
+<span class="sourceLineNo">689</span>          + "\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x04V\\x00\\x01"), // case.14<a name="line.689"></a>
+<span class="sourceLineNo">690</span>      Bytes.toBytesBinary("\\x00\\x00\\x00\\x11\\x00\\x00\\x00\\x01\\x00\\x03ROW\\x01FQ\\x00"<a name="line.690"></a>
+<span class="sourceLineNo">691</span>          + "\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x04V\\x00\\x04\\x00\\x03\\x00A"), // case.15<a name="line.691"></a>
+<span class="sourceLineNo">692</span>      // case.16<a name="line.692"></a>
+<span class="sourceLineNo">693</span>      Bytes.toBytesBinary("\\x00\\x00\\x00\\x11\\x00\\x00\\x00\\x01\\x00\\x03ROW\\x01FQ\\x00"<a name="line.693"></a>
+<span class="sourceLineNo">694</span>          + "\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x04V\\x00\\x0A\\x00\\x04\\x00TAG\\x00\\x04"<a name="line.694"></a>
+<span class="sourceLineNo">695</span>          + "\\xFFT"),<a name="line.695"></a>
+<span class="sourceLineNo">696</span>      Bytes.toBytesBinary("\\x00\\x00\\x00\\x11\\x00\\x00\\x00\\x01\\x00\\x03ROW\\x01FQ\\x00"<a name="line.696"></a>
+<span class="sourceLineNo">697</span>          + "\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x04V\\x00\\x0C\\x00\\x04\\x00TAG\\x00\\x05"<a name="line.697"></a>
+<span class="sourceLineNo">698</span>          + "\\xF0COME\\x00"), // case.17<a name="line.698"></a>
+<span class="sourceLineNo">699</span>      Bytes.toBytesBinary("\\x00\\x00\\x00\\x11\\x00\\x00\\x00\\x01\\x00\\x03ROW\\x01FQ\\x00"<a name="line.699"></a>
+<span class="sourceLineNo">700</span>          + "\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x04V\\x00\\x0C\\x00\\x04\\x00TAG\\x00\\x05"<a name="line.700"></a>
+<span class="sourceLineNo">701</span>          + "\\xF0COME"), // case.18<a name="line.701"></a>
+<span class="sourceLineNo">702</span>      Bytes.toBytesBinary("\\x00\\x00\\x00\\x11\\x00\\x00\\x00\\x01\\x00\\x03ROW\\x01FQ\\x00"<a name="line.702"></a>
+<span class="sourceLineNo">703</span>          + "\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x04V\\x00\\x00"), // case.19<a name="line.703"></a>
+<span class="sourceLineNo">704</span>      Bytes.toBytesBinary("\\x00\\x00\\x00\\x11\\x00\\x00\\x00\\x01\\x00\\x03ROW\\x01FQ\\x00"<a name="line.704"></a>
+<span class="sourceLineNo">705</span>          + "\\x00\\x00\\x00\\x00\\x00\\x00\\x01\\x04V\\x00\\x1B\\x00\\x05\\x01TAG1\\x00\\x05"<a name="line.705"></a>
+<span class="sourceLineNo">706</span>          + "\\x02TAG2\\x00\\x05\\x03TAG3\\x00\\x05\\x04TAG4"), // case.20<a name="line.706"></a>
+<span class="sourceLineNo">707</span>    };<a name="line.707"></a>
+<span class="sourceLineNo">708</span>    String[] withTagsOutputs = new String[] { "Overflow when reading tags length at position=26",<a name="line.708"></a>
+<span class="sourceLineNo">709</span>      "Invalid tags length in KeyValue at position=26",<a name="line.709"></a>
+<span class="sourceLineNo">710</span>      "Invalid tag length at position=28, tagLength=3",<a name="line.710"></a>
+<span class="sourceLineNo">711</span>      "Invalid tag length at position=34, tagLength=4",<a name="line.711"></a>
+<span class="sourceLineNo">712</span>      "Some redundant bytes in KeyValue's buffer, startOffset=41, endOffset=42", null, null,<a name="line.712"></a>
+<span class="sourceLineNo">713</span>      null, };<a name="line.713"></a>
+<span class="sourceLineNo">714</span>    assertEquals(inputs.length, outputs.length);<a name="line.714"></a>
+<span class="sourceLineNo">715</span>    assertEquals(withTagsInputs.length, withTagsOutputs.length);<a name="line.715"></a>
+<span class="sourceLineNo">716</span><a name="line.716"></a>
+<span class="sourceLineNo">717</span>    FailureCase[] cases = new FailureCase[inputs.length + withTagsInputs.length];<a name="line.717"></a>
+<span class="sourceLineNo">718</span>    for (int i = 0; i &lt; inputs.length; i++) {<a name="line.718"></a>
+<span class="sourceLineNo">719</span>      cases[i] = new FailureCase(inputs[i], 0, inputs[i].length, false, outputs[i]);<a name="line.719"></a>
+<span class="sourceLineNo">720</span>    }<a name="line.720"></a>
+<span class="sourceLineNo">721</span>    for (int i = 0; i &lt; withTagsInputs.length; i++) {<a name="line.721"></a>
+<span class="sourceLineNo">722</span>      cases[inputs.length + i] =<a name="line.722"></a>
+<span class="sourceLineNo">723</span>          new FailureCase(withTagsInputs[i], 0, withTagsInputs[i].length, true, withTagsOutputs[i]);<a name="line.723"></a>
+<span class="sourceLineNo">724</span>    }<a name="line.724"></a>
+<span class="sourceLineNo">725</span><a name="line.725"></a>
+<span class="sourceLineNo">726</span>    for (int i = 0; i &lt; cases.length; i++) {<a name="line.726"></a>
+<span class="sourceLineNo">727</span>      FailureCase c = cases[i];<a name="line.727"></a>
+<span class="sourceLineNo">728</span>      ByteArrayOutputStream baos = new ByteArrayOutputStream();<a name="line.728"></a>
+<span class="sourceLineNo">729</span>      DataOutputStream os = new DataOutputStream(baos);<a name="line.729"></a>
+<span class="sourceLineNo">730</span>      ByteBufferUtils.putInt(os, c.length);<a name="line.730"></a>
+<span class="sourceLineNo">731</span>      os.write(c.buf, c.offset, c.length);<a name="line.731"></a>
+<span class="sourceLineNo">732</span>      try {<a name="line.732"></a>
+<span class="sourceLineNo">733</span>        KeyValueUtil.createKeyValueFromInputStream(<a name="line.733"></a>
+<span class="sourceLineNo">734</span>          new DataInputStream(new ByteArrayInputStream(baos.toByteArray())), c.withTags);<a name="line.734"></a>
+<span class="sourceLineNo">735</span>        if (c.expectedMessage != null) {<a name="line.735"></a>
+<span class="sourceLineNo">736</span>          fail("Should fail when parse key value from an invalid bytes for case#" + i + ". " + c);<a name="line.736"></a>
+<span class="sourceLineNo">737</span>        }<a name="line.737"></a>
+<span class="sourceLineNo">738</span>      } catch (IllegalArgumentException e) {<a name="line.738"></a>
+<span class="sourceLineNo">739</span>        assertEquals("Case#" + i + " failed," + c, c.getExpectedMessage(), e.getMessage());<a name="line.739"></a>
+<span class="sourceLineNo">740</span>      }<a name="line.740"></a>
+<span class="sourceLineNo">741</span>    }<a name="line.741"></a>
+<span class="sourceLineNo">742</span>  }<a name="line.742"></a>
+<span class="sourceLineNo">743</span>}<a name="line.743"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>


[29/29] hbase-site git commit: Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.

Posted by gi...@apache.org.
Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.


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

Branch: refs/heads/asf-site
Commit: 13ae5225393ba4cb14ef2b42bc421f6a5213e142
Parents: 5427055
Author: jenkins <bu...@apache.org>
Authored: Fri Dec 21 17:52:17 2018 +0000
Committer: jenkins <bu...@apache.org>
Committed: Fri Dec 21 17:52:17 2018 +0000

----------------------------------------------------------------------
 acid-semantics.html                             |     4 +-
 apache_hbase_reference_guide.pdf                |     4 +-
 book.html                                       |     2 +-
 bulk-loads.html                                 |     4 +-
 checkstyle-aggregate.html                       | 32044 +++++++++--------
 checkstyle.rss                                  |     6 +-
 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                       |    16 +-
 .../hadoop/hbase/KeyValue.KVComparator.html     |    54 +-
 .../hadoop/hbase/KeyValue.KeyOnlyKeyValue.html  |    70 +-
 .../hadoop/hbase/KeyValue.MetaComparator.html   |    18 +-
 .../hbase/KeyValue.SamePrefixComparator.html    |     4 +-
 .../org/apache/hadoop/hbase/KeyValue.Type.html  |    28 +-
 .../org/apache/hadoop/hbase/KeyValue.html       |   192 +-
 .../org/apache/hadoop/hbase/KeyValueUtil.html   |   146 +-
 .../hadoop/hbase/backup/package-tree.html       |     2 +-
 .../apache/hadoop/hbase/class-use/KeyValue.html |    24 +-
 .../hadoop/hbase/client/package-tree.html       |    24 +-
 .../hadoop/hbase/codec/KeyValueCodec.html       |     6 +-
 .../hadoop/hbase/coprocessor/package-tree.html  |     2 +-
 .../hadoop/hbase/filter/package-tree.html       |    10 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |     8 +-
 .../apache/hadoop/hbase/ipc/NettyRpcServer.html |     4 +-
 .../hadoop/hbase/mapreduce/package-tree.html    |     2 +-
 .../hadoop/hbase/master/package-tree.html       |     6 +-
 .../hbase/master/procedure/package-tree.html    |     2 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    18 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     4 +-
 .../hadoop/hbase/quotas/package-tree.html       |     8 +-
 .../regionserver/HStore.StoreFlusherImpl.html   |    34 +-
 .../hadoop/hbase/regionserver/HStore.html       |   162 +-
 .../hadoop/hbase/regionserver/package-tree.html |    18 +-
 .../regionserver/querymatcher/package-tree.html |     2 +-
 .../hbase/regionserver/wal/package-tree.html    |     2 +-
 .../hadoop/hbase/replication/package-tree.html  |     2 +-
 .../replication/regionserver/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  |    10 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |     2 +-
 .../hadoop/hbase/KeyValue.KVComparator.html     |  4432 +--
 .../hadoop/hbase/KeyValue.KeyOnlyKeyValue.html  |  4432 +--
 .../hadoop/hbase/KeyValue.MetaComparator.html   |  4432 +--
 .../hbase/KeyValue.SamePrefixComparator.html    |  4432 +--
 .../org/apache/hadoop/hbase/KeyValue.Type.html  |  4432 +--
 .../org/apache/hadoop/hbase/KeyValue.html       |  4432 +--
 .../org/apache/hadoop/hbase/KeyValueUtil.html   |   434 +-
 .../org/apache/hadoop/hbase/Version.html        |     4 +-
 .../KeyValueCodec.ByteBuffKeyValueDecoder.html  |    43 +-
 .../codec/KeyValueCodec.KeyValueDecoder.html    |    43 +-
 .../codec/KeyValueCodec.KeyValueEncoder.html    |    43 +-
 .../hadoop/hbase/codec/KeyValueCodec.html       |    43 +-
 ...ueCodecWithTags.ByteBuffKeyValueDecoder.html |     2 +-
 .../KeyValueCodecWithTags.KeyValueDecoder.html  |     2 +-
 .../KeyValueCodecWithTags.KeyValueEncoder.html  |     2 +-
 .../hbase/codec/KeyValueCodecWithTags.html      |     2 +-
 .../apache/hadoop/hbase/ipc/NettyRpcServer.html |    43 +-
 .../regionserver/HStore.StoreFlusherImpl.html   |  2151 +-
 .../hadoop/hbase/regionserver/HStore.html       |  2151 +-
 downloads.html                                  |     4 +-
 export_control.html                             |     4 +-
 index.html                                      |     4 +-
 integration.html                                |     4 +-
 issue-tracking.html                             |     4 +-
 license.html                                    |     4 +-
 mail-lists.html                                 |     4 +-
 metrics.html                                    |     4 +-
 old_news.html                                   |     4 +-
 plugin-management.html                          |     4 +-
 plugins.html                                    |     4 +-
 poweredbyhbase.html                             |     4 +-
 project-info.html                               |     4 +-
 project-reports.html                            |     4 +-
 project-summary.html                            |     4 +-
 pseudo-distributed.html                         |     4 +-
 replication.html                                |     4 +-
 resources.html                                  |     4 +-
 source-repository.html                          |     4 +-
 sponsors.html                                   |     4 +-
 supportingprojects.html                         |     4 +-
 team-list.html                                  |     4 +-
 testdevapidocs/allclasses-frame.html            |     2 +-
 testdevapidocs/allclasses-noframe.html          |     2 +-
 testdevapidocs/index-all.html                   |    68 +-
 .../hadoop/hbase/TestKeyValue.FailureCase.html  |   389 +
 .../hadoop/hbase/TestKeyValue.MockKeyValue.html |   676 -
 .../org/apache/hadoop/hbase/TestKeyValue.html   |   122 +-
 .../hadoop/hbase/TestLocalHBaseCluster.html     |     4 +-
 .../hadoop/hbase/backup/package-tree.html       |     2 +-
 .../class-use/TestKeyValue.FailureCase.html     |   125 +
 .../class-use/TestKeyValue.MockKeyValue.html    |   125 -
 .../client/TestScannersFromClientSide.html      |    94 +-
 .../io/hfile/TestHFileSeek.IntegerRange.html    |    14 +-
 .../hbase/io/hfile/TestHFileSeek.MyOptions.html |    64 +-
 .../hadoop/hbase/io/hfile/TestHFileSeek.html    |    44 +-
 .../org/apache/hadoop/hbase/package-frame.html  |     2 +-
 .../apache/hadoop/hbase/package-summary.html    |     2 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    12 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     2 +-
 .../hadoop/hbase/regionserver/package-tree.html |     6 +-
 .../apache/hadoop/hbase/test/package-tree.html  |     2 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |     4 +-
 testdevapidocs/overview-tree.html               |     2 +-
 .../hadoop/hbase/TestKeyValue.FailureCase.html  |   815 +
 .../hadoop/hbase/TestKeyValue.MockKeyValue.html |   842 -
 .../org/apache/hadoop/hbase/TestKeyValue.html   |  1463 +-
 ...tSide3.WaitingForMultiMutationsObserver.html |     4 +-
 ...tFromClientSide3.WaitingForScanObserver.html |     4 +-
 .../hbase/client/TestFromClientSide3.html       |     4 +-
 .../client/TestScannersFromClientSide.html      |  1784 +-
 .../io/encoding/TestDataBlockEncoders.html      |     2 +-
 .../TestCacheOnWrite.CacheOnWriteType.html      |     4 +-
 .../hadoop/hbase/io/hfile/TestCacheOnWrite.html |     4 +-
 .../io/hfile/TestHFileSeek.IntegerRange.html    |  1041 +-
 .../hbase/io/hfile/TestHFileSeek.MyOptions.html |  1041 +-
 .../hadoop/hbase/io/hfile/TestHFileSeek.html    |  1041 +-
 122 files changed, 37206 insertions(+), 37227 deletions(-)
----------------------------------------------------------------------


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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index 5e4f290..87ca521 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:20181220102940+00'00')
-/CreationDate (D:20181220104643+00'00')
+/ModDate (D:20181221173228+00'00')
+/CreationDate (D:20181221174846+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index 6d8a1e9..d17d2bc 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-20 10:29:40 UTC
+Last updated 2018-12-21 17:32:28 UTC
 </div>
 </div>
 </body>

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


[07/29] hbase-site git commit: Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/testdevapidocs/src-html/org/apache/hadoop/hbase/TestKeyValue.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/TestKeyValue.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/TestKeyValue.html
index 28e1b9b..0d49c9f 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/TestKeyValue.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/TestKeyValue.html
@@ -26,756 +26,729 @@
 <span class="sourceLineNo">018</span> */<a name="line.18"></a>
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><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>import static org.junit.Assert.assertFalse;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.junit.Assert.assertNotEquals;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import static org.junit.Assert.assertNotNull;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import static org.junit.Assert.assertTrue;<a name="line.25"></a>
-<span class="sourceLineNo">026</span><a name="line.26"></a>
-<span class="sourceLineNo">027</span>import java.io.ByteArrayInputStream;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import java.io.ByteArrayOutputStream;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.io.DataInputStream;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.io.DataOutputStream;<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.Collections;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import java.util.Iterator;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import java.util.List;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import java.util.Set;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import java.util.TreeSet;<a name="line.36"></a>
-<span class="sourceLineNo">037</span><a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.testclassification.SmallTests;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.util.ByteBufferUtils;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.junit.ClassRule;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.junit.Test;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.junit.experimental.categories.Category;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.slf4j.Logger;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.slf4j.LoggerFactory;<a name="line.45"></a>
-<span class="sourceLineNo">046</span><a name="line.46"></a>
-<span class="sourceLineNo">047</span>@Category(SmallTests.class)<a name="line.47"></a>
-<span class="sourceLineNo">048</span>public class TestKeyValue {<a name="line.48"></a>
-<span class="sourceLineNo">049</span>  @ClassRule<a name="line.49"></a>
-<span class="sourceLineNo">050</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.50"></a>
-<span class="sourceLineNo">051</span>  HBaseClassTestRule.forClass(TestKeyValue.class);<a name="line.51"></a>
-<span class="sourceLineNo">052</span>  private static final Logger LOG = LoggerFactory.getLogger(TestKeyValue.class);<a name="line.52"></a>
-<span class="sourceLineNo">053</span><a name="line.53"></a>
-<span class="sourceLineNo">054</span>  @Test<a name="line.54"></a>
-<span class="sourceLineNo">055</span>  public void testColumnCompare() throws Exception {<a name="line.55"></a>
-<span class="sourceLineNo">056</span>    final byte [] a = Bytes.toBytes("aaa");<a name="line.56"></a>
-<span class="sourceLineNo">057</span>    byte [] family1 = Bytes.toBytes("abc");<a name="line.57"></a>
-<span class="sourceLineNo">058</span>    byte [] qualifier1 = Bytes.toBytes("def");<a name="line.58"></a>
-<span class="sourceLineNo">059</span>    byte [] family2 = Bytes.toBytes("abcd");<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    byte [] qualifier2 = Bytes.toBytes("ef");<a name="line.60"></a>
-<span class="sourceLineNo">061</span><a name="line.61"></a>
-<span class="sourceLineNo">062</span>    KeyValue aaa = new KeyValue(a, family1, qualifier1, 0L, KeyValue.Type.Put, a);<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    assertFalse(CellUtil.matchingColumn(aaa, family2, qualifier2));<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    assertTrue(CellUtil.matchingColumn(aaa, family1, qualifier1));<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    aaa = new KeyValue(a, family2, qualifier2, 0L, KeyValue.Type.Put, a);<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    assertFalse(CellUtil.matchingColumn(aaa, family1, qualifier1));<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    assertTrue(CellUtil.matchingColumn(aaa, family2,qualifier2));<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    byte [] nullQualifier = new byte[0];<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    aaa = new KeyValue(a, family1, nullQualifier, 0L, KeyValue.Type.Put, a);<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    assertTrue(CellUtil.matchingColumn(aaa, family1,null));<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    assertFalse(CellUtil.matchingColumn(aaa, family2,qualifier2));<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  }<a name="line.72"></a>
-<span class="sourceLineNo">073</span><a name="line.73"></a>
-<span class="sourceLineNo">074</span>  /**<a name="line.74"></a>
-<span class="sourceLineNo">075</span>   * Test a corner case when the family qualifier is a prefix of the<a name="line.75"></a>
-<span class="sourceLineNo">076</span>   *  column qualifier.<a name="line.76"></a>
-<span class="sourceLineNo">077</span>   */<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  @Test<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  public void testColumnCompare_prefix() throws Exception {<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    final byte [] a = Bytes.toBytes("aaa");<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    byte [] family1 = Bytes.toBytes("abc");<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    byte [] qualifier1 = Bytes.toBytes("def");<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    byte [] family2 = Bytes.toBytes("ab");<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    byte [] qualifier2 = Bytes.toBytes("def");<a name="line.84"></a>
-<span class="sourceLineNo">085</span><a name="line.85"></a>
-<span class="sourceLineNo">086</span>    KeyValue aaa = new KeyValue(a, family1, qualifier1, 0L, KeyValue.Type.Put, a);<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    assertFalse(CellUtil.matchingColumn(aaa, family2, qualifier2));<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>  @Test<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  public void testBasics() throws Exception {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    LOG.info("LOWKEY: " + KeyValue.LOWESTKEY.toString());<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    String name = "testBasics";<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    check(Bytes.toBytes(name),<a name="line.94"></a>
-<span class="sourceLineNo">095</span>      Bytes.toBytes(name), Bytes.toBytes(name), 1,<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      Bytes.toBytes(name));<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    // Test empty value and empty column -- both should work. (not empty fam)<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    check(Bytes.toBytes(name), Bytes.toBytes(name), null, 1, null);<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    check(HConstants.EMPTY_BYTE_ARRAY, Bytes.toBytes(name), null, 1, null);<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    // empty qual is equivalent to null qual<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    assertEquals(<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      new KeyValue(Bytes.toBytes("rk"), Bytes.toBytes("fam"), null, 1, (byte[]) null),<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      new KeyValue(Bytes.toBytes("rk"), Bytes.toBytes("fam"),<a name="line.103"></a>
-<span class="sourceLineNo">104</span>        HConstants.EMPTY_BYTE_ARRAY, 1, (byte[]) null));<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>  private void check(final byte [] row, final byte [] family, byte [] qualifier,<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    final long timestamp, final byte [] value) {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    KeyValue kv = new KeyValue(row, family, qualifier, timestamp, value);<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    assertTrue(Bytes.compareTo(kv.getRowArray(), kv.getRowOffset(), kv.getRowLength(), row, 0,<a name="line.110"></a>
-<span class="sourceLineNo">111</span>      row.length) == 0);<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    assertTrue(CellUtil.matchingColumn(kv, family, qualifier));<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    // Call toString to make sure it works.<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    LOG.info(kv.toString());<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>  @Test<a name="line.117"></a>
-<span class="sourceLineNo">118</span>  public void testPlainCompare() throws Exception {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    final byte [] a = Bytes.toBytes("aaa");<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    final byte [] b = Bytes.toBytes("bbb");<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    final byte [] fam = Bytes.toBytes("col");<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    final byte [] qf = Bytes.toBytes("umn");<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    KeyValue aaa = new KeyValue(a, fam, qf, a);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    KeyValue bbb = new KeyValue(b, fam, qf, b);<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(aaa, bbb) &lt; 0);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(bbb, aaa) &gt; 0);<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    // Compare breaks if passed same ByteBuffer as both left and right arguments.<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(bbb, bbb) == 0);<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(aaa, aaa) == 0);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    // Do compare with different timestamps.<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    aaa = new KeyValue(a, fam, qf, 1, a);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    bbb = new KeyValue(a, fam, qf, 2, a);<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(aaa, bbb) &gt; 0);<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(bbb, aaa) &lt; 0);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(aaa, aaa) == 0);<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    // Do compare with different types.  Higher numbered types -- Delete<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    // should sort ahead of lower numbers; i.e. Put<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    aaa = new KeyValue(a, fam, qf, 1, KeyValue.Type.Delete, a);<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    bbb = new KeyValue(a, fam, qf, 1, a);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(aaa, bbb) &lt; 0);<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(bbb, aaa) &gt; 0);<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(aaa, aaa) == 0);<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  }<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>  @Test<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  public void testMoreComparisons() throws Exception {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    long now = System.currentTimeMillis();<a name="line.147"></a>
-<span class="sourceLineNo">148</span><a name="line.148"></a>
-<span class="sourceLineNo">149</span>    // Meta compares<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    KeyValue aaa = new KeyValue(<a name="line.150"></a>
-<span class="sourceLineNo">151</span>        Bytes.toBytes("TestScanMultipleVersions,row_0500,1236020145502"), now);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    KeyValue bbb = new KeyValue(<a name="line.152"></a>
-<span class="sourceLineNo">153</span>        Bytes.toBytes("TestScanMultipleVersions,,99999999999999"), now);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    CellComparator c = CellComparatorImpl.META_COMPARATOR;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    assertTrue(c.compare(bbb, aaa) &lt; 0);<a name="line.155"></a>
-<span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>    KeyValue aaaa = new KeyValue(Bytes.toBytes("TestScanMultipleVersions,,1236023996656"),<a name="line.157"></a>
-<span class="sourceLineNo">158</span>        Bytes.toBytes("info"), Bytes.toBytes("regioninfo"), 1236024396271L,<a name="line.158"></a>
-<span class="sourceLineNo">159</span>        (byte[])null);<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    assertTrue(c.compare(aaaa, bbb) &lt; 0);<a name="line.160"></a>
-<span class="sourceLineNo">161</span><a name="line.161"></a>
-<span class="sourceLineNo">162</span>    KeyValue x = new KeyValue(Bytes.toBytes("TestScanMultipleVersions,row_0500,1236034574162"),<a name="line.162"></a>
-<span class="sourceLineNo">163</span>        Bytes.toBytes("info"), Bytes.toBytes(""), 9223372036854775807L,<a name="line.163"></a>
-<span class="sourceLineNo">164</span>        (byte[])null);<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    KeyValue y = new KeyValue(Bytes.toBytes("TestScanMultipleVersions,row_0500,1236034574162"),<a name="line.165"></a>
-<span class="sourceLineNo">166</span>        Bytes.toBytes("info"), Bytes.toBytes("regioninfo"), 1236034574912L,<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        (byte[])null);<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    assertTrue(c.compare(x, y) &lt; 0);<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    comparisons(CellComparatorImpl.META_COMPARATOR);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    comparisons(CellComparatorImpl.COMPARATOR);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    metacomparisons(CellComparatorImpl.META_COMPARATOR);<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>  @Test<a name="line.174"></a>
-<span class="sourceLineNo">175</span>  public void testMetaComparatorTableKeysWithCommaOk() {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    CellComparator c = CellComparatorImpl.META_COMPARATOR;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    long now = System.currentTimeMillis();<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    // meta keys values are not quite right.  A users can enter illegal values<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    // from shell when scanning meta.<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    KeyValue a = new KeyValue(Bytes.toBytes("table,key,with,commas1,1234"), now);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    KeyValue b = new KeyValue(Bytes.toBytes("table,key,with,commas2,0123"), now);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.182"></a>
-<span class="sourceLineNo">183</span>  }<a name="line.183"></a>
-<span class="sourceLineNo">184</span><a name="line.184"></a>
-<span class="sourceLineNo">185</span>  /**<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * Tests cases where rows keys have characters below the ','.<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * See HBASE-832<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   * @throws IOException<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   */<a name="line.189"></a>
-<span class="sourceLineNo">190</span>  @Test<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  public void testKeyValueBorderCases() throws IOException {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    // % sorts before , so if we don't do special comparator, rowB would<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    // come before rowA.<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    KeyValue rowA = new KeyValue(Bytes.toBytes("testtable,www.hbase.org/,1234"),<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      Bytes.toBytes("fam"), Bytes.toBytes(""), Long.MAX_VALUE, (byte[])null);<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    KeyValue rowB = new KeyValue(Bytes.toBytes("testtable,www.hbase.org/%20,99999"),<a name="line.196"></a>
-<span class="sourceLineNo">197</span>        Bytes.toBytes("fam"), Bytes.toBytes(""), Long.MAX_VALUE, (byte[])null);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    assertTrue(CellComparatorImpl.META_COMPARATOR.compare(rowA, rowB) &lt; 0);<a name="line.198"></a>
-<span class="sourceLineNo">199</span><a name="line.199"></a>
-<span class="sourceLineNo">200</span>    rowA = new KeyValue(Bytes.toBytes("testtable,,1234"), Bytes.toBytes("fam"),<a name="line.200"></a>
-<span class="sourceLineNo">201</span>        Bytes.toBytes(""), Long.MAX_VALUE, (byte[])null);<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    rowB = new KeyValue(Bytes.toBytes("testtable,$www.hbase.org/,99999"),<a name="line.202"></a>
-<span class="sourceLineNo">203</span>        Bytes.toBytes("fam"), Bytes.toBytes(""), Long.MAX_VALUE, (byte[])null);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    assertTrue(CellComparatorImpl.META_COMPARATOR.compare(rowA, rowB) &lt; 0);<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">021</span>import static org.junit.Assert.assertArrayEquals;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.junit.Assert.assertEquals;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.junit.Assert.assertFalse;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.junit.Assert.assertNotEquals;<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.assertTrue;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import static org.junit.Assert.fail;<a name="line.27"></a>
+<span class="sourceLineNo">028</span><a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.io.ByteArrayInputStream;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.io.ByteArrayOutputStream;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.io.DataInputStream;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import java.io.DataOutputStream;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import java.io.IOException;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import java.util.Collections;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import java.util.Iterator;<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.Set;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import java.util.TreeSet;<a name="line.38"></a>
+<span class="sourceLineNo">039</span><a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.testclassification.SmallTests;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.util.ByteBufferUtils;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.junit.ClassRule;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.junit.Test;<a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.junit.experimental.categories.Category;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.slf4j.Logger;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.slf4j.LoggerFactory;<a name="line.47"></a>
+<span class="sourceLineNo">048</span><a name="line.48"></a>
+<span class="sourceLineNo">049</span>@Category(SmallTests.class)<a name="line.49"></a>
+<span class="sourceLineNo">050</span>public class TestKeyValue {<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  @ClassRule<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.52"></a>
+<span class="sourceLineNo">053</span>  HBaseClassTestRule.forClass(TestKeyValue.class);<a name="line.53"></a>
+<span class="sourceLineNo">054</span>  private static final Logger LOG = LoggerFactory.getLogger(TestKeyValue.class);<a name="line.54"></a>
+<span class="sourceLineNo">055</span><a name="line.55"></a>
+<span class="sourceLineNo">056</span>  @Test<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  public void testColumnCompare() throws Exception {<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    final byte [] a = Bytes.toBytes("aaa");<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    byte [] family1 = Bytes.toBytes("abc");<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    byte [] qualifier1 = Bytes.toBytes("def");<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    byte [] family2 = Bytes.toBytes("abcd");<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    byte [] qualifier2 = Bytes.toBytes("ef");<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span>    KeyValue aaa = new KeyValue(a, family1, qualifier1, 0L, KeyValue.Type.Put, a);<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    assertFalse(CellUtil.matchingColumn(aaa, family2, qualifier2));<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    assertTrue(CellUtil.matchingColumn(aaa, family1, qualifier1));<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    aaa = new KeyValue(a, family2, qualifier2, 0L, KeyValue.Type.Put, a);<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    assertFalse(CellUtil.matchingColumn(aaa, family1, qualifier1));<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    assertTrue(CellUtil.matchingColumn(aaa, family2,qualifier2));<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    byte [] nullQualifier = new byte[0];<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    aaa = new KeyValue(a, family1, nullQualifier, 0L, KeyValue.Type.Put, a);<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    assertTrue(CellUtil.matchingColumn(aaa, family1,null));<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    assertFalse(CellUtil.matchingColumn(aaa, family2,qualifier2));<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  }<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>  /**<a name="line.76"></a>
+<span class="sourceLineNo">077</span>   * Test a corner case when the family qualifier is a prefix of the<a name="line.77"></a>
+<span class="sourceLineNo">078</span>   *  column qualifier.<a name="line.78"></a>
+<span class="sourceLineNo">079</span>   */<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  @Test<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  public void testColumnCompare_prefix() throws Exception {<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    final byte [] a = Bytes.toBytes("aaa");<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    byte [] family1 = Bytes.toBytes("abc");<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    byte [] qualifier1 = Bytes.toBytes("def");<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    byte [] family2 = Bytes.toBytes("ab");<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    byte [] qualifier2 = Bytes.toBytes("def");<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>    KeyValue aaa = new KeyValue(a, family1, qualifier1, 0L, KeyValue.Type.Put, a);<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    assertFalse(CellUtil.matchingColumn(aaa, family2, qualifier2));<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>  @Test<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  public void testBasics() throws Exception {<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    LOG.info("LOWKEY: " + KeyValue.LOWESTKEY.toString());<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    String name = "testBasics";<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    check(Bytes.toBytes(name),<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      Bytes.toBytes(name), Bytes.toBytes(name), 1,<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      Bytes.toBytes(name));<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    // Test empty value and empty column -- both should work. (not empty fam)<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    check(Bytes.toBytes(name), Bytes.toBytes(name), null, 1, null);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    check(HConstants.EMPTY_BYTE_ARRAY, Bytes.toBytes(name), null, 1, null);<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    // empty qual is equivalent to null qual<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    assertEquals(<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      new KeyValue(Bytes.toBytes("rk"), Bytes.toBytes("fam"), null, 1, (byte[]) null),<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      new KeyValue(Bytes.toBytes("rk"), Bytes.toBytes("fam"),<a name="line.105"></a>
+<span class="sourceLineNo">106</span>        HConstants.EMPTY_BYTE_ARRAY, 1, (byte[]) null));<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>  private void check(final byte [] row, final byte [] family, byte [] qualifier,<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    final long timestamp, final byte [] value) {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    KeyValue kv = new KeyValue(row, family, qualifier, timestamp, value);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    assertTrue(Bytes.compareTo(kv.getRowArray(), kv.getRowOffset(), kv.getRowLength(), row, 0,<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      row.length) == 0);<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    assertTrue(CellUtil.matchingColumn(kv, family, qualifier));<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    // Call toString to make sure it works.<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    LOG.info(kv.toString());<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  }<a name="line.117"></a>
+<span class="sourceLineNo">118</span><a name="line.118"></a>
+<span class="sourceLineNo">119</span>  @Test<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  public void testPlainCompare() throws Exception {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    final byte [] a = Bytes.toBytes("aaa");<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    final byte [] b = Bytes.toBytes("bbb");<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    final byte [] fam = Bytes.toBytes("col");<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    final byte [] qf = Bytes.toBytes("umn");<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    KeyValue aaa = new KeyValue(a, fam, qf, a);<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    KeyValue bbb = new KeyValue(b, fam, qf, b);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(aaa, bbb) &lt; 0);<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(bbb, aaa) &gt; 0);<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    // Compare breaks if passed same ByteBuffer as both left and right arguments.<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(bbb, bbb) == 0);<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(aaa, aaa) == 0);<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    // Do compare with different timestamps.<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    aaa = new KeyValue(a, fam, qf, 1, a);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    bbb = new KeyValue(a, fam, qf, 2, a);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(aaa, bbb) &gt; 0);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(bbb, aaa) &lt; 0);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(aaa, aaa) == 0);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    // Do compare with different types.  Higher numbered types -- Delete<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    // should sort ahead of lower numbers; i.e. Put<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    aaa = new KeyValue(a, fam, qf, 1, KeyValue.Type.Delete, a);<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    bbb = new KeyValue(a, fam, qf, 1, a);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(aaa, bbb) &lt; 0);<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(bbb, aaa) &gt; 0);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    assertTrue(CellComparatorImpl.COMPARATOR.compare(aaa, aaa) == 0);<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  }<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>  @Test<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  public void testMoreComparisons() throws Exception {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    long now = System.currentTimeMillis();<a name="line.149"></a>
+<span class="sourceLineNo">150</span><a name="line.150"></a>
+<span class="sourceLineNo">151</span>    // Meta compares<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    KeyValue aaa = new KeyValue(<a name="line.152"></a>
+<span class="sourceLineNo">153</span>        Bytes.toBytes("TestScanMultipleVersions,row_0500,1236020145502"), now);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    KeyValue bbb = new KeyValue(<a name="line.154"></a>
+<span class="sourceLineNo">155</span>        Bytes.toBytes("TestScanMultipleVersions,,99999999999999"), now);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    CellComparator c = CellComparatorImpl.META_COMPARATOR;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    assertTrue(c.compare(bbb, aaa) &lt; 0);<a name="line.157"></a>
+<span class="sourceLineNo">158</span><a name="line.158"></a>
+<span class="sourceLineNo">159</span>    KeyValue aaaa = new KeyValue(Bytes.toBytes("TestScanMultipleVersions,,1236023996656"),<a name="line.159"></a>
+<span class="sourceLineNo">160</span>        Bytes.toBytes("info"), Bytes.toBytes("regioninfo"), 1236024396271L,<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        (byte[])null);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    assertTrue(c.compare(aaaa, bbb) &lt; 0);<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>    KeyValue x = new KeyValue(Bytes.toBytes("TestScanMultipleVersions,row_0500,1236034574162"),<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        Bytes.toBytes("info"), Bytes.toBytes(""), 9223372036854775807L,<a name="line.165"></a>
+<span class="sourceLineNo">166</span>        (byte[])null);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    KeyValue y = new KeyValue(Bytes.toBytes("TestScanMultipleVersions,row_0500,1236034574162"),<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        Bytes.toBytes("info"), Bytes.toBytes("regioninfo"), 1236034574912L,<a name="line.168"></a>
+<span class="sourceLineNo">169</span>        (byte[])null);<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    assertTrue(c.compare(x, y) &lt; 0);<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    comparisons(CellComparatorImpl.META_COMPARATOR);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    comparisons(CellComparatorImpl.COMPARATOR);<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    metacomparisons(CellComparatorImpl.META_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>  @Test<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  public void testMetaComparatorTableKeysWithCommaOk() {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    CellComparator c = CellComparatorImpl.META_COMPARATOR;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    long now = System.currentTimeMillis();<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    // meta keys values are not quite right.  A users can enter illegal values<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    // from shell when scanning meta.<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    KeyValue a = new KeyValue(Bytes.toBytes("table,key,with,commas1,1234"), now);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    KeyValue b = new KeyValue(Bytes.toBytes("table,key,with,commas2,0123"), now);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    assertTrue(c.compare(a, b) &lt; 0);<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>   * Tests cases where rows keys have characters below the ','.<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   * See HBASE-832<a name="line.189"></a>
+<span class="sourceLineNo">190</span>   * @throws IOException<a name="line.190"></a>
+<span class="sourceLineNo">191</span>   */<a name="line.191"></a>
+<span class="sourceLineNo">192</span>  @Test<a name="line.192"></a>
+<span class="sourceLineNo">193</span>  public void testKeyValueBorderCases() throws IOException {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    // % sorts before , so if we don't do special comparator, rowB would<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    // come before rowA.<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    KeyValue rowA = new KeyValue(Bytes.toBytes("testtable,www.hbase.org/,1234"),<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      Bytes.toBytes("fam"), Bytes.toBytes(""), Long.MAX_VALUE, (byte[])null);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    KeyValue rowB = new KeyValue(Bytes.toBytes("testtable,www.hbase.org/%20,99999"),<a name="line.198"></a>
+<span class="sourceLineNo">199</span>        Bytes.toBytes("fam"), Bytes.toBytes(""), Long.MAX_VALUE, (byte[])null);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    assertTrue(CellComparatorImpl.META_COMPARATOR.compare(rowA, rowB) &lt; 0);<a name="line.200"></a>
+<span class="sourceLineNo">201</span><a name="line.201"></a>
+<span class="sourceLineNo">202</span>    rowA = new KeyValue(Bytes.toBytes("testtable,,1234"), Bytes.toBytes("fam"),<a name="line.202"></a>
+<span class="sourceLineNo">203</span>        Bytes.toBytes(""), Long.MAX_VALUE, (byte[])null);<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    rowB = new KeyValue(Bytes.toBytes("testtable,$www.hbase.org/,99999"),<a name="line.204"></a>
+<span class="sourceLineNo">205</span>        Bytes.toBytes("fam"), Bytes.toBytes(""), Long.MAX_VALUE, (byte[])null);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    assertTrue(CellComparatorImpl.META_COMPARATOR.compare(rowA, rowB) &lt; 0);<a name="line.206"></a>
 <span class="sourceLineNo">207</span><a name="line.207"></a>
-<span class="sourceLineNo">208</span>  private void metacomparisons(final CellComparatorImpl c) {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    long now = System.currentTimeMillis();<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    assertTrue(c.compare(new KeyValue(<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",a,,0,1"), now),<a name="line.211"></a>
-<span class="sourceLineNo">212</span>      new KeyValue(<a name="line.212"></a>
-<span class="sourceLineNo">213</span>          Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",a,,0,1"), now)) == 0);<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    KeyValue a = new KeyValue(<a name="line.214"></a>
-<span class="sourceLineNo">215</span>        Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",a,,0,1"), now);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    KeyValue b = new KeyValue(<a name="line.216"></a>
-<span class="sourceLineNo">217</span>        Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",a,,0,2"), now);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    assertTrue(c.compare(new KeyValue(<a name="line.219"></a>
-<span class="sourceLineNo">220</span>        Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",a,,0,2"), now),<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      new KeyValue(<a name="line.221"></a>
-<span class="sourceLineNo">222</span>          Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",a,,0,1"), now)) &gt; 0);<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  }<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>  private void comparisons(final CellComparatorImpl c) {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    long now = System.currentTimeMillis();<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    assertTrue(c.compare(new KeyValue(<a name="line.227"></a>
-<span class="sourceLineNo">228</span>        Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",,1"), now),<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      new KeyValue(<a name="line.229"></a>
-<span class="sourceLineNo">230</span>          Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",,1"), now)) == 0);<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    assertTrue(c.compare(new KeyValue(<a name="line.231"></a>
-<span class="sourceLineNo">232</span>        Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",,1"), now),<a name="line.232"></a>
-<span class="sourceLineNo">233</span>      new KeyValue(<a name="line.233"></a>
-<span class="sourceLineNo">234</span>          Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",,2"), now)) &lt; 0);<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    assertTrue(c.compare(new KeyValue(<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",,2"), now),<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      new KeyValue(<a name="line.237"></a>
-<span class="sourceLineNo">238</span>          Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",,1"), now)) &gt; 0);<a name="line.238"></a>
-<span class="sourceLineNo">239</span>  }<a name="line.239"></a>
-<span class="sourceLineNo">240</span><a name="line.240"></a>
-<span class="sourceLineNo">241</span>  @Test<a name="line.241"></a>
-<span class="sourceLineNo">242</span>  public void testBinaryKeys() throws Exception {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    Set&lt;KeyValue&gt; set = new TreeSet&lt;&gt;(CellComparatorImpl.COMPARATOR);<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    final byte [] fam = Bytes.toBytes("col");<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    final byte [] qf = Bytes.toBytes("umn");<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    final byte [] nb = new byte[0];<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    KeyValue [] keys = {new KeyValue(Bytes.toBytes("aaaaa,\u0000\u0000,2"), fam, qf, 2, nb),<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      new KeyValue(Bytes.toBytes("aaaaa,\u0001,3"), fam, qf, 3, nb),<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      new KeyValue(Bytes.toBytes("aaaaa,,1"), fam, qf, 1, nb),<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      new KeyValue(Bytes.toBytes("aaaaa,\u1000,5"), fam, qf, 5, nb),<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      new KeyValue(Bytes.toBytes("aaaaa,a,4"), fam, qf, 4, nb),<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      new KeyValue(Bytes.toBytes("a,a,0"), fam, qf, 0, nb),<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    };<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    // Add to set with bad comparator<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    Collections.addAll(set, keys);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    // This will output the keys incorrectly.<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    boolean assertion = false;<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    int count = 0;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    try {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      for (KeyValue k: set) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        assertTrue(count++ == k.getTimestamp());<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      }<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    } catch (java.lang.AssertionError e) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      // Expected<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      assertion = true;<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    assertTrue(assertion);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    // Make set with good comparator<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    set = new TreeSet&lt;&gt;(CellComparatorImpl.META_COMPARATOR);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    Collections.addAll(set, keys);<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    count = 0;<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    for (KeyValue k: set) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      assertTrue(count++ == k.getTimestamp());<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    }<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  }<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>  @Test<a name="line.277"></a>
-<span class="sourceLineNo">278</span>  public void testStackedUpKeyValue() {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    // Test multiple KeyValues in a single blob.<a name="line.279"></a>
-<span class="sourceLineNo">280</span><a name="line.280"></a>
-<span class="sourceLineNo">281</span>    // TODO actually write this test!<a name="line.281"></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>  private void metacomparisons(final CellComparatorImpl c) {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    long now = System.currentTimeMillis();<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    assertTrue(c.compare(new KeyValue(<a name="line.212"></a>
+<span class="sourceLineNo">213</span>        Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",a,,0,1"), now),<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      new KeyValue(<a name="line.214"></a>
+<span class="sourceLineNo">215</span>          Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",a,,0,1"), now)) == 0);<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    KeyValue a = new KeyValue(<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",a,,0,1"), now);<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    KeyValue b = new KeyValue(<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",a,,0,2"), now);<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    assertTrue(c.compare(new KeyValue(<a name="line.221"></a>
+<span class="sourceLineNo">222</span>        Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",a,,0,2"), now),<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      new KeyValue(<a name="line.223"></a>
+<span class="sourceLineNo">224</span>          Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",a,,0,1"), now)) &gt; 0);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
+<span class="sourceLineNo">226</span><a name="line.226"></a>
+<span class="sourceLineNo">227</span>  private void comparisons(final CellComparatorImpl c) {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    long now = System.currentTimeMillis();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    assertTrue(c.compare(new KeyValue(<a name="line.229"></a>
+<span class="sourceLineNo">230</span>        Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",,1"), now),<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      new KeyValue(<a name="line.231"></a>
+<span class="sourceLineNo">232</span>          Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",,1"), now)) == 0);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    assertTrue(c.compare(new KeyValue(<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",,1"), now),<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      new KeyValue(<a name="line.235"></a>
+<span class="sourceLineNo">236</span>          Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",,2"), now)) &lt; 0);<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    assertTrue(c.compare(new KeyValue(<a name="line.237"></a>
+<span class="sourceLineNo">238</span>        Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",,2"), now),<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      new KeyValue(<a name="line.239"></a>
+<span class="sourceLineNo">240</span>          Bytes.toBytes(TableName.META_TABLE_NAME.getNameAsString()+",,1"), now)) &gt; 0);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>  }<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span>  @Test<a name="line.243"></a>
+<span class="sourceLineNo">244</span>  public void testBinaryKeys() throws Exception {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    Set&lt;KeyValue&gt; set = new TreeSet&lt;&gt;(CellComparatorImpl.COMPARATOR);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    final byte [] fam = Bytes.toBytes("col");<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    final byte [] qf = Bytes.toBytes("umn");<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    final byte [] nb = new byte[0];<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    KeyValue [] keys = {new KeyValue(Bytes.toBytes("aaaaa,\u0000\u0000,2"), fam, qf, 2, nb),<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      new KeyValue(Bytes.toBytes("aaaaa,\u0001,3"), fam, qf, 3, nb),<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      new KeyValue(Bytes.toBytes("aaaaa,,1"), fam, qf, 1, nb),<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      new KeyValue(Bytes.toBytes("aaaaa,\u1000,5"), fam, qf, 5, nb),<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      new KeyValue(Bytes.toBytes("aaaaa,a,4"), fam, qf, 4, nb),<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      new KeyValue(Bytes.toBytes("a,a,0"), fam, qf, 0, nb),<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    };<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    // Add to set with bad comparator<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    Collections.addAll(set, keys);<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    // This will output the keys incorrectly.<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    boolean assertion = false;<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    int count = 0;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    try {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      for (KeyValue k: set) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>        assertTrue(count++ == k.getTimestamp());<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      }<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    } catch (java.lang.AssertionError e) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      // Expected<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      assertion = true;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    }<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    assertTrue(assertion);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    // Make set with good comparator<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    set = new TreeSet&lt;&gt;(CellComparatorImpl.META_COMPARATOR);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    Collections.addAll(set, keys);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    count = 0;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    for (KeyValue k: set) {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      assertTrue(count++ == k.getTimestamp());<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    }<a name="line.276"></a>
+<span class="sourceLineNo">277</span>  }<a name="line.277"></a>
+<span class="sourceLineNo">278</span><a name="line.278"></a>
+<span class="sourceLineNo">279</span>  @Test<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  public void testStackedUpKeyValue() {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    // Test multiple KeyValues in a single blob.<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">283</span>    // TODO actually write this test!<a name="line.283"></a>
 <span class="sourceLineNo">284</span><a name="line.284"></a>
-<span class="sourceLineNo">285</span>  private final byte[] rowA = Bytes.toBytes("rowA");<a name="line.285"></a>
-<span class="sourceLineNo">286</span>  private final byte[] rowB = Bytes.toBytes("rowB");<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>  private final byte[] family = Bytes.toBytes("family");<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  private final byte[] qualA = Bytes.toBytes("qfA");<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  private final byte[] qualB = Bytes.toBytes("qfB");<a name="line.290"></a>
-<span class="sourceLineNo">291</span><a name="line.291"></a>
-<span class="sourceLineNo">292</span>  private void assertKVLess(CellComparator c,<a name="line.292"></a>
-<span class="sourceLineNo">293</span>                            KeyValue less,<a name="line.293"></a>
-<span class="sourceLineNo">294</span>                            KeyValue greater) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    int cmp = c.compare(less,greater);<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    assertTrue(cmp &lt; 0);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    cmp = c.compare(greater,less);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    assertTrue(cmp &gt; 0);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>  }<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>  private void assertKVLessWithoutRow(CellComparator c, int common, KeyValue less,<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      KeyValue greater) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    int cmp = c.compare(less, greater);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    assertTrue(cmp &lt; 0);<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    cmp = c.compare(greater, less);<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    assertTrue(cmp &gt; 0);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>  @Test<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  public void testCompareWithoutRow() {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    final CellComparator c = CellComparatorImpl.COMPARATOR;<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    byte[] row = Bytes.toBytes("row");<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>    byte[] fa = Bytes.toBytes("fa");<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    byte[] fami = Bytes.toBytes("fami");<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    byte[] fami1 = Bytes.toBytes("fami1");<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>    byte[] qual0 = Bytes.toBytes("");<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    byte[] qual1 = Bytes.toBytes("qf1");<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    byte[] qual2 = Bytes.toBytes("qf2");<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    long ts = 1;<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>    // 'fa:'<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    KeyValue kv_0 = new KeyValue(row, fa, qual0, ts, KeyValue.Type.Put);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    // 'fami:'<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    KeyValue kv0_0 = new KeyValue(row, fami, qual0, ts, KeyValue.Type.Put);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    // 'fami:qf1'<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    KeyValue kv0_1 = new KeyValue(row, fami, qual1, ts, KeyValue.Type.Put);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    // 'fami:qf2'<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    KeyValue kv0_2 = new KeyValue(row, fami, qual2, ts, KeyValue.Type.Put);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    // 'fami1:'<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    KeyValue kv1_0 = new KeyValue(row, fami1, qual0, ts, KeyValue.Type.Put);<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>    // 'fami:qf1' &lt; 'fami:qf2'<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    assertKVLessWithoutRow(c, 0, kv0_1, kv0_2);<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    // 'fami:qf1' &lt; 'fami1:'<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    assertKVLessWithoutRow(c, 0, kv0_1, kv1_0);<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>    // Test comparison by skipping the same prefix bytes.<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    /***<a name="line.340"></a>
-<span class="sourceLineNo">341</span>     * KeyValue Format and commonLength:<a name="line.341"></a>
-<span class="sourceLineNo">342</span>     * |_keyLen_|_valLen_|_rowLen_|_rowKey_|_famiLen_|_fami_|_Quali_|....<a name="line.342"></a>
-<span class="sourceLineNo">343</span>     * ------------------|-------commonLength--------|--------------<a name="line.343"></a>
-<span class="sourceLineNo">344</span>     */<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    int commonLength = KeyValue.ROW_LENGTH_SIZE + KeyValue.FAMILY_LENGTH_SIZE<a name="line.345"></a>
-<span class="sourceLineNo">346</span>        + row.length;<a name="line.346"></a>
-<span class="sourceLineNo">347</span>    // 'fa:' &lt; 'fami:'. They have commonPrefix + 2 same prefix bytes.<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    assertKVLessWithoutRow(c, commonLength + 2, kv_0, kv0_0);<a name="line.348"></a>
-<span class="sourceLineNo">349</span>    // 'fami:' &lt; 'fami:qf1'. They have commonPrefix + 4 same prefix bytes.<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    assertKVLessWithoutRow(c, commonLength + 4, kv0_0, kv0_1);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    // 'fami:qf1' &lt; 'fami1:'. They have commonPrefix + 4 same prefix bytes.<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    assertKVLessWithoutRow(c, commonLength + 4, kv0_1, kv1_0);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    // 'fami:qf1' &lt; 'fami:qf2'. They have commonPrefix + 6 same prefix bytes.<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    assertKVLessWithoutRow(c, commonLength + 6, kv0_1, kv0_2);<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>  @Test<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  public void testFirstLastOnRow() {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    final CellComparator c = CellComparatorImpl.COMPARATOR;<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    long ts = 1;<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    byte[] bufferA = new byte[128];<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    int offsetA = 0;<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    byte[] bufferB = new byte[128];<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    int offsetB = 7;<a name="line.364"></a>
-<span class="sourceLineNo">365</span><a name="line.365"></a>
-<span class="sourceLineNo">366</span>    // These are listed in sort order (ie: every one should be less<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    // than the one on the next line).<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    final KeyValue firstOnRowA = KeyValueUtil.createFirstOnRow(rowA);<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    final KeyValue firstOnRowABufferFamQual = KeyValueUtil.createFirstOnRow(bufferA, offsetA,<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        rowA, 0, rowA.length, family, 0, family.length, qualA, 0, qualA.length);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>    final KeyValue kvA_1 = new KeyValue(rowA, null, null, ts, KeyValue.Type.Put);<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    final KeyValue kvA_2 = new KeyValue(rowA, family, qualA, ts, KeyValue.Type.Put);<a name="line.372"></a>
-<span class="sourceLineNo">373</span><a name="line.373"></a>
-<span class="sourceLineNo">374</span>    final KeyValue lastOnRowA = KeyValueUtil.createLastOnRow(rowA);<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    final KeyValue firstOnRowB = KeyValueUtil.createFirstOnRow(rowB);<a name="line.375"></a>
-<span class="sourceLineNo">376</span>    final KeyValue firstOnRowBBufferFam = KeyValueUtil.createFirstOnRow(bufferB, offsetB,<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        rowB, 0, rowB.length, family, 0, family.length, null, 0, 0);<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    final KeyValue kvB = new KeyValue(rowB, family, qualA, ts, KeyValue.Type.Put);<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>    assertKVLess(c, firstOnRowA, firstOnRowB);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    assertKVLess(c, firstOnRowA, firstOnRowBBufferFam);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    assertKVLess(c, firstOnRowABufferFamQual, firstOnRowB);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    assertKVLess(c, firstOnRowA, kvA_1);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    assertKVLess(c, firstOnRowA, kvA_2);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    assertKVLess(c, firstOnRowABufferFamQual, kvA_2);<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    assertKVLess(c, kvA_1, kvA_2);<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    assertKVLess(c, kvA_2, firstOnRowB);<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    assertKVLess(c, kvA_1, firstOnRowB);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    assertKVLess(c, kvA_2, firstOnRowBBufferFam);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    assertKVLess(c, kvA_1, firstOnRowBBufferFam);<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>    assertKVLess(c, lastOnRowA, firstOnRowB);<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    assertKVLess(c, lastOnRowA, firstOnRowBBufferFam);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    assertKVLess(c, firstOnRowB, kvB);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    assertKVLess(c, firstOnRowBBufferFam, kvB);<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    assertKVLess(c, lastOnRowA, kvB);<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>    assertKVLess(c, kvA_2, lastOnRowA);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    assertKVLess(c, kvA_1, lastOnRowA);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    assertKVLess(c, firstOnRowA, lastOnRowA);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    assertKVLess(c, firstOnRowABufferFamQual, lastOnRowA);<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  }<a name="line.402"></a>
-<span class="sourceLineNo">403</span><a name="line.403"></a>
-<span class="sourceLineNo">404</span>  @Test<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  public void testCreateKeyOnly() throws Exception {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    long ts = 1;<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    byte [] value = Bytes.toBytes("a real value");<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    byte [] evalue = new byte[0]; // empty value<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>    for (byte[] val : new byte[][]{value, evalue}) {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      for (boolean useLen : new boolean[]{false,true}) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        KeyValue kv1 = new KeyValue(rowA, family, qualA, ts, val);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        KeyValue kv1ko = kv1.createKeyOnly(useLen);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        // keys are still the same<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        assertTrue(kv1.equals(kv1ko));<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        // but values are not<a name="line.416"></a>
-<span class="sourceLineNo">417</span>        assertTrue(kv1ko.getValueLength() == (useLen?Bytes.SIZEOF_INT:0));<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        if (useLen) {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>          assertEquals(kv1.getValueLength(),<a name="line.419"></a>
-<span class="sourceLineNo">420</span>            Bytes.toInt(kv1ko.getValueArray(), kv1ko.getValueOffset(), kv1ko.getValueLength()));<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>  }<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span>  @Test<a name="line.426"></a>
-<span class="sourceLineNo">427</span>  public void testCreateKeyValueFromKey() {<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    KeyValue kv = new KeyValue(Bytes.toBytes("myRow"), Bytes.toBytes("myCF"),<a name="line.428"></a>
-<span class="sourceLineNo">429</span>        Bytes.toBytes("myQualifier"), 12345L, Bytes.toBytes("myValue"));<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    int initialPadding = 10;<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    int endingPadding = 20;<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    int keyLen = kv.getKeyLength();<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    byte[] tmpArr = new byte[initialPadding + endingPadding + keyLen];<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    System.arraycopy(kv.getBuffer(), kv.getKeyOffset(), tmpArr,<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        initialPadding, keyLen);<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    KeyValue kvFromKey = KeyValueUtil.createKeyValueFromKey(tmpArr, initialPadding,<a name="line.436"></a>
-<span class="sourceLineNo">437</span>        keyLen);<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    assertEquals(keyLen, kvFromKey.getKeyLength());<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    assertEquals(KeyValue.ROW_OFFSET + keyLen, kvFromKey.getBuffer().length);<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    System.err.println("kv=" + kv);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    System.err.println("kvFromKey=" + kvFromKey);<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    assertEquals(kvFromKey.toString(),<a name="line.442"></a>
-<span class="sourceLineNo">443</span>        kv.toString().replaceAll("=[0-9]+", "=0"));<a name="line.443"></a>
-<span class="sourceLineNo">444</span>  }<a name="line.444"></a>
-<span class="sourceLineNo">445</span><a name="line.445"></a>
-<span class="sourceLineNo">446</span>  /**<a name="line.446"></a>
-<span class="sourceLineNo">447</span>   * Tests that getTimestamp() does always return the proper timestamp, even after updating it.<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   * See HBASE-6265.<a name="line.448"></a>
-<span class="sourceLineNo">449</span>   */<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  @Test<a name="line.450"></a>
-<span class="sourceLineNo">451</span>  public void testGetTimestamp() {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    KeyValue kv = new KeyValue(Bytes.toBytes("myRow"), Bytes.toBytes("myCF"),<a name="line.452"></a>
-<span class="sourceLineNo">453</span>      Bytes.toBytes("myQualifier"), HConstants.LATEST_TIMESTAMP,<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      Bytes.toBytes("myValue"));<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    long time1 = kv.getTimestamp();<a name="line.455"></a>
-<span class="sourceLineNo">456</span>    kv.updateLatestStamp(Bytes.toBytes(12345L));<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    long time2 = kv.getTimestamp();<a name="line.457"></a>
-<span class="sourceLineNo">458</span>    assertEquals(HConstants.LATEST_TIMESTAMP, time1);<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    assertEquals(12345L, time2);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>  }<a name="line.460"></a>
-<span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>  @Test<a name="line.462"></a>
-<span class="sourceLineNo">463</span>  public void testKVsWithTags() {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    byte[] row = Bytes.toBytes("myRow");<a name="line.464"></a>
-<span class="sourceLineNo">465</span>    byte[] cf = Bytes.toBytes("myCF");<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    byte[] q = Bytes.toBytes("myQualifier");<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    byte[] value = Bytes.toBytes("myValue");<a name="line.467"></a>
-<span class="sourceLineNo">468</span>    byte[] metaValue1 = Bytes.toBytes("metaValue1");<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    byte[] metaValue2 = Bytes.toBytes("metaValue2");<a name="line.469"></a>
-<span class="sourceLineNo">470</span>    KeyValue kv = new KeyValue(row, cf, q, HConstants.LATEST_TIMESTAMP, value, new Tag[] {<a name="line.470"></a>
-<span class="sourceLineNo">471</span>        new ArrayBackedTag((byte) 1, metaValue1), new ArrayBackedTag((byte) 2, metaValue2) });<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    assertTrue(kv.getTagsLength() &gt; 0);<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    assertTrue(Bytes.equals(kv.getRowArray(), kv.getRowOffset(), kv.getRowLength(), row, 0,<a name="line.473"></a>
-<span class="sourceLineNo">474</span>      row.length));<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    assertTrue(Bytes.equals(kv.getFamilyArray(), kv.getFamilyOffset(), kv.getFamilyLength(), cf, 0,<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      cf.length));<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    assertTrue(Bytes.equals(kv.getQualifierArray(), kv.getQualifierOffset(),<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      kv.getQualifierLength(), q, 0, q.length));<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    assertTrue(Bytes.equals(kv.getValueArray(), kv.getValueOffset(), kv.getValueLength(), value, 0,<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      value.length));<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    List&lt;Tag&gt; tags = PrivateCellUtil.getTags(kv);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    assertNotNull(tags);<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    assertEquals(2, tags.size());<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    boolean meta1Ok = false, meta2Ok = false;<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    for (Tag tag : tags) {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>      if (tag.getType() == (byte) 1) {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>        if (Bytes.equals(Tag.cloneValue(tag), metaValue1)) {<a name="line.487"></a>
-<span class="sourceLineNo">488</span>          meta1Ok = true;<a name="line.488"></a>
-<span class="sourceLineNo">489</span>        }<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      } else {<a name="line.490"></a>
-<span class="sourceLineNo">491</span>        if (Bytes.equals(Tag.cloneValue(tag), metaValue2)) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>          meta2Ok = true;<a name="line.492"></a>
-<span class="sourceLineNo">493</span>        }<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>    assertTrue(meta1Ok);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    assertTrue(meta2Ok);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>    Iterator&lt;Tag&gt; tagItr = PrivateCellUtil.tagsIterator(kv);<a name="line.498"></a>
-<span class="sourceLineNo">499</span>    //Iterator&lt;Tag&gt; tagItr = kv.tagsIterator();<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    assertTrue(tagItr.hasNext());<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    Tag next = tagItr.next();<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    assertEquals(10, next.getValueLength());<a name="line.502"></a>
-<span class="sourceLineNo">503</span>    assertEquals((byte) 1, next.getType());<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    Bytes.equals(Tag.cloneValue(next), metaValue1);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    assertTrue(tagItr.hasNext());<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    next = tagItr.next();<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    assertEquals(10, next.getValueLength());<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    assertEquals((byte) 2, next.getType());<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    Bytes.equals(Tag.cloneValue(next), metaValue2);<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    assertFalse(tagItr.hasNext());<a name="line.510"></a>
-<span class="sourceLineNo">511</span><a name="line.511"></a>
-<span class="sourceLineNo">512</span>    tagItr = PrivateCellUtil.tagsIterator(kv);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    assertTrue(tagItr.hasNext());<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    next = tagItr.next();<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    assertEquals(10, next.getValueLength());<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    assertEquals((byte) 1, next.getType());<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    Bytes.equals(Tag.cloneValue(next), metaValue1);<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    assertTrue(tagItr.hasNext());<a name="line.518"></a>
-<span class="sourceLineNo">519</span>    next = tagItr.next();<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    assertEquals(10, next.getValueLength());<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    assertEquals((byte) 2, next.getType());<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    Bytes.equals(Tag.cloneValue(next), metaValue2);<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    assertFalse(tagItr.hasNext());<a name="line.523"></a>
-<span class="sourceLineNo">524</span>  }<a name="line.524"></a>
-<span class="sourceLineNo">525</span><a name="line.525"></a>
-<span class="sourceLineNo">526</span>  @Test<a name="line.526"></a>
-<span class="sourceLineNo">527</span>  public void testMetaKeyComparator() {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    CellComparator c = CellComparatorImpl.META_COMPARATOR;<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    long now = System.currentTimeMillis();<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>    KeyValue a = new KeyValue(Bytes.toBytes("table1"), now);<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    KeyValue b = new KeyValue(Bytes.toBytes("table2"), now);<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.533"></a>
-<span class="sourceLineNo">534</span><a name="line.534"></a>
-<span class="sourceLineNo">535</span>    a = new KeyValue(Bytes.toBytes("table1,111"), now);<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    b = new KeyValue(Bytes.toBytes("table2"), now);<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.537"></a>
-<span class="sourceLineNo">538</span><a name="line.538"></a>
-<span class="sourceLineNo">539</span>    a = new KeyValue(Bytes.toBytes("table1"), now);<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    b = new KeyValue(Bytes.toBytes("table2,111"), now);<a name="line.540"></a>
-<span class="sourceLineNo">541</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.541"></a>
-<span class="sourceLineNo">542</span><a name="line.542"></a>
-<span class="sourceLineNo">543</span>    a = new KeyValue(Bytes.toBytes("table,111"), now);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    b = new KeyValue(Bytes.toBytes("table,2222"), now);<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.545"></a>
-<span class="sourceLineNo">546</span><a name="line.546"></a>
-<span class="sourceLineNo">547</span>    a = new KeyValue(Bytes.toBytes("table,111,aaaa"), now);<a name="line.547"></a>
-<span class="sourceLineNo">548</span>    b = new KeyValue(Bytes.toBytes("table,2222"), now);<a name="line.548"></a>
-<span class="sourceLineNo">549</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.549"></a>
-<span class="sourceLineNo">550</span><a name="line.550"></a>
-<span class="sourceLineNo">551</span>    a = new KeyValue(Bytes.toBytes("table,111"), now);<a name="line.551"></a>
-<span class="sourceLineNo">552</span>    b = new KeyValue(Bytes.toBytes("table,2222.bbb"), now);<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.553"></a>
-<span class="sourceLineNo">554</span><a name="line.554"></a>
-<span class="sourceLineNo">555</span>    a = new KeyValue(Bytes.toBytes("table,,aaaa"), now);<a name="line.555"></a>
-<span class="sourceLineNo">556</span>    b = new KeyValue(Bytes.toBytes("table,111,bbb"), now);<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.557"></a>
-<span class="sourceLineNo">558</span><a name="line.558"></a>
-<span class="sourceLineNo">559</span>    a = new KeyValue(Bytes.toBytes("table,111,aaaa"), now);<a name="line.559"></a>
-<span class="sourceLineNo">560</span>    b = new KeyValue(Bytes.toBytes("table,111,bbb"), now);<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.561"></a>
-<span class="sourceLineNo">562</span><a name="line.562"></a>
-<span class="sourceLineNo">563</span>    a = new KeyValue(Bytes.toBytes("table,111,xxxx"), now);<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    b = new KeyValue(Bytes.toBytes("table,111,222,bbb"), now);<a name="line.564"></a>
-<span class="sourceLineNo">565</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.565"></a>
-<span class="sourceLineNo">566</span><a name="line.566"></a>
-<span class="sourceLineNo">567</span>    a = new KeyValue(Bytes.toBytes("table,111,11,xxx"), now);<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    b = new KeyValue(Bytes.toBytes("table,111,222,bbb"), now);<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    assertTrue(c.compare(a, b) &lt; 0);<a name="line.569"></a>
-<span class="sourceLineNo">570</span>  }<a name="line.570"></a>
-<span class="sourceLineNo">571</span><a name="line.571"></a>
-<span class="sourceLineNo">572</span>  @Test<a name="line.572"></a>
-<span class="sourceLineNo">573</span>  public void testEqualsAndHashCode() throws Exception {<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    KeyValue kvA1 = new KeyValue(Bytes.toBytes("key"), Bytes.toBytes("cf"),<a name="line.574"></a>
-<span class="sourceLineNo">575</span>        Bytes.toBytes("qualA"), Bytes.toBytes("1"));<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    KeyValue kvA2 = new KeyValue(Bytes.toBytes("key"), Bytes.toBytes("cf"),<a name="line.576"></a>
-<span class="sourceLineNo">577</span>        Bytes.toBytes("qualA"), Bytes.toBytes("2"));<a name="line.577"></a>
-<span class="sourceLineNo">578</span>    // We set a different sequence id on kvA2 to demonstrate that the equals and hashCode also<a name="line.578"></a>
-<span class="sourceLineNo">579</span>    // don't take this into account.<a name="line.579"></a>
-<span class="sourceLineNo">580</span>    kvA2.setSequenceId(2);<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    KeyValue kvB = new KeyValue(Bytes.toBytes("key"), Bytes.toBytes("cf"),<a name="line.581"></a>
-<span class="sourceLineNo">582</span>        Bytes.toBytes("qualB"), Bytes.toBytes("1"));<a name="line.582"></a>
-<span class="sourceLineNo">583</span><a name="line.583"></a>
-<span class="sourceLineNo">584</span>    assertEquals(kvA1, kvA2);<a name="line.584"></a>
-<span class="sourceLineNo">585</span>    assertNotEquals(kvA1, kvB);<a name="line.585"></a>
-<span class="sourceLineNo">586</span>    assertEquals(kvA1.hashCode(), kvA2.hashCode());<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    assertNotEquals(kvA1.hashCode(), kvB.hashCode());<a name="line.587"></a>
-<span class="sourceLineNo">588</span><a name="line.588"></a>
-<span class="sourceLineNo">589</span>  }<a name="line.589"></a>
+<span class="sourceLineNo">285</span>  }<a name="line.285"></a>
+<span class="sourceLineNo">286</span><a name="line.286"></a>
+<span class="sourceLineNo">287</span>  private final byte[] rowA = Bytes.toBytes("rowA");<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  private final byte[] rowB = Bytes.toBytes("rowB");<a name="line.288"></a>
+<span class="sourceLineNo">289</span><a name="line.289"></a>
+<span class="sourceLineNo">290</span>  private final byte[] family = Bytes.toBytes("family");<a name="line.290"></a>
+<span class="sourceLineNo">291</span>  private final byte[] qualA = Bytes.toBytes("qfA");<a name="line.291"></a>
+<span class="sourceLineNo">292</span>  private final byte[] qualB = Bytes.toBytes("qfB");<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>  private void assertKVLess(CellComparator c,<a name="line.294"></a>
+<span class="sourceLineNo">295</span>                            KeyValue less,<a name="line.295"></a>
+<span class="sourceLineNo">296</span>                            KeyValue greater) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    int cmp = c.compare(less,greater);<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    assertTrue(cmp &lt; 0);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    cmp = c.compare(greater,less);<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    assertTrue(cmp &gt; 0);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>  }<a name="line.301"></a>
+<span class="sourceLineNo">302</span><a name="line.302"></a>
+<span class="sourceLineNo">303</span>  private void assertKVLessWithoutRow(CellComparator c, int common, KeyValue less,<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      KeyValue greater) {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    int cmp = c.compare(less, greater);<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    assertTrue(cmp &lt; 0);<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    cmp = c.compare(greater, less);<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    assertTrue(cmp &gt; 0);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  }<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>  @Test<a name="line.311"></a>
+<span class="sourceLineNo">312</span>  public void testCompareWithoutRow() {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    final CellComparator c = CellComparatorImpl.COMPARATOR;<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    byte[] row = Bytes.toBytes("row");<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>    byte[] fa = Bytes.toBytes("fa");<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    byte[] fami = Bytes.toBytes("fami");<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    byte[] fami1 = Bytes.toBytes("fami1");<a name="line.318"></a>
+<span class="sourceLineNo">319</span><a name="line.319"></a>
+<span class="sourceLineNo">320</span>    byte[] qual0 = Bytes.toBytes("");<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    byte[] qual1 = Bytes.toBytes("qf1");<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    byte[] qual2 = Bytes.toBytes("qf2");<a name="line.322"></a>
+<span class

<TRUNCATED>

[26/29] hbase-site git commit: Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/devapidocs/org/apache/hadoop/hbase/KeyValue.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/KeyValue.html b/devapidocs/org/apache/hadoop/hbase/KeyValue.html
index e8272a2..8d7cd22 100644
--- a/devapidocs/org/apache/hadoop/hbase/KeyValue.html
+++ b/devapidocs/org/apache/hadoop/hbase/KeyValue.html
@@ -1393,7 +1393,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>LOWESTKEY</h4>
-<pre>public static final&nbsp;<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/KeyValue.html#line.274">LOWESTKEY</a></pre>
+<pre>public static final&nbsp;<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/KeyValue.html#line.283">LOWESTKEY</a></pre>
 <div class="block">Lowest possible key.
  Makes a Key with highest possible Timestamp, empty row and column.  No
  key can be equal or lower than this one in memstore or in store file.</div>
@@ -1405,7 +1405,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>bytes</h4>
-<pre>protected&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.279">bytes</a></pre>
+<pre>protected&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.288">bytes</a></pre>
 </li>
 </ul>
 <a name="offset">
@@ -1414,7 +1414,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>offset</h4>
-<pre>protected&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.280">offset</a></pre>
+<pre>protected&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.289">offset</a></pre>
 </li>
 </ul>
 <a name="length">
@@ -1423,7 +1423,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>length</h4>
-<pre>protected&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.281">length</a></pre>
+<pre>protected&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.290">length</a></pre>
 </li>
 </ul>
 <a name="seqId">
@@ -1432,7 +1432,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockListLast">
 <li class="blockList">
 <h4>seqId</h4>
-<pre>private&nbsp;long <a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.299">seqId</a></pre>
+<pre>private&nbsp;long <a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.308">seqId</a></pre>
 </li>
 </ul>
 </li>
@@ -1449,7 +1449,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>KeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.305">KeyValue</a>()</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.314">KeyValue</a>()</pre>
 <div class="block">Writable Constructor -- DO NOT USE</div>
 </li>
 </ul>
@@ -1459,7 +1459,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>KeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.312">KeyValue</a>(byte[]&nbsp;bytes)</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.321">KeyValue</a>(byte[]&nbsp;bytes)</pre>
 <div class="block">Creates a KeyValue from the start of the specified byte array.
  Presumes <code>bytes</code> content is formatted as a KeyValue blob.</div>
 <dl>
@@ -1474,7 +1474,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>KeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.323">KeyValue</a>(byte[]&nbsp;bytes,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.332">KeyValue</a>(byte[]&nbsp;bytes,
                 int&nbsp;offset)</pre>
 <div class="block">Creates a KeyValue from the specified byte array and offset.
  Presumes <code>bytes</code> content starting at <code>offset</code> is
@@ -1492,7 +1492,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>KeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.334">KeyValue</a>(byte[]&nbsp;bytes,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.343">KeyValue</a>(byte[]&nbsp;bytes,
                 int&nbsp;offset,
                 int&nbsp;length)</pre>
 <div class="block">Creates a KeyValue from the specified byte array, starting at offset, and
@@ -1511,7 +1511,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>KeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.349">KeyValue</a>(byte[]&nbsp;bytes,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.359">KeyValue</a>(byte[]&nbsp;bytes,
                 int&nbsp;offset,
                 int&nbsp;length,
                 long&nbsp;ts)</pre>
@@ -1532,7 +1532,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>KeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.361">KeyValue</a>(byte[]&nbsp;row,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.371">KeyValue</a>(byte[]&nbsp;row,
                 long&nbsp;timestamp)</pre>
 <div class="block">Constructs KeyValue structure filled with null value.
  Sets type to <a href="../../../../org/apache/hadoop/hbase/KeyValue.Type.html#Maximum"><code>KeyValue.Type.Maximum</code></a></div>
@@ -1549,7 +1549,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>KeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.370">KeyValue</a>(byte[]&nbsp;row,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.380">KeyValue</a>(byte[]&nbsp;row,
                 long&nbsp;timestamp,
                 <a href="../../../../org/apache/hadoop/hbase/KeyValue.Type.html" title="enum in org.apache.hadoop.hbase">KeyValue.Type</a>&nbsp;type)</pre>
 <div class="block">Constructs KeyValue structure filled with null value.</div>
@@ -1566,7 +1566,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>KeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.381">KeyValue</a>(byte[]&nbsp;row,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.391">KeyValue</a>(byte[]&nbsp;row,
                 byte[]&nbsp;family,
                 byte[]&nbsp;qualifier)</pre>
 <div class="block">Constructs KeyValue structure filled with null value.
@@ -1585,7 +1585,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>KeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.393">KeyValue</a>(byte[]&nbsp;row,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.403">KeyValue</a>(byte[]&nbsp;row,
                 byte[]&nbsp;family,
                 byte[]&nbsp;qualifier,
                 byte[]&nbsp;value)</pre>
@@ -1605,7 +1605,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>KeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.407">KeyValue</a>(byte[]&nbsp;row,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.417">KeyValue</a>(byte[]&nbsp;row,
                 byte[]&nbsp;family,
                 byte[]&nbsp;qualifier,
                 long&nbsp;timestamp,
@@ -1629,7 +1629,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>KeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.421">KeyValue</a>(byte[]&nbsp;row,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.431">KeyValue</a>(byte[]&nbsp;row,
                 byte[]&nbsp;family,
                 byte[]&nbsp;qualifier,
                 long&nbsp;timestamp,
@@ -1653,7 +1653,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>KeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.436">KeyValue</a>(byte[]&nbsp;row,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.446">KeyValue</a>(byte[]&nbsp;row,
                 byte[]&nbsp;family,
                 byte[]&nbsp;qualifier,
                 long&nbsp;timestamp,
@@ -1679,7 +1679,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>KeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.452">KeyValue</a>(byte[]&nbsp;row,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.462">KeyValue</a>(byte[]&nbsp;row,
                 byte[]&nbsp;family,
                 byte[]&nbsp;qualifier,
                 long&nbsp;timestamp,
@@ -1705,7 +1705,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>KeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.472">KeyValue</a>(byte[]&nbsp;row,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.482">KeyValue</a>(byte[]&nbsp;row,
                 byte[]&nbsp;family,
                 byte[]&nbsp;qualifier,
                 long&nbsp;timestamp,
@@ -1731,7 +1731,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>KeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.491">KeyValue</a>(byte[]&nbsp;row,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.501">KeyValue</a>(byte[]&nbsp;row,
                 byte[]&nbsp;family,
                 byte[]&nbsp;qualifier,
                 long&nbsp;timestamp,
@@ -1760,7 +1760,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>KeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.508">KeyValue</a>(byte[]&nbsp;row,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.518">KeyValue</a>(byte[]&nbsp;row,
                 byte[]&nbsp;family,
                 byte[]&nbsp;qualifier,
                 long&nbsp;timestamp,
@@ -1787,7 +1787,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>KeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.529">KeyValue</a>(byte[]&nbsp;row,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.539">KeyValue</a>(byte[]&nbsp;row,
                 byte[]&nbsp;family,
                 byte[]&nbsp;qualifier,
                 int&nbsp;qoffset,
@@ -1822,7 +1822,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>KeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.551">KeyValue</a>(byte[]&nbsp;row,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.561">KeyValue</a>(byte[]&nbsp;row,
                 byte[]&nbsp;family,
                 byte[]&nbsp;qualifier,
                 int&nbsp;qoffset,
@@ -1855,7 +1855,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>KeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.567">KeyValue</a>(byte[]&nbsp;row,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.577">KeyValue</a>(byte[]&nbsp;row,
                 int&nbsp;roffset,
                 int&nbsp;rlength,
                 byte[]&nbsp;family,
@@ -1886,7 +1886,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>KeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.602">KeyValue</a>(byte[]&nbsp;buffer,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.612">KeyValue</a>(byte[]&nbsp;buffer,
                 int&nbsp;boffset,
                 byte[]&nbsp;row,
                 int&nbsp;roffset,
@@ -1938,7 +1938,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>KeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.638">KeyValue</a>(byte[]&nbsp;row,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.648">KeyValue</a>(byte[]&nbsp;row,
                 int&nbsp;roffset,
                 int&nbsp;rlength,
                 byte[]&nbsp;family,
@@ -1984,7 +1984,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>KeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.668">KeyValue</a>(byte[]&nbsp;row,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.678">KeyValue</a>(byte[]&nbsp;row,
                 int&nbsp;roffset,
                 int&nbsp;rlength,
                 byte[]&nbsp;family,
@@ -2027,7 +2027,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>KeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.694">KeyValue</a>(int&nbsp;rlength,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.704">KeyValue</a>(int&nbsp;rlength,
                 int&nbsp;flength,
                 int&nbsp;qlength,
                 long&nbsp;timestamp,
@@ -2056,7 +2056,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>KeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.716">KeyValue</a>(int&nbsp;rlength,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.726">KeyValue</a>(int&nbsp;rlength,
                 int&nbsp;flength,
                 int&nbsp;qlength,
                 long&nbsp;timestamp,
@@ -2087,7 +2087,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>KeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.728">KeyValue</a>(byte[]&nbsp;row,
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.738">KeyValue</a>(byte[]&nbsp;row,
                 int&nbsp;roffset,
                 int&nbsp;rlength,
                 byte[]&nbsp;family,
@@ -2106,7 +2106,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockListLast">
 <li class="blockList">
 <h4>KeyValue</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.738">KeyValue</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;c)</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.748">KeyValue</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;c)</pre>
 </li>
 </ul>
 </li>
@@ -2213,7 +2213,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getSequenceId</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.289">getSequenceId</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.298">getSequenceId</a>()</pre>
 <div class="block">used to achieve atomic operations in the memstore.</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -2231,7 +2231,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>setSequenceId</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.294">setSequenceId</a>(long&nbsp;seqId)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.303">setSequenceId</a>(long&nbsp;seqId)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/ExtendedCell.html#setSequenceId-long-">ExtendedCell</a></code></span></div>
 <div class="block">Sets with the given seqId.</div>
 <dl>
@@ -2248,7 +2248,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>createEmptyByteArray</h4>
-<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.758">createEmptyByteArray</a>(int&nbsp;rlength,
+<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.768">createEmptyByteArray</a>(int&nbsp;rlength,
                                            int&nbsp;flength,
                                            int&nbsp;qlength,
                                            long&nbsp;timestamp,
@@ -2276,7 +2276,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>checkParameters</h4>
-<pre>static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.816">checkParameters</a>(byte[]&nbsp;row,
+<pre>static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.826">checkParameters</a>(byte[]&nbsp;row,
                             int&nbsp;rlength,
                             byte[]&nbsp;family,
                             int&nbsp;flength,
@@ -2303,7 +2303,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>writeByteArray</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.872">writeByteArray</a>(byte[]&nbsp;buffer,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.882">writeByteArray</a>(byte[]&nbsp;buffer,
                                  int&nbsp;boffset,
                                  byte[]&nbsp;row,
                                  int&nbsp;roffset,
@@ -2353,7 +2353,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>createByteArray</h4>
-<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.947">createByteArray</a>(byte[]&nbsp;row,
+<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.957">createByteArray</a>(byte[]&nbsp;row,
                                       int&nbsp;roffset,
                                       int&nbsp;rlength,
                                       byte[]&nbsp;family,
@@ -2398,7 +2398,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>createByteArray</h4>
-<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.990">createByteArray</a>(byte[]&nbsp;row,
+<pre>private static&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1000">createByteArray</a>(byte[]&nbsp;row,
                                       int&nbsp;roffset,
                                       int&nbsp;rlength,
                                       byte[]&nbsp;family,
@@ -2426,7 +2426,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>equals</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1056">equals</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>&nbsp;other)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1066">equals</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>&nbsp;other)</pre>
 <div class="block">Needed doing 'contains' on List.  Only compares the key portion, not the value.</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
@@ -2440,7 +2440,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>hashCode</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1067">hashCode</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1077">hashCode</a>()</pre>
 <div class="block">In line with <a href="../../../../org/apache/hadoop/hbase/KeyValue.html#equals-java.lang.Object-"><code>equals(Object)</code></a>, only uses the key portion, not the value.</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
@@ -2454,7 +2454,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>calculateHashForKey</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1071">calculateHashForKey</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
+<pre>private&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1081">calculateHashForKey</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
 </li>
 </ul>
 <a name="clone--">
@@ -2463,7 +2463,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>clone</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1099">clone</a>()
+<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1109">clone</a>()
                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/CloneNotSupportedException.html?is-external=true" title="class or interface in java.lang">CloneNotSupportedException</a></pre>
 <div class="block">Clones a KeyValue.  This creates a copy, re-allocating the buffer.</div>
 <dl>
@@ -2482,7 +2482,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>shallowCopy</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1116">shallowCopy</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1126">shallowCopy</a>()</pre>
 <div class="block">Creates a shallow copy of this KeyValue, reusing the data byte buffer.
  http://en.wikipedia.org/wiki/Object_copy</div>
 <dl>
@@ -2497,7 +2497,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1129">toString</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1139">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>
@@ -2510,7 +2510,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>keyToString</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1141">keyToString</a>(byte[]&nbsp;k)</pre>
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1151">keyToString</a>(byte[]&nbsp;k)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>k</code> - Key portion of a KeyValue.</dd>
@@ -2525,7 +2525,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringMap</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1156">toStringMap</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&gt;&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1166">toStringMap</a>()</pre>
 <div class="block">Produces a string map for this key/value pair. Useful for programmatic use
  and manipulation of the data stored in an WALKey, for example, printing
  as JSON. Values are left out due to their tendency to be large. If needed,
@@ -2542,7 +2542,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>keyToString</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1183">keyToString</a>(byte[]&nbsp;b,
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1193">keyToString</a>(byte[]&nbsp;b,
                                  int&nbsp;o,
                                  int&nbsp;l)</pre>
 <div class="block">Use for logging.</div>
@@ -2562,7 +2562,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>humanReadableTimestamp</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1203">humanReadableTimestamp</a>(long&nbsp;timestamp)</pre>
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1213">humanReadableTimestamp</a>(long&nbsp;timestamp)</pre>
 </li>
 </ul>
 <a name="getBuffer--">
@@ -2571,7 +2571,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getBuffer</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1225">getBuffer</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1235">getBuffer</a>()</pre>
 <div class="block">To be used only in tests where the Cells are clearly assumed to be of type KeyValue
  and that we need access to the backing array to do some test case related assertions.</div>
 <dl>
@@ -2586,7 +2586,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getOffset</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1232">getOffset</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1242">getOffset</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Offset into <a href="../../../../org/apache/hadoop/hbase/KeyValue.html#getBuffer--"><code>getBuffer()</code></a> at which this KeyValue starts.</dd>
@@ -2599,7 +2599,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1239">getLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1249">getLength</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Length of bytes this KeyValue occupies in <a href="../../../../org/apache/hadoop/hbase/KeyValue.html#getBuffer--"><code>getBuffer()</code></a>.</dd>
@@ -2612,7 +2612,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getLength</h4>
-<pre>private static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1256">getLength</a>(byte[]&nbsp;bytes,
+<pre>private static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1266">getLength</a>(byte[]&nbsp;bytes,
                              int&nbsp;offset)</pre>
 <div class="block">Determines the total length of the KeyValue stored in the specified
  byte array and offset.  Includes all headers.</div>
@@ -2631,7 +2631,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getKeyOffset</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1265">getKeyOffset</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1275">getKeyOffset</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Key offset in backing buffer..</dd>
@@ -2644,7 +2644,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getKeyString</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1269">getKeyString</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1279">getKeyString</a>()</pre>
 </li>
 </ul>
 <a name="getKeyLength--">
@@ -2653,7 +2653,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getKeyLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1276">getKeyLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1286">getKeyLength</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Length of key portion.</dd>
@@ -2666,7 +2666,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getValueArray</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1284">getValueArray</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1294">getValueArray</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/Cell.html#getValueArray--">Cell</a></code></span></div>
 <div class="block">Contiguous raw bytes that may start at any index in the containing array. Max length is
  Integer.MAX_VALUE which is 2,147,483,647 bytes.</div>
@@ -2684,7 +2684,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getValueOffset</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1292">getValueOffset</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1302">getValueOffset</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/Cell.html#getValueOffset--">getValueOffset</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></dd>
@@ -2699,7 +2699,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getValueLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1301">getValueLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1311">getValueLength</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/Cell.html#getValueLength--">getValueLength</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></dd>
@@ -2714,7 +2714,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getRowArray</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1310">getRowArray</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1320">getRowArray</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/Cell.html#getRowArray--">Cell</a></code></span></div>
 <div class="block">Contiguous raw bytes that may start at any index in the containing array. Max length is
  Short.MAX_VALUE which is 32,767 bytes.</div>
@@ -2732,7 +2732,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getRowOffset</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1318">getRowOffset</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1328">getRowOffset</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/Cell.html#getRowOffset--">getRowOffset</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></dd>
@@ -2747,7 +2747,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getRowLength</h4>
-<pre>public&nbsp;short&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1326">getRowLength</a>()</pre>
+<pre>public&nbsp;short&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1336">getRowLength</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/Cell.html#getRowLength--">getRowLength</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></dd>
@@ -2762,7 +2762,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getFamilyArray</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1334">getFamilyArray</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1344">getFamilyArray</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/Cell.html#getFamilyArray--">Cell</a></code></span></div>
 <div class="block">Contiguous bytes composed of legal HDFS filename characters which may start at any index in the
  containing array. Max length is Byte.MAX_VALUE, which is 127 bytes.</div>
@@ -2780,7 +2780,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getFamilyOffset</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1342">getFamilyOffset</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1352">getFamilyOffset</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/Cell.html#getFamilyOffset--">getFamilyOffset</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></dd>
@@ -2795,7 +2795,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getFamilyOffset</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1349">getFamilyOffset</a>(int&nbsp;rlength)</pre>
+<pre>private&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1359">getFamilyOffset</a>(int&nbsp;rlength)</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Family offset</dd>
@@ -2808,7 +2808,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getFamilyLength</h4>
-<pre>public&nbsp;byte&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1357">getFamilyLength</a>()</pre>
+<pre>public&nbsp;byte&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1367">getFamilyLength</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/Cell.html#getFamilyLength--">getFamilyLength</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></dd>
@@ -2823,7 +2823,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getFamilyLength</h4>
-<pre>public&nbsp;byte&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1364">getFamilyLength</a>(int&nbsp;foffset)</pre>
+<pre>public&nbsp;byte&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1374">getFamilyLength</a>(int&nbsp;foffset)</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Family length</dd>
@@ -2836,7 +2836,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getQualifierArray</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1372">getQualifierArray</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1382">getQualifierArray</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/Cell.html#getQualifierArray--">Cell</a></code></span></div>
 <div class="block">Contiguous raw bytes that may start at any index in the containing array.</div>
 <dl>
@@ -2853,7 +2853,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getQualifierOffset</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1380">getQualifierOffset</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1390">getQualifierOffset</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/Cell.html#getQualifierOffset--">getQualifierOffset</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></dd>
@@ -2868,7 +2868,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getQualifierOffset</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1387">getQualifierOffset</a>(int&nbsp;foffset)</pre>
+<pre>private&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1397">getQualifierOffset</a>(int&nbsp;foffset)</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Qualifier offset</dd>
@@ -2881,7 +2881,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getQualifierLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1395">getQualifierLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1405">getQualifierLength</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/Cell.html#getQualifierLength--">getQualifierLength</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></dd>
@@ -2896,7 +2896,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getQualifierLength</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1402">getQualifierLength</a>(int&nbsp;rlength,
+<pre>private&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1412">getQualifierLength</a>(int&nbsp;rlength,
                                int&nbsp;flength)</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -2910,7 +2910,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getTimestampOffset</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1409">getTimestampOffset</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1419">getTimestampOffset</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Timestamp offset</dd>
@@ -2923,7 +2923,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getTimestampOffset</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1417">getTimestampOffset</a>(int&nbsp;keylength)</pre>
+<pre>private&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1427">getTimestampOffset</a>(int&nbsp;keylength)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>keylength</code> - Pass if you have it to save on a int creation.</dd>
@@ -2938,7 +2938,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>isLatestTimestamp</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1424">isLatestTimestamp</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1434">isLatestTimestamp</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>True if this KeyValue has a LATEST_TIMESTAMP timestamp.</dd>
@@ -2951,7 +2951,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>updateLatestStamp</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1434">updateLatestStamp</a>(byte[]&nbsp;now)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1444">updateLatestStamp</a>(byte[]&nbsp;now)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>now</code> - Time to set into <code>this</code> IFF timestamp ==
@@ -2967,7 +2967,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>setTimestamp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1445">setTimestamp</a>(long&nbsp;ts)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1455">setTimestamp</a>(long&nbsp;ts)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/ExtendedCell.html#setTimestamp-long-">ExtendedCell</a></code></span></div>
 <div class="block">Sets with the given timestamp.</div>
 <dl>
@@ -2984,7 +2984,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>setTimestamp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1450">setTimestamp</a>(byte[]&nbsp;ts)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1460">setTimestamp</a>(byte[]&nbsp;ts)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/ExtendedCell.html#setTimestamp-byte:A-">ExtendedCell</a></code></span></div>
 <div class="block">Sets with the given timestamp.</div>
 <dl>
@@ -3001,7 +3001,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getKey</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1466">getKey</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1476">getKey</a>()</pre>
 <div class="block">Do not use unless you have to. Used internally for compacting and testing. Use
  <a href="../../../../org/apache/hadoop/hbase/KeyValue.html#getRowArray--"><code>getRowArray()</code></a>, <a href="../../../../org/apache/hadoop/hbase/KeyValue.html#getFamilyArray--"><code>getFamilyArray()</code></a>, <a href="../../../../org/apache/hadoop/hbase/KeyValue.html#getQualifierArray--"><code>getQualifierArray()</code></a>, and
  <a href="../../../../org/apache/hadoop/hbase/KeyValue.html#getValueArray--"><code>getValueArray()</code></a> if accessing a KeyValue client-side.</div>
@@ -3017,7 +3017,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getTimestamp</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1478">getTimestamp</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1488">getTimestamp</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/Cell.html#getTimestamp--">getTimestamp</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></dd>
@@ -3032,7 +3032,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getTimestamp</h4>
-<pre>long&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1486">getTimestamp</a>(int&nbsp;keylength)</pre>
+<pre>long&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1496">getTimestamp</a>(int&nbsp;keylength)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>keylength</code> - Pass if you have it to save on a int creation.</dd>
@@ -3047,7 +3047,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getTypeByte</h4>
-<pre>public&nbsp;byte&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1495">getTypeByte</a>()</pre>
+<pre>public&nbsp;byte&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1505">getTypeByte</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/Cell.html#getTypeByte--">getTypeByte</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></dd>
@@ -3064,7 +3064,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getTagsOffset</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1503">getTagsOffset</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1513">getTagsOffset</a>()</pre>
 <div class="block">This returns the offset where the tag actually starts.</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -3082,7 +3082,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getTagsLength</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1515">getTagsLength</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1525">getTagsLength</a>()</pre>
 <div class="block">This returns the total length of the tag bytes</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -3100,7 +3100,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getTagsArray</h4>
-<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1529">getTagsArray</a>()</pre>
+<pre>public&nbsp;byte[]&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1539">getTagsArray</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/ExtendedCell.html#getTagsArray--">ExtendedCell</a></code></span></div>
 <div class="block">Contiguous raw bytes representing tags that may start at any index in the containing array.</div>
 <dl>
@@ -3119,7 +3119,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>createKeyOnly</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1540">createKeyOnly</a>(boolean&nbsp;lenAsVal)</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1550">createKeyOnly</a>(boolean&nbsp;lenAsVal)</pre>
 <div class="block">Creates a new KeyValue that only contains the key portion (the value is
  set to be null).
 
@@ -3136,7 +3136,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getDelimiter</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1560">getDelimiter</a>(byte[]&nbsp;b,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1570">getDelimiter</a>(byte[]&nbsp;b,
                                int&nbsp;offset,
                                int&nbsp;length,
                                int&nbsp;delimiter)</pre>
@@ -3156,7 +3156,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>getDelimiterInReverse</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1581">getDelimiterInReverse</a>(byte[]&nbsp;b,
+<pre>public static&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.1591">getDelimiterInReverse</a>(byte[]&nbsp;b,
                                         int&nbsp;offset,
                                         int&nbsp;length,
                                         int&nbsp;delimiter)</pre>
@@ -3176,7 +3176,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>create</h4>
-<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.2236">create</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/DataInput.html?is-external=true" title="class or interface in java.io">DataInput</a>&nbsp;in)
+<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.2246">create</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/DataInput.html?is-external=true" title="class or interface in java.io">DataInput</a>&nbsp;in)
                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -3196,7 +3196,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>create</h4>
-<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.2248">create</a>(int&nbsp;length,
+<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.2258">create</a>(int&nbsp;length,
                               <a href="https://docs.oracle.com/javase/8/docs/api/java/io/DataInput.html?is-external=true" title="class or interface in java.io">DataInput</a>&nbsp;in)
                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Create a KeyValue reading <code>length</code> from <code>in</code></div>
@@ -3218,7 +3218,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <ul class="blockList">
 <li class="blockList">
 <h4>write</h4>
-<pre>public static&nbsp;long&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.2269">write</a>(<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;kv,
+<pre>public static&nbsp;long&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.2279">write</a>(<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;kv,
                          <a href="https://docs.oracle.com/javase/8/docs/api/java/io/DataOutput.html?is-external=true" title="class or interface in java.io">DataOutput</a>&nbsp;out)
                   throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Write out a KeyValue in the manner in which we used to when KeyValue was a Writable.</div>
@@ -3242,7 +3242,7 @@ public static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/KeyValue.K
 <li class="blockList">
 <h4>oswrite</h4>
 <pre><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true" title="class or interface in java.lang">@Deprecated</a>
-public static&nbsp;long&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.2294">oswrite</a>(<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;kv,
+public static&nbsp;long&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.2304">oswrite</a>(<a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase">KeyValue</a>&nbsp;kv,
                                        <a href="https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;out,
                                        boolean&nbsp;withTags)
                                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -3273,7 +3273,7 @@ public static&nbsp;long&nbsp;<a href="../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>write</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.2301">write</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;out,
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.2311">write</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;out,
                  boolean&nbsp;withTags)
           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/ExtendedCell.html#write-java.io.OutputStream-boolean-">ExtendedCell</a></code></span></div>
@@ -3302,7 +3302,7 @@ public static&nbsp;long&nbsp;<a href="../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>getSerializedSize</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.2308">getSerializedSize</a>(boolean&nbsp;withTags)</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.2318">getSerializedSize</a>(boolean&nbsp;withTags)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/ExtendedCell.html#getSerializedSize-boolean-">getSerializedSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a></code></dd>
@@ -3324,7 +3324,7 @@ public static&nbsp;long&nbsp;<a href="../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>write</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.2316">write</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buf,
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.2326">write</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;buf,
                   int&nbsp;offset)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/ExtendedCell.html#write-java.nio.ByteBuffer-int-">ExtendedCell</a></code></span></div>
 <div class="block">Write this Cell into the given buf's offset in a <a href="../../../../org/apache/hadoop/hbase/KeyValue.html" title="class in org.apache.hadoop.hbase"><code>KeyValue</code></a> format.</div>
@@ -3343,7 +3343,7 @@ public static&nbsp;long&nbsp;<a href="../../../../src-html/org/apache/hadoop/hba
 <ul class="blockList">
 <li class="blockList">
 <h4>heapSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.2342">heapSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.2352">heapSize</a>()</pre>
 <div class="block">HeapSize implementation
 
  We do not count the bytes in the rowCache because it should be empty for a KeyValue in the
@@ -3363,7 +3363,7 @@ public static&nbsp;long&nbsp;<a href="../../../../src-html/org/apache/hadoop/hba
 <ul class="blockListLast">
 <li class="blockList">
 <h4>deepClone</h4>
-<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.2549">deepClone</a>()</pre>
+<pre>public&nbsp;<a href="../../../../org/apache/hadoop/hbase/ExtendedCell.html" title="interface in org.apache.hadoop.hbase">ExtendedCell</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/KeyValue.html#line.2559">deepClone</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/ExtendedCell.html#deepClone--">ExtendedCell</a></code></span></div>
 <div class="block">Does a deep copy of the contents to a new memory area and returns it as a new cell.</div>
 <dl>


[06/29] hbase-site git commit: Published site at 12786f80c14c6f2c3c111a55bbf431fb2e81e828.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/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 07d3ab0..23ccfe4 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
@@ -1102,7 +1102,7 @@
 <span class="sourceLineNo">1094</span>    }<a name="line.1094"></a>
 <span class="sourceLineNo">1095</span><a name="line.1095"></a>
 <span class="sourceLineNo">1096</span>    Scan scan = new Scan();<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    scan.withStartRow(ROW).withStopRow(ROW).addFamily(FAMILY).setBatch(3)<a name="line.1097"></a>
+<span class="sourceLineNo">1097</span>    scan.withStartRow(ROW).withStopRow(ROW, true).addFamily(FAMILY).setBatch(3)<a name="line.1097"></a>
 <span class="sourceLineNo">1098</span>        .setMaxResultSize(4 * 1024 * 1024);<a name="line.1098"></a>
 <span class="sourceLineNo">1099</span>    Result result;<a name="line.1099"></a>
 <span class="sourceLineNo">1100</span>    try (ResultScanner scanner = table.getScanner(scan)) {<a name="line.1100"></a>
@@ -1125,7 +1125,7 @@
 <span class="sourceLineNo">1117</span>    }<a name="line.1117"></a>
 <span class="sourceLineNo">1118</span><a name="line.1118"></a>
 <span class="sourceLineNo">1119</span>    scan = new Scan();<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>    scan.withStartRow(ROW).withStopRow(ROW).addFamily(FAMILY).setBatch(2)<a name="line.1120"></a>
+<span class="sourceLineNo">1120</span>    scan.withStartRow(ROW).withStopRow(ROW, true).addFamily(FAMILY).setBatch(2)<a name="line.1120"></a>
 <span class="sourceLineNo">1121</span>        .setMaxResultSize(4 * 1024 * 1024);<a name="line.1121"></a>
 <span class="sourceLineNo">1122</span>    try (ResultScanner scanner = table.getScanner(scan)) {<a name="line.1122"></a>
 <span class="sourceLineNo">1123</span>      List&lt;Result&gt; list = new ArrayList&lt;&gt;();<a name="line.1123"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/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 07d3ab0..23ccfe4 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
@@ -1102,7 +1102,7 @@
 <span class="sourceLineNo">1094</span>    }<a name="line.1094"></a>
 <span class="sourceLineNo">1095</span><a name="line.1095"></a>
 <span class="sourceLineNo">1096</span>    Scan scan = new Scan();<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    scan.withStartRow(ROW).withStopRow(ROW).addFamily(FAMILY).setBatch(3)<a name="line.1097"></a>
+<span class="sourceLineNo">1097</span>    scan.withStartRow(ROW).withStopRow(ROW, true).addFamily(FAMILY).setBatch(3)<a name="line.1097"></a>
 <span class="sourceLineNo">1098</span>        .setMaxResultSize(4 * 1024 * 1024);<a name="line.1098"></a>
 <span class="sourceLineNo">1099</span>    Result result;<a name="line.1099"></a>
 <span class="sourceLineNo">1100</span>    try (ResultScanner scanner = table.getScanner(scan)) {<a name="line.1100"></a>
@@ -1125,7 +1125,7 @@
 <span class="sourceLineNo">1117</span>    }<a name="line.1117"></a>
 <span class="sourceLineNo">1118</span><a name="line.1118"></a>
 <span class="sourceLineNo">1119</span>    scan = new Scan();<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>    scan.withStartRow(ROW).withStopRow(ROW).addFamily(FAMILY).setBatch(2)<a name="line.1120"></a>
+<span class="sourceLineNo">1120</span>    scan.withStartRow(ROW).withStopRow(ROW, true).addFamily(FAMILY).setBatch(2)<a name="line.1120"></a>
 <span class="sourceLineNo">1121</span>        .setMaxResultSize(4 * 1024 * 1024);<a name="line.1121"></a>
 <span class="sourceLineNo">1122</span>    try (ResultScanner scanner = table.getScanner(scan)) {<a name="line.1122"></a>
 <span class="sourceLineNo">1123</span>      List&lt;Result&gt; list = new ArrayList&lt;&gt;();<a name="line.1123"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/13ae5225/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 07d3ab0..23ccfe4 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestFromClientSide3.html
@@ -1102,7 +1102,7 @@
 <span class="sourceLineNo">1094</span>    }<a name="line.1094"></a>
 <span class="sourceLineNo">1095</span><a name="line.1095"></a>
 <span class="sourceLineNo">1096</span>    Scan scan = new Scan();<a name="line.1096"></a>
-<span class="sourceLineNo">1097</span>    scan.withStartRow(ROW).withStopRow(ROW).addFamily(FAMILY).setBatch(3)<a name="line.1097"></a>
+<span class="sourceLineNo">1097</span>    scan.withStartRow(ROW).withStopRow(ROW, true).addFamily(FAMILY).setBatch(3)<a name="line.1097"></a>
 <span class="sourceLineNo">1098</span>        .setMaxResultSize(4 * 1024 * 1024);<a name="line.1098"></a>
 <span class="sourceLineNo">1099</span>    Result result;<a name="line.1099"></a>
 <span class="sourceLineNo">1100</span>    try (ResultScanner scanner = table.getScanner(scan)) {<a name="line.1100"></a>
@@ -1125,7 +1125,7 @@
 <span class="sourceLineNo">1117</span>    }<a name="line.1117"></a>
 <span class="sourceLineNo">1118</span><a name="line.1118"></a>
 <span class="sourceLineNo">1119</span>    scan = new Scan();<a name="line.1119"></a>
-<span class="sourceLineNo">1120</span>    scan.withStartRow(ROW).withStopRow(ROW).addFamily(FAMILY).setBatch(2)<a name="line.1120"></a>
+<span class="sourceLineNo">1120</span>    scan.withStartRow(ROW).withStopRow(ROW, true).addFamily(FAMILY).setBatch(2)<a name="line.1120"></a>
 <span class="sourceLineNo">1121</span>        .setMaxResultSize(4 * 1024 * 1024);<a name="line.1121"></a>
 <span class="sourceLineNo">1122</span>    try (ResultScanner scanner = table.getScanner(scan)) {<a name="line.1122"></a>
 <span class="sourceLineNo">1123</span>      List&lt;Result&gt; list = new ArrayList&lt;&gt;();<a name="line.1123"></a>