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]

Reply via email to