Skip to content

[Bug] Proxy auto-renew loses liteTopic for lite consumer messages #10345

@Kris20030907

Description

@Kris20030907

Before Creating the Bug Report

  • I found a bug, not just asking a question, which should be created in GitHub Discussions.

  • I have searched the GitHub Issues and GitHub Discussions of this repository and believe that this is not a duplicate.

  • I have confirmed that this bug belongs to the current repository, not other repositories of RocketMQ.

Runtime platform environment

Ubuntu 24.04 LTS

RocketMQ version

develop

JDK Version

jdk8

Describe the Bug

When LitePushConsumer receives messages, the Java SDK sets autoRenew=true in ReceiveMessageRequest, and the following renewals are performed by the proxy in the background.

Currently, when proxy stores MessageReceiptHandle in ReceiveMessageActivity#handleAutoRenew, it does not preserve liteTopic from the received message. As a result,
ReceiptHandleProcessor later sends auto-renew requests to broker with an empty ChangeInvisibleTimeRequestHeader#liteTopic, so broker cannot enter the lite-topic-specific renewal path.

The Java SDK already carries liteTopic for explicit ACK and explicit changeInvisible requests, so the issue happens inside proxy auto-renew when storing the receipt handle.

This may cause lite messages to fail to extend invisible time as expected during long-running consumption, leading to early redelivery or duplicate delivery.

Steps to Reproduce

x

What Did You Expect to See?

x

What Did You See Instead?

x

Additional Context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions