project-nju-learner opened a new pull request, #7331:
URL: https://github.com/apache/rocketmq-dashboard/pull/7331

   ### Which Issue(s) This PR Fixes
   
   - Fixes #7330
   
   ### Brief Description
   
   Two physical dead letters can share one producer `UNIQ_KEY`. Using that 
logical ID for row selection can collapse two selected messages into one replay 
reported as `SUCCESS`, or export both when only one was selected.
   
   Preserve `msgId` and add an optional server-generated `selectionId`, with 
explicit `selectionType: "queue"`. The UI echoes the locator string; replay 
resolves the queue through the instance's DLQ route and validates the returned 
topic, queue ID, queue offset and commit-log offset. Exact selection also flows 
through Excel filtering and failure details. Existing replay, FIFO and 
partial-result handling remain in use.
   
   Omitting the discriminator preserves legacy ID semantics, including custom 
IDs starting with `queue:`. Excel retains its time-window, 5,000-record and 
payload limits. Locators require a fresh list after Broker storage rebuilds or 
restores.
   
   Draft for the API discussion in #7330: the public locator/discriminator 
contract still needs maintainer feedback. Separate `selectionIds` or an 
explicitly interpreted `offsetMsgId` remain alternatives.
   
   ### How Did You Test This Change?
   
   JDK 21.0.12.1, Maven 3.9.12, Node.js 23.4.0, RocketMQ 5.5.0. Existing local 
results were reused because the patch and upstream baseline are unchanged.
   
   - Focused backend command below: **206 passed**, 0 failures/errors/skips; 
Checkstyle 0 violations.
   - Original page: 3 new core regressions failed as expected. Fixed 
`DLQPage.test.tsx`: **43 passed**.
   - `tsc -b`, changed-file ESLint, Vite build, web license check and 
changed-file Prettier passed. ESLint reports one existing react-refresh warning.
   - Backend `mvn -B -ntp -DskipTests package` with the license Python 
configured passed, including the binary license gate. `git diff --check` passed.
   - Real producer sends and `sendMessageBack` created A/B dead letters sharing 
a logical ID. With indexing enabled and disabled, exact selection replayed B, 
then A, then both as `[B,A,A,B]`; invalid locators added nothing.
   - Two real brokers with indexing disabled held records with identical 
numeric coordinates. Single/batch selections were exact. After B stopped, 
`[B,A]` returned `PARTIAL` and replayed only A; route-excluded B-only 
selections added nothing. All 7 requests returned normal results with 
target-queue read-back.
   
   ```text
   mvn -o -B -ntp 
-Dtest=RocketMQDLQProviderTest,RocketMQDLQPayloadBudgetTest,DLQServiceTest,DLQControllerTest,DLQMessageExcelRowTest,MessageQueryDlqToolHandlerTest,MessageRedeliveryDlqToolHandlerTest
 test
   node node_modules/vitest/vitest.mjs run 
src/pages/instance/__tests__/DLQPage.test.tsx --maxWorkers=1
   ```
   
   The original-provider comparison used original provider/interface bytecode 
with current supporting classes. Real-Broker fixtures replaced database-backed 
instance wiring and audit persistence. Full backend/MySQL/ArchUnit and full 
frontend suites, browser end-to-end, ACL, static-topic migration, replica 
failover, cross-cluster isolation and physically aged messages were not tested. 
The offline timing was controlled; observations are limited to recorded target 
read-backs.
   
   ### 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, Java test methods 
named `...Test`
   - [x] New UI text has both Chinese and English entries under `web/src/i18n/`
   - [ ] Architecture constraints stay green (full ArchUnit suite not run 
locally)
   - [x] New source files carry the ASF license header (no new source files)
   - [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