pilichoumao opened a new pull request, #4550:
URL: https://github.com/apache/rocketmq-dashboard/pull/4550

   ### Which Issue(s) This PR Fixes
   
   Addresses the client-list gap described in the [maintainer review of 
#4062](https://github.com/apache/rocketmq-dashboard/pull/4062#issuecomment-5581511118).
   
   ### Brief Description
   
   With a gRPC or Remoting consumer connected through a cluster-mode Proxy, the 
Broker reports the group offline. The Studio client page previously omitted 
both consumers. `GET /api/clients?namesrvAddr=...` now merges Broker and Proxy 
connections, retaining directly connected consumers.
   
   - Reuse `ProxyConsumerResolver` heartbeat discovery and the selected pooled 
Admin client's existing connection query. Discover through the selected 
cluster's Brokers; cache discovery only within the request, and deduplicate 
connections across Brokers/Proxies. Both NameServer and instance entry points 
share this path.
   - The existing Proxy response does not identify the client protocol, and its 
integer version can be a compatibility value. Return null protocol/version and 
preserve reported language; render missing metadata as `-`.
   - Treat explicit offline responses as empty. Keep available rows with 
`partial=true` on lookup failures; an empty incomplete inventory is an error. 
Preserve interruption and propagate unexpected errors.
   
   #4544 remains open and addresses group-health availability. This change 
preserves its existing resolver APIs and does not implement its status model; 
its current patch applies cleanly over this diff. #2504 added group 
observability, while #4385 concerns lag; neither covers this client-list path.
   
   ### How Did You Test This Change?
   
   - Fail-before regression on `master@d50ffecc`: the real 
controller/service/provider chain returned 0 rows instead of the expected Proxy 
consumer. The updated tests also cover distinct NameServers, same-named groups 
across clusters, multiple Brokers/Proxies, missing metadata, 
offline/failure/partial responses and interruption.
   - Java 21, dependencies resolved into a fresh Maven repository: `mvn -B -ntp 
-Dspring.profiles.active=dev package` — **2,423 tests passed**, including 
architecture checks; **0 Checkstyle violations**, package successful. This uses 
the project's H2 development profile. The default MySQL profile cannot complete 
without local MySQL; clean master reproduces the application-context errors.
   - `npm test -- src/pages/cluster/__tests__/ClientsPage.test.tsx 
src/utils/clientConnectionDiagnostics.test.ts` — **26 passed**. `npm run 
build`, TypeScript and touched-file Prettier passed; full ESLint has **0 errors 
/ 10 existing warnings**. `git diff --check` passed.
   - Real local Apache RocketMQ **5.5.0** NameServer/Broker/cluster-mode Proxy, 
Java gRPC SDK **5.0.7**, and **5.5.0** Remoting consumers: the stock baseline 
API omitted both Proxy consumer groups; the fixed API returns both plus the 
direct consumer. The configured default NameServer intentionally differs from 
the request's selection. Unrelated cluster filtering returns no rows; graceful 
gRPC shutdown removes that consumer; pausing the Proxy retains direct rows with 
`partial=true`, and resuming it restores the inventory.
   
   Not exercised against real multi-NameServer/multi-cluster deployments, 
ACL/TLS or MySQL. Discovery retains the existing 
heartbeat-syncer/default-remoting-port assumptions (8080); no new service, 
dependency, port or configuration is introduced.
   
   ### Checklist
   
   - [x] One coherent change; no unrelated modifications
   - [x] Conventional commit subject; regression tests use `...Test`
   - [x] New UI text includes Chinese and English
   - [x] Architecture and formatting checks pass
   - [x] API behavior documented; no new source files
   


-- 
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