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]
