yuluo-yx opened a new issue, #10870:
URL: https://github.com/apache/rocketmq/issues/10870

   ### Before Creating the Bug Report
   
   - [x] I found a bug, not just a question.
   - [x] I searched open GitHub Issues and pull requests and found no duplicate.
   - [x] I confirmed that this bug belongs to Apache RocketMQ.
   
   ### Runtime platform environment
   
   macOS (Darwin), reproduced with an isolated local unit test.
   
   ### RocketMQ version
   
   Branch: develop
   Git commit: fd0c95920e0deac96ce2ae27442747cc5e65e930
   
   ### JDK Version
   
   Zulu OpenJDK 8 (8.94.0.17)
   
   ### Describe the Bug
   
   ProcessQueue.putMessage assigns queueOffsetMax from each newly inserted 
message. When a batch is not ordered by queue offset, a lower offset processed 
last overwrites the real maximum. After the queue is drained, removeMessage 
therefore returns a stale next offset.
   
   ### Steps to Reproduce
   
   1. Create a ProcessQueue.
   2. Insert two messages in one batch with queue offsets 10 and 5, in that 
order.
   3. Remove both messages.
   4. Observe that the returned next offset is 6.
   
   ### What Did You Expect to See?
   
   The returned next offset should be 11, one greater than the highest offset 
ever inserted.
   
   ### What Did You See Instead?
   
   The returned next offset is based on the last iterated message rather than 
the maximum queue offset.
   
   ### Additional Context
   
   The issue is deterministic and is covered by ProcessQueueTest.


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