3219378872 opened a new pull request, #5104:
URL: https://github.com/apache/rocketmq-dashboard/pull/5104
### Which Issue(s) This PR Fixes
- Fixes #5103
### Brief Description
When more than 32 dead letters share the inclusive end timestamp, the
scanner can return just the first pull batch without marking the result
incomplete. `searchOffset(end)` locates the first message at that timestamp, so
it is not a sufficient upper offset boundary.
Search the exclusive boundary at `end + 1`, matching the ordinary
topic-message scanner's convention. Use the queue's maximum offset when `end ==
Long.MAX_VALUE` to avoid overflow. Keep the per-message inclusive time filter,
and document that interval in the API specification.
### How Did You Test This Change?
JDK 21 / Maven 3.9.9, from the repository root:
```sh
mvn -B -ntp -f server/pom.xml -Dtest=RocketMQDLQProviderTest test
# 44 tests, 0 failures/errors/skips; Checkstyle: 0 violations
mvn -B -ntp -f server/pom.xml \
-Dtest=DLQServiceTest,DLQControllerTest,DLQMessageExcelRowTest test
# 44 tests, 0 failures/errors/skips; Checkstyle: 0 violations
git diff --check
```
Added regressions cover 80 messages at the end timestamp across three pulls,
an out-of-window message, an empty offset window, and the maximum timestamp.
Also exercised the actual public `exportMessages` method with client 5.5.0
against an isolated real NameServer/Broker. Sending 80 messages in one batch
gives them the same verified Broker-assigned store timestamp. The original
provider returns **32**, with `failedQueues=0` and `truncated=false`; the fix
returns **80** and excludes the later message. A second replay of the original
provider reproduces the same failure. Offset searches and pulls are not mocked.
[Pinned live reproduction, source, raw logs and replay
instructions](https://github.com/3219378872/rocketmq-dashboard/tree/d791305570f07c66e15783d015284bce31054afe/contribution-evidence/dlq-inclusive-time-boundary).
Validation scope: 88 related tests and isolated provider/Broker integration,
not a full Studio/MySQL deployment or legacy-Broker compatibility test. Full
packaging was not rerun here: the preceding contribution at the same baseline
reproduced identical binary-license packaging failures on the original and
patched trees, as disclosed in #5102. No full-suite or upstream CI pass is
claimed.
### Checklist
- [x] One coherent change; unrelated modifications are not bundled in
- [x] Commit subject follows Conventional Commits
- [x] Tests added or updated for non-trivial changes, test methods named
`...Test`
- [x] New UI text has both Chinese and English entries — N/A, no UI change
- [ ] Architecture constraints stay green — no ArchUnit test classes were
found at this baseline; the related test runs above do not establish a full
architecture gate
- [x] New source files carry the ASF license header — no new source files in
the patch; existing headers retained
- [x] Documentation touched where behaviour changed
--
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]