RockteMQ-AI commented on issue #11174:
URL: https://github.com/apache/rocketmq/issues/11174#issuecomment-5707866474

   **Issue Evaluation**
   
   Category: `bug` | Status: **Confirmed** | Severity: **Medium**
   
   The reported issue has been verified against the current codebase at 
`develop@bc33e8e4d`.
   
   **Root Cause:**
   - `AckMessageActivity.getHandleString` calls `removeReceiptHandle(...)` 
which drops the managed handle mapping before the Broker ACK completes.
   - In `processAckMessage`, the `exceptionally` branch and synchronous catch 
build an error response without re-registering via `addReceiptHandle(...)`.
   - The batch ACK path has the same ordering: removes all mappings before 
`batchAckMessage(...)` completes.
   
   **Impact:** gRPC consumers using proxy auto-renew (`enableProxyAutoRenew` + 
`autoRenew`) are affected on transient proxy→broker ACK failures. After 
auto-renew replaces the client handle, a transient ACK failure loses the 
mapping. A client retry falls back to the stale handle, which gets rejected 
once expired, causing duplicate delivery.
   
   **Affected Components:** 
`proxy/src/main/java/org/apache/rocketmq/proxy/grpc/v2/consumer/AckMessageActivity.java`,
 `ReceiptHandleGroup`, `MessagingProcessor`
   
   **Expected Fix:** Restore removed receipt-handle mappings when ACK fails 
exceptionally/synchronously. No wire format or Broker ACK protocol change 
needed.
   
   An automated fix proposal can be generated. Reply `/approve` to proceed with 
PR generation.
   
   ---
   *Automated evaluation by github-manager-bot*


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to