HBASE-20795 Allow option in BBKVComparator.compare to do comparison without sequence id

Signed-off-by: Michael Stack <stack@apache.org>
This commit is contained in:
Ankit Singhal 2018-06-26 16:46:44 -07:00 committed by Michael Stack
parent 6a0c67344a
commit 99d54246ee
2 changed files with 5 additions and 4 deletions

View File

@ -73,7 +73,7 @@ public class BBKVComparator implements Comparator {
public int compare(Object l, Object r) { public int compare(Object l, Object r) {
// LOG.info("ltype={} rtype={}", l, r); // LOG.info("ltype={} rtype={}", l, r);
if ((l instanceof ByteBufferKeyValue) && (r instanceof ByteBufferKeyValue)) { if ((l instanceof ByteBufferKeyValue) && (r instanceof ByteBufferKeyValue)) {
return compare((ByteBufferKeyValue)l, (ByteBufferKeyValue)r); return compare((ByteBufferKeyValue)l, (ByteBufferKeyValue)r, false);
} }
// Skip calling compare(Object, Object) and go direct to compare(Cell, Cell) // Skip calling compare(Object, Object) and go direct to compare(Cell, Cell)
return this.fallback.compare((Cell)l, (Cell)r); return this.fallback.compare((Cell)l, (Cell)r);
@ -81,7 +81,8 @@ public class BBKVComparator implements Comparator {
// TODO: Come back here. We get a few percentage points extra of throughput if this is a // TODO: Come back here. We get a few percentage points extra of throughput if this is a
// private method. // private method.
static final int compare(ByteBufferKeyValue left, ByteBufferKeyValue right) { static final int compare(ByteBufferKeyValue left, ByteBufferKeyValue right,
boolean ignoreSequenceid) {
// NOTE: Same method is in CellComparatorImpl, also private, not shared, intentionally. Not // NOTE: Same method is in CellComparatorImpl, also private, not shared, intentionally. Not
// sharing gets us a few percent more throughput in compares. If changes here or there, make // sharing gets us a few percent more throughput in compares. If changes here or there, make
// sure done in both places. // sure done in both places.
@ -168,6 +169,6 @@ public class BBKVComparator implements Comparator {
} }
// Negate following comparisons so later edits show up first mvccVersion: later sorts first // Negate following comparisons so later edits show up first mvccVersion: later sorts first
return Longs.compare(right.getSequenceId(), left.getSequenceId()); return ignoreSequenceid ? diff : Longs.compare(right.getSequenceId(), left.getSequenceId());
} }
} }

View File

@ -74,7 +74,7 @@ public class CellComparatorImpl implements CellComparator {
int diff = 0; int diff = 0;
// "Peel off" the most common path. // "Peel off" the most common path.
if (a instanceof ByteBufferKeyValue && b instanceof ByteBufferKeyValue) { if (a instanceof ByteBufferKeyValue && b instanceof ByteBufferKeyValue) {
diff = BBKVComparator.compare((ByteBufferKeyValue)a, (ByteBufferKeyValue)b); diff = BBKVComparator.compare((ByteBufferKeyValue)a, (ByteBufferKeyValue)b, ignoreSequenceid);
if (diff != 0) { if (diff != 0) {
return diff; return diff;
} }