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

lollipop 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 5892de6d14 [ISSUE #9862] [Bug] Fix the issue of missing bornTime in 
POP requests when broker ACL is enabled (#9863)
5892de6d14 is described below

commit 5892de6d147a27c51c5c540bde17f6fbed0d5d24
Author: dingshuangxi888 <[email protected]>
AuthorDate: Thu Nov 20 20:09:43 2025 +0800

    [ISSUE #9862] [Bug] Fix the issue of missing bornTime in POP requests when 
broker ACL is enabled (#9863)
---
 .../rocketmq/broker/processor/NotificationProcessor.java     | 12 ++++++------
 .../rocketmq/broker/processor/PopMessageProcessor.java       | 11 ++++-------
 .../rocketmq/proxy/service/message/LocalMessageService.java  |  1 -
 3 files changed, 10 insertions(+), 14 deletions(-)

diff --git 
a/broker/src/main/java/org/apache/rocketmq/broker/processor/NotificationProcessor.java
 
b/broker/src/main/java/org/apache/rocketmq/broker/processor/NotificationProcessor.java
index 6028093443..4563132fe4 100644
--- 
a/broker/src/main/java/org/apache/rocketmq/broker/processor/NotificationProcessor.java
+++ 
b/broker/src/main/java/org/apache/rocketmq/broker/processor/NotificationProcessor.java
@@ -19,7 +19,6 @@ package org.apache.rocketmq.broker.processor;
 import io.netty.channel.Channel;
 import io.netty.channel.ChannelHandlerContext;
 import java.util.Map;
-import java.util.Objects;
 import java.util.Random;
 import org.apache.rocketmq.broker.BrokerController;
 import org.apache.rocketmq.broker.longpolling.PollingHeader;
@@ -79,16 +78,17 @@ public class NotificationProcessor implements 
NettyRequestProcessor {
     @Override
     public RemotingCommand processRequest(final ChannelHandlerContext ctx,
         RemotingCommand request) throws RemotingCommandException {
-        request.addExtFieldIfNotExist(BORN_TIME, 
String.valueOf(System.currentTimeMillis()));
-        if (Objects.equals(request.getExtFields().get(BORN_TIME), "0")) {
-            request.addExtField(BORN_TIME, 
String.valueOf(System.currentTimeMillis()));
-        }
         Channel channel = ctx.channel();
 
         RemotingCommand response = 
RemotingCommand.createResponseCommand(NotificationResponseHeader.class);
         final NotificationResponseHeader responseHeader = 
(NotificationResponseHeader) response.readCustomHeader();
         final NotificationRequestHeader requestHeader =
-            (NotificationRequestHeader) 
request.decodeCommandCustomHeader(NotificationRequestHeader.class);
+            request.decodeCommandCustomHeader(NotificationRequestHeader.class, 
true);
+        if (requestHeader.getBornTime() == 0) {
+            final long beginTimeMills = 
this.brokerController.getMessageStore().now();
+            request.addExtField(BORN_TIME, String.valueOf(beginTimeMills));
+            requestHeader.setBornTime(beginTimeMills);
+        }
 
         response.setOpaque(request.getOpaque());
 
diff --git 
a/broker/src/main/java/org/apache/rocketmq/broker/processor/PopMessageProcessor.java
 
b/broker/src/main/java/org/apache/rocketmq/broker/processor/PopMessageProcessor.java
index 411fb06457..6e0d235f00 100644
--- 
a/broker/src/main/java/org/apache/rocketmq/broker/processor/PopMessageProcessor.java
+++ 
b/broker/src/main/java/org/apache/rocketmq/broker/processor/PopMessageProcessor.java
@@ -29,7 +29,6 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
-import java.util.Objects;
 import java.util.Random;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ConcurrentHashMap;
@@ -228,18 +227,16 @@ public class PopMessageProcessor implements 
NettyRequestProcessor {
 
         final long beginTimeMills = 
this.brokerController.getMessageStore().now();
 
-        // fill bron time to properties if not exist, why we need this?
-        request.addExtFieldIfNotExist(BORN_TIME, 
String.valueOf(System.currentTimeMillis()));
-        if (Objects.equals(request.getExtFields().get(BORN_TIME), "0")) {
-            request.addExtField(BORN_TIME, 
String.valueOf(System.currentTimeMillis()));
-        }
-
         Channel channel = ctx.channel();
         RemotingCommand response = 
RemotingCommand.createResponseCommand(PopMessageResponseHeader.class);
         response.setOpaque(request.getOpaque());
 
         final PopMessageRequestHeader requestHeader =
             request.decodeCommandCustomHeader(PopMessageRequestHeader.class, 
true);
+        if (requestHeader.getBornTime() == 0) {
+            request.addExtField(BORN_TIME, String.valueOf(beginTimeMills));
+            requestHeader.setBornTime(beginTimeMills);
+        }
         final PopMessageResponseHeader responseHeader = 
(PopMessageResponseHeader) response.readCustomHeader();
 
         // Pop mode only supports consumption in cluster load balancing mode
diff --git 
a/proxy/src/main/java/org/apache/rocketmq/proxy/service/message/LocalMessageService.java
 
b/proxy/src/main/java/org/apache/rocketmq/proxy/service/message/LocalMessageService.java
index cb9b7a4ae0..f0d9f8c7b8 100644
--- 
a/proxy/src/main/java/org/apache/rocketmq/proxy/service/message/LocalMessageService.java
+++ 
b/proxy/src/main/java/org/apache/rocketmq/proxy/service/message/LocalMessageService.java
@@ -199,7 +199,6 @@ public class LocalMessageService implements MessageService {
     @Override
     public CompletableFuture<PopResult> popMessage(ProxyContext ctx, 
AddressableMessageQueue messageQueue,
         PopMessageRequestHeader requestHeader, long timeoutMillis) {
-        requestHeader.setBornTime(System.currentTimeMillis());
         RemotingCommand request = 
LocalRemotingCommand.createRequestCommand(RequestCode.POP_MESSAGE, 
requestHeader, ctx.getLanguage());
         CompletableFuture<RemotingCommand> future = new CompletableFuture<>();
         SimpleChannel channel = channelManager.createInvocationChannel(ctx);

Reply via email to