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

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


The following commit(s) were added to refs/heads/branch-3 by this push:
     new 6968a69c51f HBASE-29172 Fix bug in ZstdByteBuffDecompressor (#6767)
6968a69c51f is described below

commit 6968a69c51ffe62504827c6ea6adf7a1693afe61
Author: Charles Connell <[email protected]>
AuthorDate: Fri Mar 14 06:46:05 2025 -0500

    HBASE-29172 Fix bug in ZstdByteBuffDecompressor (#6767)
    
    Signed-off-by: Ray Mattingly <[email protected]>
    Signed-off-by: Nick Dimiduk <[email protected]>
---
 .../io/compress/zstd/ZstdByteBuffDecompressor.java     |  2 ++
 .../io/compress/zstd/TestZstdByteBuffDecompressor.java | 18 +++++++++++++-----
 2 files changed, 15 insertions(+), 5 deletions(-)

diff --git 
a/hbase-compression/hbase-compression-zstd/src/main/java/org/apache/hadoop/hbase/io/compress/zstd/ZstdByteBuffDecompressor.java
 
b/hbase-compression/hbase-compression-zstd/src/main/java/org/apache/hadoop/hbase/io/compress/zstd/ZstdByteBuffDecompressor.java
index 399753b9283..ec5315aa4c0 100644
--- 
a/hbase-compression/hbase-compression-zstd/src/main/java/org/apache/hadoop/hbase/io/compress/zstd/ZstdByteBuffDecompressor.java
+++ 
b/hbase-compression/hbase-compression-zstd/src/main/java/org/apache/hadoop/hbase/io/compress/zstd/ZstdByteBuffDecompressor.java
@@ -98,6 +98,7 @@ public class ZstdByteBuffDecompressor implements 
ByteBuffDecompressor, CanReinit
       output.limit() - output.position(), input, input.position(), inputLen);
 
     output.position(origOutputPos + n);
+    input.position(input.position() + inputLen);
     return n;
   }
 
@@ -109,6 +110,7 @@ public class ZstdByteBuffDecompressor implements 
ByteBuffDecompressor, CanReinit
       inputLen);
 
     output.position(origOutputPos + n);
+    input.position(input.position() + inputLen);
     return n;
   }
 
diff --git 
a/hbase-compression/hbase-compression-zstd/src/test/java/org/apache/hadoop/hbase/io/compress/zstd/TestZstdByteBuffDecompressor.java
 
b/hbase-compression/hbase-compression-zstd/src/test/java/org/apache/hadoop/hbase/io/compress/zstd/TestZstdByteBuffDecompressor.java
index 66d21081ba7..be52d17f133 100644
--- 
a/hbase-compression/hbase-compression-zstd/src/test/java/org/apache/hadoop/hbase/io/compress/zstd/TestZstdByteBuffDecompressor.java
+++ 
b/hbase-compression/hbase-compression-zstd/src/test/java/org/apache/hadoop/hbase/io/compress/zstd/TestZstdByteBuffDecompressor.java
@@ -40,10 +40,16 @@ public class TestZstdByteBuffDecompressor {
   public static final HBaseClassTestRule CLASS_RULE =
     HBaseClassTestRule.forClass(TestZstdByteBuffDecompressor.class);
 
-  // "HBase is awesome" compressed with zstd, and then prepended with metadata 
as a
-  // BlockCompressorStream would
+  /*
+   * "HBase is fun to use and very fast" compressed with zstd, and then 
prepended with metadata as a
+   * BlockCompressorStream would. The phrase is split in three parts and put 
into the payload in
+   * this structure: (block 1: (chunk 1: HBase is), (chunk 2: fun to use)), 
(block 2: (chunk 1: and
+   * very fast))
+   */
   private static final byte[] COMPRESSED_PAYLOAD =
-    
Bytes.fromHex("000000100000001928b52ffd2010810000484261736520697320617765736f6d65");
+    Bytes.fromHex("000000130000001228b52ffd200949000048426173652069732"
+      + "00000001428b52ffd200b59000066756e20746f207573652"
+      + "00000000d0000001628b52ffd200d690000616e6420766572792066617374");
 
   @Test
   public void testCapabilities() {
@@ -71,7 +77,8 @@ public class TestZstdByteBuffDecompressor {
       ByteBuff output = new SingleByteBuff(ByteBuffer.allocate(64));
       ByteBuff input = new SingleByteBuff(ByteBuffer.wrap(COMPRESSED_PAYLOAD));
       int decompressedSize = decompressor.decompress(output, input, 
COMPRESSED_PAYLOAD.length);
-      assertEquals("HBase is awesome", Bytes.toString(output.toBytes(0, 
decompressedSize)));
+      assertEquals("HBase is fun to use and very fast",
+        Bytes.toString(output.toBytes(0, decompressedSize)));
     }
   }
 
@@ -83,7 +90,8 @@ public class TestZstdByteBuffDecompressor {
       input.put(COMPRESSED_PAYLOAD);
       input.rewind();
       int decompressedSize = decompressor.decompress(output, input, 
COMPRESSED_PAYLOAD.length);
-      assertEquals("HBase is awesome", Bytes.toString(output.toBytes(0, 
decompressedSize)));
+      assertEquals("HBase is fun to use and very fast",
+        Bytes.toString(output.toBytes(0, decompressedSize)));
     }
   }
 

Reply via email to