diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/BufferedDataBlockEncoder.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/BufferedDataBlockEncoder.java index dacabe6cefd..74e0567f78c 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/BufferedDataBlockEncoder.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/BufferedDataBlockEncoder.java @@ -594,40 +594,6 @@ abstract class BufferedDataBlockEncoder implements DataBlockEncoder { return dup.slice(); } - @Override - public ByteBuffer getKeyValueBuffer() { - ByteBuffer kvBuffer = createKVBuffer(); - kvBuffer.putInt(current.keyLength); - kvBuffer.putInt(current.valueLength); - kvBuffer.put(current.keyBuffer, 0, current.keyLength); - ByteBufferUtils.copyFromBufferToBuffer(kvBuffer, currentBuffer, current.valueOffset, - current.valueLength); - if (current.tagsLength > 0) { - // Put short as unsigned - kvBuffer.put((byte) (current.tagsLength >> 8 & 0xff)); - kvBuffer.put((byte) (current.tagsLength & 0xff)); - if (current.tagsOffset != -1) { - // the offset of the tags bytes in the underlying buffer is marked. So the temp - // buffer,tagsBuffer was not been used. - ByteBufferUtils.copyFromBufferToBuffer(kvBuffer, currentBuffer, current.tagsOffset, - current.tagsLength); - } else { - // When tagsOffset is marked as -1, tag compression was present and so the tags were - // uncompressed into temp buffer, tagsBuffer. Let us copy it from there - kvBuffer.put(current.tagsBuffer, 0, current.tagsLength); - } - } - kvBuffer.rewind(); - return kvBuffer; - } - - protected ByteBuffer createKVBuffer() { - int kvBufSize = (int) KeyValue.getKeyValueDataStructureSize(current.keyLength, - current.valueLength, current.tagsLength); - ByteBuffer kvBuffer = ByteBuffer.allocate(kvBufSize); - return kvBuffer; - } - @Override public Cell getKeyValue() { return current.shallowCopy(); diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/DataBlockEncoder.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/DataBlockEncoder.java index 7218ad5b0c6..a9f693b8702 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/DataBlockEncoder.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/DataBlockEncoder.java @@ -154,9 +154,6 @@ public interface DataBlockEncoder { */ ByteBuffer getValueShallowCopy(); - //TODO : to be removed - currently used in testcases only - /** @return a key value buffer with the position set at the beginning of the buffer */ - ByteBuffer getKeyValueBuffer(); /** * @return the KeyValue object at the current position. Includes memstore diff --git a/hbase-prefix-tree/src/main/java/org/apache/hadoop/hbase/codec/prefixtree/PrefixTreeSeeker.java b/hbase-prefix-tree/src/main/java/org/apache/hadoop/hbase/codec/prefixtree/PrefixTreeSeeker.java index 2d0526ca617..94f83fb6de7 100644 --- a/hbase-prefix-tree/src/main/java/org/apache/hadoop/hbase/codec/prefixtree/PrefixTreeSeeker.java +++ b/hbase-prefix-tree/src/main/java/org/apache/hadoop/hbase/codec/prefixtree/PrefixTreeSeeker.java @@ -85,14 +85,6 @@ public class PrefixTreeSeeker implements EncodedSeeker { return CellUtil.getValueBufferShallowCopy(ptSearcher.current()); } - /** - * currently must do deep copy into new array - */ - @Override - public ByteBuffer getKeyValueBuffer() { - return KeyValueUtil.copyToNewByteBuffer(ptSearcher.current()); - } - /** * currently must do deep copy into new array */ diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.java index 7fd0fd8c9a3..4170b443118 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/io/encoding/TestDataBlockEncoders.java @@ -273,17 +273,17 @@ public class TestDataBlockEncoders { int i = 0; do { KeyValue expectedKeyValue = sampleKv.get(i); - ByteBuffer keyValue = seeker.getKeyValueBuffer(); - if (0 != Bytes.compareTo(keyValue.array(), keyValue.arrayOffset(), keyValue.limit(), + KeyValue keyValue = KeyValueUtil.copyToNewKeyValue(seeker.getKeyValue()); + if (0 != Bytes.compareTo(keyValue.getBuffer(), keyValue.getOffset(), keyValue.getLength(), expectedKeyValue.getBuffer(), expectedKeyValue.getOffset(), expectedKeyValue.getLength())) { int commonPrefix = 0; - byte[] left = keyValue.array(); + byte[] left = keyValue.getBuffer(); byte[] right = expectedKeyValue.getBuffer(); - int leftOff = keyValue.arrayOffset(); + int leftOff = keyValue.getOffset(); int rightOff = expectedKeyValue.getOffset(); - int length = Math.min(keyValue.limit(), expectedKeyValue.getLength()); + int length = Math.min(keyValue.getLength(), expectedKeyValue.getLength()); while (commonPrefix < length && left[commonPrefix + leftOff] == right[commonPrefix + rightOff]) { commonPrefix++; @@ -293,7 +293,7 @@ public class TestDataBlockEncoders { + "encoder: %s i: %d commonPrefix: %d" + "\n expected %s\n actual %s", encoder .toString(), i, commonPrefix, Bytes.toStringBinary(expectedKeyValue.getBuffer(), expectedKeyValue.getOffset(), expectedKeyValue.getLength()), Bytes - .toStringBinary(keyValue))); + .toStringBinary(keyValue.getBuffer()))); } i++; } while (seeker.next()); @@ -341,7 +341,7 @@ public class TestDataBlockEncoders { seeker.seekToKeyInBlock(keyValue, seekBefore); seeker.rewind(); - ByteBuffer actualKeyValue = seeker.getKeyValueBuffer(); + ByteBuffer actualKeyValue = KeyValueUtil.copyKeyToNewByteBuffer(seeker.getKeyValue()); ByteBuffer actualKey = seeker.getKeyDeepCopy(); ByteBuffer actualValue = seeker.getValueShallowCopy();