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

jinrongtong pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/rocketmq.git


The following commit(s) were added to refs/heads/develop by this push:
     new 16b6e53263 [ISSUE #9002] when bytebuffer is not enough, do not throw 
exception (#9003)
16b6e53263 is described below

commit 16b6e53263477794125a49d9f31a994a510970b7
Author: Lei Zhiyuan <leizhiy...@gmail.com>
AuthorDate: Thu Dec 19 11:44:32 2024 +0800

    [ISSUE #9002] when bytebuffer is not enough, do not throw exception (#9003)
    
    * fix: when bytebuffer is not enough,we should wait for next instead of 
throw exception
    
    * fix: when bytebuffer is not enough,we should wait for next instead of 
throw exception
---
 store/src/main/java/org/apache/rocketmq/store/CommitLog.java | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/store/src/main/java/org/apache/rocketmq/store/CommitLog.java 
b/store/src/main/java/org/apache/rocketmq/store/CommitLog.java
index d30691908b..ff96bf1066 100644
--- a/store/src/main/java/org/apache/rocketmq/store/CommitLog.java
+++ b/store/src/main/java/org/apache/rocketmq/store/CommitLog.java
@@ -432,8 +432,14 @@ public class CommitLog implements Swappable {
     public DispatchRequest checkMessageAndReturnSize(java.nio.ByteBuffer 
byteBuffer, final boolean checkCRC,
         final boolean checkDupInfo, final boolean readBody) {
         try {
+            if (byteBuffer.remaining() <= 4) {
+                return new DispatchRequest(-1, false /* fail */);
+            }
             // 1 TOTAL SIZE
             int totalSize = byteBuffer.getInt();
+            if (byteBuffer.remaining() < totalSize - 4) {
+                return new DispatchRequest(-1, false /* fail */);
+            }
 
             // 2 MAGIC CODE
             int magicCode = byteBuffer.getInt();
@@ -628,6 +634,7 @@ public class CommitLog implements Swappable {
 
             return dispatchRequest;
         } catch (Exception e) {
+            log.error("checkMessageAndReturnSize failed, may can not 
dispatch", e);
         }
 
         return new DispatchRequest(-1, false /* success */);

Reply via email to