lizhimins opened a new issue, #7018: URL: https://github.com/apache/rocketmq/issues/7018
### Before Creating the Bug Report - [X] I found a bug, not just asking a question, which should be created in [GitHub Discussions](https://github.com/apache/rocketmq/discussions). - [X] I have searched the [GitHub Issues](https://github.com/apache/rocketmq/issues) and [GitHub Discussions](https://github.com/apache/rocketmq/discussions) of this repository and believe that this is not a duplicate. - [X] I have confirmed that this bug belongs to the current repository, not other repositories of RocketMQ. ### Runtime platform environment MacOS + JDK11 ### RocketMQ version RocketMQ version lower than 5.1.3 ### JDK Version 1 ### Describe the Bug As we all know, there is a "soft binding relationship" between the CommitLog and ConsumeQueue files in RocketMQ. Messages in the CommitLog store the expected offset in the ConsumeQueue, and in the tiered storage upload logic, strong validation is enabled, resulting in an infinite loop. The specific implementation can be found in: org.apache.rocketmq.tieredstore.TieredDispatcher#dispatchFlatFile - org.apache.rocketmq.tieredstore.file.CompositeFlatFile#appendCommitLog 众所周知,RocketMQ 的 CommitLog 和 ConsumeQueue 文件事实上有 “软绑定关系” CommitLog 中的 Message 会存储期望在 ConsumeQueue 上的位点,而分级存储的上传逻辑中,开启了强校验,导致无限循环。 具体实现参考: org.apache.rocketmq.tieredstore.TieredDispatcher#dispatchFlatFile - org.apache.rocketmq.tieredstore.file.CompositeFlatFile#appendCommitLog ### Steps to Reproduce 什么时候回出现 CommitLog 中期望在 ConsumeQueue 的位点和 ConsumeQueue 中消息实际的 offset 不一致。 主要有几种情况 1. Topic 删除重建 2. 发生 HA 修复 3. cq 没有及时 flush 到本地,宕机后重新分发。 ### What Did You Expect to See? 1 ### What Did You See Instead? 1123123 ### Additional Context _No response_ -- 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]
