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]

Reply via email to