BewareMyPower opened a new pull request, #18486:
URL: https://github.com/apache/pulsar/pull/18486

   ### Motivation
   
   https://github.com/apache/pulsar/pull/18454 fixed the potential message loss 
when a batched message is redelivered and one single message of the batch is 
added to the ACK tracker. However, it also leads to a potential message 
duplication, see the `testConsumerDedup` test modified by #18454.
   
   The root cause is that single messages will still be passed into the 
`isDuplicated` method in `receiveIndividualMessagesFromBatch`. However, in this 
case, the `MessageId` is a `BatchedMessageIdImpl`, while the `MessageId` in 
`lastCumulativeAck` or `pendingIndividualAcks` are `MessageIdImpl` 
implementations.
   
   ### Modifications
   
   Validate the class type in `isDuplicated` and convert a 
`BatchedMessageIdImpl` to `MessageIdImpl`. Then revert the unnecessary changes 
in #18454.
   
   `ConsumerRedeliveryTest#testAckNotSent` is added to verify it works.
   
   ### TODO
   
   The duplication could still happen when batch index ACK is enabled. Because 
even after the ACK tracker is flushed, if only parts of a batched message are 
not acknowledged, the whole batched message would still be redelivered. I will 
open another PR to fix it.
   
   ### Documentation
   
   <!-- DO NOT REMOVE THIS SECTION. CHECK THE PROPER BOX ONLY. -->
   
   - [ ] `doc` <!-- Your PR contains doc changes. Please attach the local 
preview screenshots (run `sh start.sh` at `pulsar/site2/website`) to your PR 
description, or else your PR might not get merged. -->
   - [ ] `doc-required` <!-- Your PR changes impact docs and you will update 
later -->
   - [x] `doc-not-needed` <!-- Your PR changes do not impact docs -->
   - [ ] `doc-complete` <!-- Docs have been already added -->
   
   ### Matching PR in forked repository
   
   PR in forked repository: https://github.com/BewareMyPower/pulsar/pull/8


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