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