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

   **Issue Evaluation**
   
   Category: `type/bug` | Status: **Confirmed**
   
   The reported race condition in 
`ClusterTransactionService.scanProducerHeartBeat()` is valid. The issue 
correctly identifies that `ProducerManager.groupOnline(group)` returning false 
before the first producer heartbeat causes premature deletion of the 
transaction subscription via `groupClusterData.computeIfPresent()`.
   
   **Root Cause:** The scan does not distinguish between a group that has 
permanently gone offline and one that has not yet registered its first 
heartbeat. Once the subscription is removed, subsequent heartbeats only update 
`ProducerManager` but do not rebuild the deleted mapping.
   
   **Impact:** Transaction checks cannot reach the producer if no further 
transaction messages are sent after the race window. This affects reliability 
of transaction message processing in Proxy cluster mode.
   
   **Severity:** medium — The bug is deterministic under specific timing 
conditions but does not cause data loss; it prevents transaction status checks 
from reaching the producer.
   
   **Related:** This is a recurrence of #8316 (closed by stale bot) and relates 
to #5862/#5865. The earlier fix proposal #8320 introduced a grace period but 
was not merged.
   
   **Recommendation:** A grace period or subscription timestamp (as proposed in 
#8320) would prevent premature deletion. Alternatively, the scan could skip 
groups whose subscriptions were created within a recent time window.
   
   ---
   *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