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

lizhimins 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 17b4e56518 [ISSUE #10285] Fix preserve popTime when rebuilding 
AckResult (#10286)
17b4e56518 is described below

commit 17b4e56518f234f2dfe1e85b61f45362033e510d
Author: yx9o <[email protected]>
AuthorDate: Mon May 18 20:49:28 2026 +0800

    [ISSUE #10285] Fix preserve popTime when rebuilding AckResult (#10286)
---
 .../proxy/processor/ConsumerProcessor.java         |  2 +-
 .../proxy/processor/ConsumerProcessorTest.java     | 23 ++++++++++++++++++++++
 2 files changed, 24 insertions(+), 1 deletion(-)

diff --git 
a/proxy/src/main/java/org/apache/rocketmq/proxy/processor/ConsumerProcessor.java
 
b/proxy/src/main/java/org/apache/rocketmq/proxy/processor/ConsumerProcessor.java
index dc0f86aae5..b66d57c62a 100644
--- 
a/proxy/src/main/java/org/apache/rocketmq/proxy/processor/ConsumerProcessor.java
+++ 
b/proxy/src/main/java/org/apache/rocketmq/proxy/processor/ConsumerProcessor.java
@@ -431,7 +431,7 @@ public class ConsumerProcessor extends AbstractProcessor {
                     if (StringUtils.isNotBlank(ackResult.getExtraInfo())) {
                         AckResult result = new AckResult();
                         result.setStatus(ackResult.getStatus());
-                        result.setPopTime(result.getPopTime());
+                        result.setPopTime(ackResult.getPopTime());
                         
result.setExtraInfo(createHandle(ackResult.getExtraInfo(), commitLogOffset));
                         return result;
                     } else {
diff --git 
a/proxy/src/test/java/org/apache/rocketmq/proxy/processor/ConsumerProcessorTest.java
 
b/proxy/src/test/java/org/apache/rocketmq/proxy/processor/ConsumerProcessorTest.java
index 4eee5a079c..4df343c409 100644
--- 
a/proxy/src/test/java/org/apache/rocketmq/proxy/processor/ConsumerProcessorTest.java
+++ 
b/proxy/src/test/java/org/apache/rocketmq/proxy/processor/ConsumerProcessorTest.java
@@ -40,6 +40,7 @@ import org.apache.rocketmq.common.constant.ConsumeInitMode;
 import org.apache.rocketmq.common.consumer.ReceiptHandle;
 import org.apache.rocketmq.common.filter.ExpressionType;
 import org.apache.rocketmq.common.message.MessageClientIDSetter;
+import org.apache.rocketmq.common.message.MessageConst;
 import org.apache.rocketmq.common.message.MessageExt;
 import org.apache.rocketmq.common.message.MessageQueue;
 import org.apache.rocketmq.proxy.common.ProxyContext;
@@ -301,6 +302,28 @@ public class ConsumerProcessorTest extends 
BaseProcessorTest {
         assertEquals(handle.getReceiptHandle(), 
requestHeaderArgumentCaptor.getValue().getExtraInfo());
     }
 
+    @Test
+    public void 
testChangeInvisibleTimeShouldPreservePopTimeWhenExtraInfoUpdated() throws 
Throwable {
+        ReceiptHandle handle = 
create(createMessageExt(MixAll.RETRY_GROUP_TOPIC_PREFIX + TOPIC, "", 0, 3000));
+        assertNotNull(handle);
+
+        long popTime = 1777203436411L;
+        String newExtraInfo = "newExtraInfo";
+        AckResult innerAckResult = new AckResult();
+        innerAckResult.setStatus(AckStatus.OK);
+        innerAckResult.setPopTime(popTime);
+        innerAckResult.setExtraInfo(newExtraInfo);
+        when(this.messageService.changeInvisibleTime(any(), any(), 
anyString(), any(), anyLong()))
+            .thenReturn(CompletableFuture.completedFuture(innerAckResult));
+
+        AckResult ackResult = 
this.consumerProcessor.changeInvisibleTime(createContext(), handle,
+            MessageClientIDSetter.createUniqID(), CONSUMER_GROUP, TOPIC, 1000, 
null, 3000, true).get();
+
+        assertEquals(AckStatus.OK, ackResult.getStatus());
+        assertEquals(newExtraInfo + MessageConst.KEY_SEPARATOR + 
handle.getCommitLogOffset(), ackResult.getExtraInfo());
+        assertEquals(popTime, ackResult.getPopTime());
+    }
+
     @Test
     public void testLockBatch() throws Throwable {
         Set<MessageQueue> mqSet = new HashSet<>();

Reply via email to