BewareMyPower opened a new issue, #25291:
URL: https://github.com/apache/pulsar/issues/25291

   ### Search before reporting
   
   - [x] I searched in the [issues](https://github.com/apache/pulsar/issues) 
and found nothing similar.
   
   
   ### Read release policy
   
   - [x] I understand that [unsupported 
versions](https://pulsar.apache.org/contribute/release-policy/#supported-versions)
 don't get bug fixes. I will attempt to reproduce the issue on a supported 
version of Pulsar client and Pulsar broker.
   
   
   ### User environment
   
   master branch
   
   ### Issue Description
   
   With `AutoClusterFailover`, a consumer is able to switch from cluster A to 
cluster B on the same topic. 
   
   
https://github.com/apache/pulsar/blob/629ddebeec08438536a6b63f413c11caaf445b1f/pulsar-client/src/main/java/org/apache/pulsar/client/impl/AutoClusterFailover.java#L172-L173
   
   The client will update the service URL and recreate the lookup service. 
However, the consumer's internal states are not cleared, including:
   - The ACK grouping tracker, which contains some acknowledged message IDs
   - `lastDequedMessageId`, which represents the message ID of last message 
received
   
   These message IDs all come from **Cluster A**.
   
   Next time, when the consumer established connection to Cluster B, it will:
   - Filter out duplicated messages via 
`AcknowledgmentsGroupingTracker#isDuplicate`. If the acknowledged message ID is 
cumulative, it will compare the newly **received message's ID from Cluster B** 
with **the previous acknowledged message ID from Cluster A**
   - Set `startMessageId` to the **last message ID from Cluster A**, this 
message ID will be carried in **the Subscribe request to the topic on Cluster 
B**
   
   ### Error messages
   
   ```text
   n/a
   ```
   
   ### Reproducing the issue
   
   I did't try to reproduce it with Java client for now, but it can be 
reproduced with C++ client like: 
https://github.com/apache/pulsar-client-cpp/pull/541/changes/c6de067e3795b58eed558c03795e385fc8ee16a5#diff-36936d31d0cbc6547ff0eea6b2bc79bbffdc4de6d63223dd0b4e527e369059d1
   
   ### Additional information
   
   _No response_
   
   ### Are you willing to submit a PR?
   
   - [x] I'm willing to submit a PR!


-- 
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