krashouk opened a new issue, #1885: URL: https://github.com/apache/rocketmq-dashboard/issues/1885
## 问题描述 `MessageServiceImpl` 的两个分页拉取循环在 `PullStatus.FOUND` 后没有把局部 `start` 更新为 `PullResult#getNextBeginOffset`。当一次拉取返回的消息数少于剩余页容量时,下一轮会从同一 offset 再次拉取,导致页面包含重复消息;异常 broker 若持续返回不前进的 offset,还可能造成无效循环。 ## 复现步骤 1. 模拟一个队列范围为 offset 0 到 4 的消息查询。 2. 第一次分页拉取从 offset 0 返回两条消息,并返回 `nextBeginOffset=2`。 3. 请求页面大小为 4,使循环继续拉取。 4. 观察下一次调用仍从 offset 0 开始,结果包含重复消息 ID。 ## 预期行为 每次成功拉取后应从 `nextBeginOffset` 继续;若 broker 返回的 offset 未前进,应停止当前队列拉取并保留已获得的部分结果,避免重复数据或死循环。 ## 环境 - 分支:`master` - 基线:`770822bbc812bfd0c2a94aa0128ab6f59b50d076` - JDK:17 ## 建议修复方向 在两个分页循环中统一推进 offset,并增加 next offset 不前进时的保护和回归测试。 -- 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]
