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/23 03:12:43 UTC

[hbase] 02/02: HBASE-27151 TestMultiRespectsLimits.testBlockMultiLimits repeatable failure

This is an automated email from the ASF dual-hosted git repository.

apurtell pushed a commit to branch branch-2.4
in repository https://gitbox.apache.org/repos/asf/hbase.git

commit 847665d9d6235e7098f535edcd1b5c6bb47326fb
Author: Andrew Purtell <ap...@apache.org>
AuthorDate: Wed Jun 22 20:11:42 2022 -0700

    HBASE-27151 TestMultiRespectsLimits.testBlockMultiLimits repeatable failure
    
    Revert "HBASE-26856 BufferedDataBlockEncoder.OnheapDecodedCell value can get corrupted"
    
    This reverts commit b2f71f2049c73c53ed7fe1400e8ff25612667b62.
---
 .../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(),