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);