<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
<title>Source code</title>
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
</head>
<body>
<div class="sourceContainer">
<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
<span class="sourceLineNo">009</span> *<a name="line.9"></a>
<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
<span class="sourceLineNo">011</span> *<a name="line.11"></a>
<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
<span class="sourceLineNo">017</span> */<a name="line.17"></a>
<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase;<a name="line.18"></a>
<span class="sourceLineNo">019</span><a name="line.19"></a>
<span class="sourceLineNo">020</span>import java.util.Comparator;<a name="line.20"></a>
<span class="sourceLineNo">021</span><a name="line.21"></a>
<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.util.ByteBufferUtils;<a name="line.22"></a>
<span class="sourceLineNo">023</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.23"></a>
<span class="sourceLineNo">024</span>import org.slf4j.Logger;<a name="line.24"></a>
<span class="sourceLineNo">025</span>import org.slf4j.LoggerFactory;<a name="line.25"></a>
<span class="sourceLineNo">026</span><a name="line.26"></a>
<span class="sourceLineNo">027</span>import org.apache.hbase.thirdparty.com.google.common.primitives.Longs;<a name="line.27"></a>
<span class="sourceLineNo">028</span><a name="line.28"></a>
<span class="sourceLineNo">029</span>/**<a name="line.29"></a>
<span class="sourceLineNo">030</span> * A comparator for case where {@link ByteBufferKeyValue} is prevalent type (BBKV<a name="line.30"></a>
<span class="sourceLineNo">031</span> * is base-type in hbase2). Takes a general comparator as fallback in case types are NOT the<a name="line.31"></a>
<span class="sourceLineNo">032</span> * expected ByteBufferKeyValue.<a name="line.32"></a>
<span class="sourceLineNo">033</span> *<a name="line.33"></a>
<span class="sourceLineNo">034</span> * &lt;p&gt;This is a tricked-out Comparator at heart of hbase read and write. It is in<a name="line.34"></a>
<span class="sourceLineNo">035</span> * the HOT path so we try all sorts of ugly stuff so we can go faster. See below<a name="line.35"></a>
<span class="sourceLineNo">036</span> * in this javadoc comment for the list.<a name="line.36"></a>
<span class="sourceLineNo">037</span> *<a name="line.37"></a>
<span class="sourceLineNo">038</span> * &lt;p&gt;Apply this comparator narrowly so it is fed exclusively ByteBufferKeyValues<a name="line.38"></a>
<span class="sourceLineNo">039</span> * as much as is possible so JIT can settle (e.g. make one per ConcurrentSkipListMap<a name="line.39"></a>
<span class="sourceLineNo">040</span> * in HStore).<a name="line.40"></a>
<span class="sourceLineNo">041</span> *<a name="line.41"></a>
<span class="sourceLineNo">042</span> * &lt;p&gt;Exploits specially added methods in BBKV to save on deserializations of shorts,<a name="line.42"></a>
<span class="sourceLineNo">043</span> * longs, etc: i.e. calculating the family length requires row length; pass it in<a name="line.43"></a>
<span class="sourceLineNo">044</span> * rather than recalculate it, and so on.<a name="line.44"></a>
<span class="sourceLineNo">045</span> *<a name="line.45"></a>
<span class="sourceLineNo">046</span> * &lt;p&gt;This comparator does static dispatch to private final methods so hotspot is comfortable<a name="line.46"></a>
<span class="sourceLineNo">047</span> * deciding inline.<a name="line.47"></a>
<span class="sourceLineNo">048</span> *<a name="line.48"></a>
<span class="sourceLineNo">049</span> * &lt;p&gt;Measurement has it that we almost have it so all inlines from memstore<a name="line.49"></a>
<span class="sourceLineNo">050</span> * ConcurrentSkipListMap on down to the (unsafe) intrinisics that do byte compare<a name="line.50"></a>
<span class="sourceLineNo">051</span> * and deserialize shorts and ints; needs a bit more work.<a name="line.51"></a>
<span class="sourceLineNo">052</span> *<a name="line.52"></a>
<span class="sourceLineNo">053</span> * &lt;p&gt;Does not take a Type to compare: i.e. it is not a Comparator&amp;lt;Cell&gt; or<a name="line.53"></a>
<span class="sourceLineNo">054</span> * CellComparator&amp;lt;Cell&gt; or Comparator&amp;lt;ByteBufferKeyValue&gt; because that adds<a name="line.54"></a>
<span class="sourceLineNo">055</span> * another method to the hierarchy -- from compare(Object, Object)<a name="line.55"></a>
<span class="sourceLineNo">056</span> * to dynamic compare(Cell, Cell) to static private compare -- and inlining doesn't happen if<a name="line.56"></a>
<span class="sourceLineNo">057</span> * hierarchy is too deep (it is the case here).<a name="line.57"></a>
<span class="sourceLineNo">058</span> *<a name="line.58"></a>
<span class="sourceLineNo">059</span> * &lt;p&gt;Be careful making changes. Compare perf before and after and look at what<a name="line.59"></a>
<span class="sourceLineNo">060</span> * hotspot ends up generating before committing change (jitwatch is helpful here).<a name="line.60"></a>
<span class="sourceLineNo">061</span> * Changing this one class doubled write throughput (HBASE-20483).<a name="line.61"></a>
<span class="sourceLineNo">062</span> */<a name="line.62"></a>
<span class="sourceLineNo">063</span>@InterfaceAudience.Private<a name="line.63"></a>
<span class="sourceLineNo">064</span>public class BBKVComparator implements Comparator {<a name="line.64"></a>
<span class="sourceLineNo">065</span>  protected static final Logger LOG = LoggerFactory.getLogger(BBKVComparator.class);<a name="line.65"></a>
<span class="sourceLineNo">066</span>  private final Comparator fallback;<a name="line.66"></a>
<span class="sourceLineNo">067</span><a name="line.67"></a>
<span class="sourceLineNo">068</span>  public BBKVComparator(Comparator fallback) {<a name="line.68"></a>
<span class="sourceLineNo">069</span>    this.fallback = fallback;<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>  @Override<a name="line.72"></a>
<span class="sourceLineNo">073</span>  public int compare(Object l, Object r) {<a name="line.73"></a>
<span class="sourceLineNo">074</span>    if ((l instanceof ByteBufferKeyValue) &amp;&amp; (r instanceof ByteBufferKeyValue)) {<a name="line.74"></a>
<span class="sourceLineNo">075</span>      return compare((ByteBufferKeyValue)l, (ByteBufferKeyValue)r, false);<a name="line.75"></a>
<span class="sourceLineNo">076</span>    }<a name="line.76"></a>
<span class="sourceLineNo">077</span>    // Skip calling compare(Object, Object) and go direct to compare(Cell, Cell)<a name="line.77"></a>
<span class="sourceLineNo">078</span>    return this.fallback.compare((Cell)l, (Cell)r);<a name="line.78"></a>
<span class="sourceLineNo">079</span>  }<a name="line.79"></a>
<span class="sourceLineNo">080</span><a name="line.80"></a>
<span class="sourceLineNo">081</span>  // TODO: Come back here. We get a few percentage points extra of throughput if this is a<a name="line.81"></a>
<span class="sourceLineNo">082</span>  // private method.<a name="line.82"></a>
<span class="sourceLineNo">083</span>  static int compare(ByteBufferKeyValue left, ByteBufferKeyValue right,<a name="line.83"></a>
<span class="sourceLineNo">084</span>      boolean ignoreSequenceid) {<a name="line.84"></a>
<span class="sourceLineNo">085</span>    // NOTE: Same method is in CellComparatorImpl, also private, not shared, intentionally. Not<a name="line.85"></a>
<span class="sourceLineNo">086</span>    // sharing gets us a few percent more throughput in compares. If changes here or there, make<a name="line.86"></a>
<span class="sourceLineNo">087</span>    // sure done in both places.<a name="line.87"></a>
<span class="sourceLineNo">088</span><a name="line.88"></a>
<span class="sourceLineNo">089</span>    // Compare Rows. Cache row length.<a name="line.89"></a>
<span class="sourceLineNo">090</span>    int leftRowLength = left.getRowLength();<a name="line.90"></a>
<span class="sourceLineNo">091</span>    int rightRowLength = right.getRowLength();<a name="line.91"></a>
<span class="sourceLineNo">092</span>    int diff = ByteBufferUtils.compareTo(left.getRowByteBuffer(), left.getRowPosition(),<a name="line.92"></a>
<span class="sourceLineNo">093</span>        leftRowLength,<a name="line.93"></a>
<span class="sourceLineNo">094</span>        right.getRowByteBuffer(), right.getRowPosition(), rightRowLength);<a name="line.94"></a>
<span class="sourceLineNo">095</span>    if (diff != 0) {<a name="line.95"></a>
<span class="sourceLineNo">096</span>      return diff;<a name="line.96"></a>
<span class="sourceLineNo">097</span>    }<a name="line.97"></a>
<span class="sourceLineNo">098</span><a name="line.98"></a>
<span class="sourceLineNo">099</span>    // If the column is not specified, the "minimum" key type appears as latest in the sorted<a name="line.99"></a>
<span class="sourceLineNo">100</span>    // order, regardless of the timestamp. This is used for specifying the last key/value in a<a name="line.100"></a>
<span class="sourceLineNo">101</span>    // given row, because there is no "lexicographically last column" (it would be infinitely long).<a name="line.101"></a>
<span class="sourceLineNo">102</span>    // The "maximum" key type does not need this behavior. Copied from KeyValue. This is bad in that<a name="line.102"></a>
<span class="sourceLineNo">103</span>    // we can't do memcmp w/ special rules like this.<a name="line.103"></a>
<span class="sourceLineNo">104</span>    // TODO: Is there a test for this behavior?<a name="line.104"></a>
<span class="sourceLineNo">105</span>    int leftFamilyLengthPosition = left.getFamilyLengthPosition(leftRowLength);<a name="line.105"></a>
<span class="sourceLineNo">106</span>    int leftFamilyLength = left.getFamilyLength(leftFamilyLengthPosition);<a name="line.106"></a>
<span class="sourceLineNo">107</span>    int leftKeyLength = left.getKeyLength();<a name="line.107"></a>
<span class="sourceLineNo">108</span>    int leftQualifierLength = left.getQualifierLength(leftKeyLength, leftRowLength,<a name="line.108"></a>
<span class="sourceLineNo">109</span>        leftFamilyLength);<a name="line.109"></a>
<span class="sourceLineNo">110</span><a name="line.110"></a>
<span class="sourceLineNo">111</span>    // No need of left row length below here.<a name="line.111"></a>
<span class="sourceLineNo">112</span><a name="line.112"></a>
<span class="sourceLineNo">113</span>    byte leftType = left.getTypeByte(leftKeyLength);<a name="line.113"></a>
<span class="sourceLineNo">114</span>    if (leftFamilyLength + leftQualifierLength == 0 &amp;&amp;<a name="line.114"></a>
<span class="sourceLineNo">115</span>        leftType == KeyValue.Type.Minimum.getCode()) {<a name="line.115"></a>
<span class="sourceLineNo">116</span>      // left is "bigger", i.e. it appears later in the sorted order<a name="line.116"></a>
<span class="sourceLineNo">117</span>      return 1;<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>    int rightFamilyLengthPosition = right.getFamilyLengthPosition(rightRowLength);<a name="line.120"></a>
<span class="sourceLineNo">121</span>    int rightFamilyLength = right.getFamilyLength(rightFamilyLengthPosition);<a name="line.121"></a>
<span class="sourceLineNo">122</span>    int rightKeyLength = right.getKeyLength();<a name="line.122"></a>
<span class="sourceLineNo">123</span>    int rightQualifierLength = right.getQualifierLength(rightKeyLength, rightRowLength,<a name="line.123"></a>
<span class="sourceLineNo">124</span>        rightFamilyLength);<a name="line.124"></a>
<span class="sourceLineNo">125</span><a name="line.125"></a>
<span class="sourceLineNo">126</span>   // No need of right row length below here.<a name="line.126"></a>
<span class="sourceLineNo">127</span><a name="line.127"></a>
<span class="sourceLineNo">128</span>    byte rightType = right.getTypeByte(rightKeyLength);<a name="line.128"></a>
<span class="sourceLineNo">129</span>    if (rightFamilyLength + rightQualifierLength == 0 &amp;&amp;<a name="line.129"></a>
<span class="sourceLineNo">130</span>        rightType == KeyValue.Type.Minimum.getCode()) {<a name="line.130"></a>
<span class="sourceLineNo">131</span>      return -1;<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>    // Compare families.<a name="line.134"></a>
<span class="sourceLineNo">135</span>    int leftFamilyPosition = left.getFamilyPosition(leftFamilyLengthPosition);<a name="line.135"></a>
<span class="sourceLineNo">136</span>    int rightFamilyPosition = right.getFamilyPosition(rightFamilyLengthPosition);<a name="line.136"></a>
<span class="sourceLineNo">137</span>    diff = ByteBufferUtils.compareTo(left.getFamilyByteBuffer(), leftFamilyPosition,<a name="line.137"></a>
<span class="sourceLineNo">138</span>        leftFamilyLength,<a name="line.138"></a>
<span class="sourceLineNo">139</span>        right.getFamilyByteBuffer(), rightFamilyPosition, rightFamilyLength);<a name="line.139"></a>
<span class="sourceLineNo">140</span>    if (diff != 0) {<a name="line.140"></a>
<span class="sourceLineNo">141</span>      return diff;<a name="line.141"></a>
<span class="sourceLineNo">142</span>    }<a name="line.142"></a>
<span class="sourceLineNo">143</span><a name="line.143"></a>
<span class="sourceLineNo">144</span>    // Compare qualifiers<a name="line.144"></a>
<span class="sourceLineNo">145</span>    diff = ByteBufferUtils.compareTo(left.getQualifierByteBuffer(),<a name="line.145"></a>
<span class="sourceLineNo">146</span>        left.getQualifierPosition(leftFamilyPosition, leftFamilyLength), leftQualifierLength,<a name="line.146"></a>
<span class="sourceLineNo">147</span>        right.getQualifierByteBuffer(),<a name="line.147"></a>
<span class="sourceLineNo">148</span>        right.getQualifierPosition(rightFamilyPosition, rightFamilyLength),<a name="line.148"></a>
<span class="sourceLineNo">149</span>        rightQualifierLength);<a name="line.149"></a>
<span class="sourceLineNo">150</span>    if (diff != 0) {<a name="line.150"></a>
<span class="sourceLineNo">151</span>      return diff;<a name="line.151"></a>
<span class="sourceLineNo">152</span>    }<a name="line.152"></a>
<span class="sourceLineNo">153</span><a name="line.153"></a>
<span class="sourceLineNo">154</span>    // Timestamps.<a name="line.154"></a>
<span class="sourceLineNo">155</span>    // Swap order we pass into compare so we get DESCENDING order.<a name="line.155"></a>
<span class="sourceLineNo">156</span>    diff = Long.compare(right.getTimestamp(rightKeyLength), left.getTimestamp(leftKeyLength));<a name="line.156"></a>
<span class="sourceLineNo">157</span>    if (diff != 0) {<a name="line.157"></a>
<span class="sourceLineNo">158</span>      return diff;<a name="line.158"></a>
<span class="sourceLineNo">159</span>    }<a name="line.159"></a>
<span class="sourceLineNo">160</span><a name="line.160"></a>
<span class="sourceLineNo">161</span>    // Compare types. Let the delete types sort ahead of puts; i.e. types<a name="line.161"></a>
<span class="sourceLineNo">162</span>    // of higher numbers sort before those of lesser numbers. Maximum (255)<a name="line.162"></a>
<span class="sourceLineNo">163</span>    // appears ahead of everything, and minimum (0) appears after<a name="line.163"></a>
<span class="sourceLineNo">164</span>    // everything.<a name="line.164"></a>
<span class="sourceLineNo">165</span>    diff = (0xff &amp; rightType) - (0xff &amp; leftType);<a name="line.165"></a>
<span class="sourceLineNo">166</span>    if (diff != 0) {<a name="line.166"></a>
<span class="sourceLineNo">167</span>      return diff;<a name="line.167"></a>
<span class="sourceLineNo">168</span>    }<a name="line.168"></a>
<span class="sourceLineNo">169</span><a name="line.169"></a>
<span class="sourceLineNo">170</span>    // Negate following comparisons so later edits show up first mvccVersion: later sorts first<a name="line.170"></a>
<span class="sourceLineNo">171</span>    return ignoreSequenceid ? diff : Longs.compare(right.getSequenceId(), left.getSequenceId());<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>




























































</pre>
</div>
</body>
</html>
