RockteMQ-AI commented on issue #1321: URL: https://github.com/apache/rocketmq-clients/issues/1321#issuecomment-5213697199
**Issue Evaluation** Category: `type/bug` | Status: **Confirmed** Well-documented bug in Java PushConsumer attempt ID management for FIFO consumption. **Root Cause:** `ProcessQueueImpl` rotates the attempt ID on any non-DEADLINE_EXCEEDED failure (e.g., `RST_STREAM`, `CANCELLED`), even when the server has already completed the receive/POP operation. This breaks FIFO recovery because the new attempt ID cannot recover messages locked by the previous attempt. **Impact:** - FIFO consumption can get stuck for up to 180s (or longer) after stream-level failures - Affects Java PushConsumer in proxy mode with FIFO topics - Only `DEADLINE_EXCEEDED` currently preserves the attempt ID; other transport errors do not **Severity:** High — affects message consumption liveness in FIFO scenarios with network-level failures **Fix Assessment:** The proposed behavior is correct: - Reuse attempt ID after any failed receive RPC - Reuse it after successful but empty responses - Generate new attempt ID only after the raw receive response contains at least one message - Decision must be based on messages in the raw response, before client-side filtering This aligns with the semantics described in apache/rocketmq#10827 (attempt ID identifies a logical receive attempt, not individual RPC invocations). Ready for maintainer review and merge. --- *Automated evaluation by github-manager* -- 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]
