f1amingo opened a new issue, #11248:
URL: https://github.com/apache/rocketmq/issues/11248

   ### Before Creating the Bug Report
   
   - [x] I found a bug, not just asking a question.
   - [x] I have searched the GitHub Issues and Discussions and believe this is 
not a duplicate.
   - [x] I have confirmed this bug belongs to the current repository.
   
   ### Runtime platform environment
   
   OS: macOS / Linux
   
   ### RocketMQ version
   
   branch: develop
   
   ### JDK Version
   
   Oracle JDK 8
   
   ### Describe the Bug
   
   A lite topic can stop delivering messages forever: its messages are stored 
and readable, the consumer is still subscribed, but no event is left to trigger 
another read, so they are never delivered.
   
   This happens when a lite topic is notified before its messages are readable, 
e.g. with `rocksdbCQDoubleWriteEnable=true`, 
`rocksdbCQSelectiveDoubleWriteEnable=true` and 
`combineCQUseRocksdbForLmq=true`, where the reput notification fires before the 
RocksDB CQ entry is committed.
   
   ### Steps to Reproduce
   
   1. Start a broker with the store config above; a consumer subscribes to many 
lite topics.
   2. Send one message to each lite topic in a burst while the consumer keeps 
popping.
   3. A pop reads a lite topic right after the early notification and gets 0 
messages; the lite topic is still recorded in the per-request dedup set.
   4. The CQ commit re-dispatches the lite topic within the same pop, and the 
event is dropped as a duplicate.
   
   ### What Did You Expect to See?
   
   Every lite topic eventually delivers all its messages.
   
   ### What Did You See Instead?
   
   In a local run of 2000 lite topics with one message each, 7–22 lite topics 
never delivered their message: the CQ max offset is 1, the consumer offset 
stays at 0, the subscriber is present and the client has no pending event.
   
   ### Additional Context
   
   Root cause: a lite topic is recorded in the per-request dedup set before its 
messages are read, so an empty read also marks it and a later re-dispatch 
within the same pop is dropped. This is the same class of issue as #11191, 
which covered the FIFO-blocked case.
   


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