You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ap...@apache.org on 2022/06/25 17:59:12 UTC
[hbase] branch branch-2.5 updated: Revert "HBASE-26856 BufferedDataBlockEncoder.OnheapDecodedCell value can get corrupted"
This is an automated email from the ASF dual-hosted git repository.
apurtell pushed a commit to branch branch-2.5
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-2.5 by this push:
new 28a5083095c Revert "HBASE-26856 BufferedDataBlockEncoder.OnheapDecodedCell value can get corrupted"
28a5083095c is described below
commit 28a5083095c017593da896d5e13fe06cbc35b2c4
Author: Andrew Purtell <ap...@apache.org>
AuthorDate: Sat Jun 25 10:56:14 2022 -0700
Revert "HBASE-26856 BufferedDataBlockEncoder.OnheapDecodedCell value can get corrupted"
This reverts commit 50e24993542bbf57f49a4960b4f99658c77a737c.
See also HBASE-27151 TestMultiRespectsLimits.testBlockMultiLimits repeatable failure
---
.../io/encoding/BufferedDataBlockEncoder.java | 24 +++++-----------------
1 file changed, 5 insertions(+), 19 deletions(-)
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 6e5a3bda3af..b155d9b854e 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
@@ -232,10 +232,9 @@ abstract class BufferedDataBlockEncoder extends AbstractDataBlockEncoder {
int tOffset = 0;
if (this.includeTags) {
if (this.tagCompressionContext == null) {
+ tagsArray = valAndTagsBuffer.array();
tOffset =
valAndTagsBuffer.arrayOffset() + vOffset + this.valueLength + tagsLenSerializationSize;
- tagsArray = Bytes.copy(valAndTagsBuffer.array(), tOffset, this.tagsLength);
- tOffset = 0;
} else {
tagsArray = Bytes.copy(tagsBuffer, 0, this.tagsLength);
tOffset = 0;
@@ -244,9 +243,9 @@ abstract class BufferedDataBlockEncoder extends AbstractDataBlockEncoder {
return new OnheapDecodedCell(Bytes.copy(keyBuffer, 0, this.keyLength),
currentKey.getRowLength(), currentKey.getFamilyOffset(), currentKey.getFamilyLength(),
currentKey.getQualifierOffset(), currentKey.getQualifierLength(), currentKey.getTimestamp(),
- currentKey.getTypeByte(), Bytes.copy(valAndTagsBuffer.array(),
- valAndTagsBuffer.arrayOffset() + vOffset, this.valueLength),
- 0, this.valueLength, memstoreTS, tagsArray, tOffset, this.tagsLength);
+ currentKey.getTypeByte(), valAndTagsBuffer.array(),
+ valAndTagsBuffer.arrayOffset() + vOffset, this.valueLength, memstoreTS, tagsArray, tOffset,
+ this.tagsLength);
}
private Cell toOffheapCell(ByteBuffer valAndTagsBuffer, int vOffset,
@@ -255,26 +254,13 @@ abstract class BufferedDataBlockEncoder extends AbstractDataBlockEncoder {
int tOffset = 0;
if (this.includeTags) {
if (this.tagCompressionContext == null) {
+ tagsBuf = valAndTagsBuffer;
tOffset = vOffset + this.valueLength + tagsLenSerializationSize;
- byte[] output = new byte[this.tagsLength];
- ByteBufferUtils.copyFromBufferToArray(output, valAndTagsBuffer, tOffset, 0,
- this.tagsLength);
- tagsBuf = ByteBuffer.wrap(output);
- tOffset = 0;
} else {
tagsBuf = ByteBuffer.wrap(Bytes.copy(tagsBuffer, 0, this.tagsLength));
tOffset = 0;
}
}
-
- if (this.valueLength > 0) {
- byte[] output = new byte[this.valueLength];
- ByteBufferUtils.copyFromBufferToArray(output, valAndTagsBuffer, vOffset, 0,
- this.valueLength);
- valAndTagsBuffer = ByteBuffer.wrap(output);
- vOffset = 0;
- }
-
return new OffheapDecodedExtendedCell(
ByteBuffer.wrap(Bytes.copy(keyBuffer, 0, this.keyLength)), currentKey.getRowLength(),
currentKey.getFamilyOffset(), currentKey.getFamilyLength(), currentKey.getQualifierOffset(),