zmuxuny opened a new pull request, #5192: URL: https://github.com/apache/rocketmq-dashboard/pull/5192
### Which Issue(s) This PR Fixes Fixes #5191 ### Brief Description DLQ replay keeps `__SHARDINGKEY` in the reconstructed message, but ordinary `producer.send(message)` ignores that group when choosing a queue. Same-group messages can therefore be scattered across queues even though every send reports success. Use the existing group-hash selection convention for dead letters carrying a nonblank group. This applies to both time-range and selected-message replay, retaining the original topic or the caller's explicit target. Ungrouped sends and existing failure reporting stay unchanged. Grouped sends never fall back to the ordinary overload after failure. Scope: queue affinity under a stable route. This does not restore historical application order, coordinate concurrent replays, or promise ordering across failed messages and later retries. No API, schema, dependency or frontend changes. ### How Did You Test This Change? - Two initial affinity regressions failed on unchanged production code: the actual RocketMQ 5.5.0 `TopicPublishInfo` round-robin selector put repeated FIFO groups on different queues while the replay reported all four sends successful. - Seven added regression cases cover selected IDs/original topic, time-range/explicit target, two distinct negative-hash groups including `Integer.MIN_VALUE`, missing group, existing empty/blank-property rejection, and exceptional/non-successful grouped sends without ordinary-send fallback. - `mvn -B -ntp test -Dtest=RocketMQDLQProviderTest,DLQServiceTest,DLQControllerTest,RuntimeAdminClientResolverTest,MqClientPoolTest`: **103 tests passed**, zero failures/errors; zero Checkstyle violations. - Broader backend run excluding the 13 datasource-dependent `@SpringBootTest` classes: **3,264 tests ran; 3,237 passed, 16 failed, 11 errored**. All 27 failing/error cases are in unmodified `LlmConfigServiceTest` and `NotificationOutboxServiceTest`. Running those two classes in a clean upstream `4ee173ad` worktree reproduced the **same 27 case names and exception types** (URL validation/webhook expectations). This is not a full-suite pass. - `mvn -B -ntp -DskipTests package`: compilation, tests compilation, JAR creation and Spring Boot repackaging completed. The final binary-license gate fails on missing complete dependency LICENSE/COPYING files. Clean upstream `4ee173ad` reproduces the same 164 missing-license artifact diagnostics. No packaging success is claimed. - `git diff --check`: passed. - Toolchain: Temurin 21.0.12.1 and Maven 3.9.11, with Mockito loaded as a startup Java agent. No live broker, MySQL, frontend or end-to-end test is claimed. AI assistance was used. The source behavior, diff, deterministic regression and compatibility/failure cases were reviewed. ### Checklist - [x] One coherent defect fix linked to an issue created before the production edit - [x] Conventional commit subject - [x] Regression tests named with the `Test` suffix - [x] Existing ASF source headers retained; no new source files - [x] Validation results and baseline limitations disclosed - [x] No new UI text, dependency or schema change -- 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]
