Frun1na opened a new issue, #4786:
URL: https://github.com/apache/rocketmq-dashboard/issues/4786

   ### Before Creating the Bug Report
   
   - [x] Searched open and closed issues/PRs and checked related diffs.
   - [x] This concerns RocketMQ Studio.
   - [x] The exact inspected version and runtime scope are stated below.
   
   ### Studio Version
   
   `rocketmq-studio` at `4c697f07acde460e2344375cb1f82669f5b270fd`.
   
   ### Runtime Environment
   
   Source inspection of the AI tool path (`rmq.nameserver.config`); no live 
Studio backend required —
   the defect is in the contract between the read service and the tool output.
   
   ### What Were You Trying to Do?
   
   Read the management NameServer configuration of a physical cluster through 
the
   `rmq.nameserver.config` tool when one of the cluster's NameServer endpoints 
is unreachable.
   
   ### What Did You Expect to Happen?
   
   The result should tell the caller that the coverage is partial: which 
endpoints answered, and
   which ones could not be read, so an AI (or an operator reading the tool 
output) knows the result
   does not describe the full cluster configuration.
   
   ### What Happened Instead?
   
   `NameServerConfigDiffService.read` 
(`cluster/nameserver/NameServerConfigDiffService.java:167-180`)
   logs a warning and skips every endpoint whose config read fails, and the 
tool returns only the
   reachable endpoints inside a plain `ListOutput` — there is no completeness 
channel of any kind. A
   cluster of three NameServers where one is down produces a two-endpoint 
result that is
   indistinguishable from a complete, healthy read. The REST diff path does not 
have this gap:
   `compare()` in the same service sets `complete(reachableNodeCount == 
addresses.size())` and
   reports per-node reachability.
   
   The same silent-abandon family was already fixed elsewhere on trunk: 
`MessageQueryOutput` carries
   `resultMayBeTruncated`/`skippedCount` (#4388), and the DLQ resend outcome 
counts abandoned queues
   (#4592 review).
   
   ### How to Reproduce
   
   1. Configure an instance whose cluster resolves to two management NameServer 
endpoints.
   2. Make the second endpoint's `getNameServerConfig` throw (a stopped 
NameServer, or a mock).
   3. Call the `rmq.nameserver.config` tool for that cluster.
   4. The output lists only the first endpoint's configuration, with no 
truncated/unreachable signal.
   
   ### Proposed Direction
   
   Follow the trunk truncation vocabulary: the tool output carries
   `resultMayBeTruncated` + `unreachableEndpoints` (mirroring 
`MessageQueryOutput`), the catalog
   `outputSchema` gains the two required fields with caller guidance, and the 
catalog is
   regenerated. Implemented in PR #4785.
   


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