zmuxuny opened a new pull request, #7388: URL: https://github.com/apache/rocketmq-dashboard/pull/7388
### Which Issue(s) This PR Fixes Fixes #6752. Replaces stale-closed #6763, retaining the existing contribution history and authorship on rocketmq-studio at 7abf8adaf660d75f2d686bbe8741be76c3a5ddd3. ### Brief Description Give each consumer-progress row a collision-free identity by serializing its topic, broker and queue ID as a JSON tuple. Concatenating those values with '-' makes distinct queues such as orders-west / a / 0 and orders / west-a / 0 share a React key. Filtering can then leave an excluded row visible. The regression filters both colliding queues out, clears the filter, and checks the complete rendered rows and offsets. The production change is limited to the consumer-progress table. A reproduced failure in the existing manual subscription-refresh test is isolated by faking only interval scheduling in that one test and restoring real timers after cleanup, following pilichoumao's #6521. Its original assertions remain unchanged. The separate real two-second polling test still runs with real timers. No stack-test isolation, timeout increase, API or dependency change is included. ### How Did You Test This Change? Local checks re-run on 2026-11-04 with Node 24.22.1 and the unchanged 20-second test timeout. The validated final tree is published at b2af3c3f1e99c150c5c8ba4fe7d2756b25ad58f4: - Final-tree row-identity regression: passed before and after the negative control. - Negative control: restoring only the production component from the base makes the regression fail because an excluded orders row remains visible. Restoring the candidate component makes it pass again. - Row identity, manual subscription refresh and real two-second subscription polling: three independent serial runs, 3/3 passed each time. - npx tsc -b, frontend-wide npm run lint, changed-file Prettier and git diff --check: passed on the final tree. - npm run build: passed on the final tree, including Vite and license check (134 components, 141 license files). The earlier full ConsumerPage.test.tsx run was 62 passed / 11 failed in 594 seconds. The new regression passed; six existing cases timed out and five existing assertions failed. Focused comparisons of those 11 cases passed 10/11 on both unchanged base and candidate, with different failures: a settings timeout on base and manual subscription refresh on candidate. Only the reproduced manual-refresh fixture was adjusted. The full 73-case suite was not rerun after that adjustment; no full component-suite, whole-frontend-suite or hosted-CI pass is claimed. Repeated focused command: cd web && npx vitest run src/pages/instance/__tests__/ConsumerPage.test.tsx -t 'doesNotRetainExcludedQueuesWhenTopicAndBrokerNamesShareADelimiterKeyTest|highlights inconsistent subscriptions and refreshes the check result|refreshes the subscription verdict on the 2s modal auto-refresh' --maxWorkers=1. ### Checklist - [x] Scoped row-identity fix with a behavioral regression - [x] Existing contribution history and authorship retained - [x] Manual-test interval isolation preserves original assertions and real polling coverage - [x] No new UI strings, dependencies or backend changes - [x] Final-tree type checking, lint, formatting and production build passed - [ ] Full component-suite pass not claimed; earlier failures disclosed above - [ ] Hosted CI pending AI assistance was used for review and validation; the diff and results were checked before submission. -- 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]
