From 2a2f54e4b1f71507a9cef605daaf68f48d70848c Mon Sep 17 00:00:00 2001 From: guyinyou Date: Fri, 14 Nov 2025 11:39:54 +0800 Subject: [PATCH] feat: print full message when CRC not found in properties When the error 'failed to check message CRC, not found CRC in properties' occurs, now it will print the full message content including topic, properties map, properties length, and full message hex for debugging purposes. Change-Id: I26d977e13802c5e69d01f16512e40d121dcff354 Co-developed-by: Cursor --- .../java/org/apache/rocketmq/store/CommitLog.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) 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 d6ea017218b..2c60d0059f1 100644 --- a/store/src/main/java/org/apache/rocketmq/store/CommitLog.java +++ b/store/src/main/java/org/apache/rocketmq/store/CommitLog.java @@ -618,8 +618,18 @@ public DispatchRequest checkMessageAndReturnSize(java.nio.ByteBuffer byteBuffer, return new DispatchRequest(-1, false/* success */); } } else { + // Read full message for logging when error occurs + ByteBuffer fullMessageBuffer = byteBuffer.duplicate(); + int messageStartPos = fullMessageBuffer.position() - totalSize; + fullMessageBuffer.position(messageStartPos); + fullMessageBuffer.limit(messageStartPos + totalSize); + byte[] fullMessageBytes = new byte[totalSize]; + fullMessageBuffer.get(fullMessageBytes, 0, totalSize); + + // Print full message and especially properties log.warn( - "CommitLog#checkAndDispatchMessage: failed to check message CRC, not found CRC in properties"); + "CommitLog#checkAndDispatchMessage: failed to check message CRC, not found CRC in properties. topic={}, properties={}, propertiesLength={}, fullMessageHex={}", + topic, propertiesMap != null ? propertiesMap.toString() : "null", propertiesLength, UtilAll.bytes2string(fullMessageBytes)); return new DispatchRequest(-1, false/* success */); } }