You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by "lizhimins (via GitHub)" <gi...@apache.org> on 2026/09/15 03:04:46 UTC

[I] Server-side metadata, ACL and admin gaps blocking the v10 MCP tool set [rocketmq-dashboard]

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

   ### Motivation
   
   The MCP tool set needs several server-side capabilities that the metadata, ACL and admin layers do not provide today. Each gap below is independently observable from the REST layer, not only from MCP.
   
   1. **Topic message type is mutable.** `topic.update` accepts a different message type for an existing topic and overwrites it. Type is a creation-only attribute: changing it does not re-create the underlying physical topic, so the record ends up disagreeing with the broker.
   2. **No per-queue topic stats.** There is no way to read queue-level offsets for a topic, which message-consumption tooling needs.
   3. **Redelivery leaks system properties.** Redelivering a message re-sends it with the original properties intact, including the RocketMQ system-reserved ones, instead of publishing a clean copy through `%RETRY%<group>`.
   4. **Deleting a consumer group orphans its DLQ.** `%DLQ%<group>` survives group deletion and stays listed.
   5. **ACL 2.0 calls are not version-guarded.** ACL 2.0 requests are issued to brokers that do not support them, surfacing as opaque broker errors rather than a clear unsupported-version result. There is also no get-by-id lookup.
   6. **Sending does not map message semantics.** Tag and key are not mapped explicitly, FIFO sends do not select the queue by message-group hash, and delayed sends do not set `TIMER_DELIVER_MS`.
   7. **No nameserver config read.** There is no `read()` over a safe key allowlist, so nameserver configuration cannot be exposed read-only.
   8. **Default-cluster discovery silently drops ACL credentials** (security). `RocketMQDefaultClusterResolver.execute()` calls `instance(null)`, leaving `adminCredentialRef` empty, so the call falls through to the anonymous 3-argument `MqAdminExtFactory.execute` and the configured credentials are discarded without any error. It also calls `instance(cluster)`, which sets the credential reference to the cluster name; `RuntimeAdminClientResolver.resolveCredential` then looks up `credentials["DefaultCluster"]`, fails, and the request ends up 401 via 422. The existing tests `RocketMQClusterResolverTest.credentialReferenceProtectsTheConfiguredAdminConnection` and `McpCredentialAuthenticationTest$TargetResolutionIntegration` pin the broken behaviour.
   
   ### Expected
   
   - `MetadataService`: reject topic type changes, add `getTopicStats`, redeliver through `%RETRY%<group>` with system-reserved properties filtered out, cascade `%DLQ%<group>` deletion on group delete
   - `AclService`: guard ACL 2.0 by broker version, add get-by-id lookups
   - `RocketMQAdminClientImpl`: filter system-reserved properties on send, map tag and key explicitly, select the FIFO queue by message-group hash, set `TIMER_DELIVER_MS` for delayed messages
   - `NameServerConfigDiffService`: add `read()` over a safe key allowlist
   - `RocketMQDefaultClusterResolver`: advertise the configured admin credential reference only when it actually exists, and fail closed with 422 rather than degrading to an anonymous connection; keep the public shape `find/names/instance/execute` unchanged and retain anonymous discovery during bootstrap


-- 
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: commits-unsubscribe@rocketmq.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [I] Server-side metadata, ACL and admin gaps blocking the v10 MCP tool set [rocketmq-dashboard]

Posted by "lizhimins (via GitHub)" <gi...@apache.org>.
lizhimins commented on issue #4303:
URL: https://github.com/apache/rocketmq-dashboard/issues/4303#issuecomment-5674054410

   Implemented in #4304, merged into `rocketmq-studio` as cf0efbbc. All eight gaps are addressed: topic type is now immutable, `getTopicStats` added, redelivery goes through `%RETRY%<group>` with system-reserved properties filtered, group delete cascades to `%DLQ%<group>`, ACL 2.0 is broker-version guarded with get-by-id lookups, send maps tag/key explicitly and handles FIFO queue selection plus `TIMER_DELIVER_MS`, `NameServerConfigDiffService.read()` added over a key allowlist, and the default-cluster resolver now fails closed with 422 instead of silently dropping ACL credentials.


-- 
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: commits-unsubscribe@rocketmq.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [I] Server-side metadata, ACL and admin gaps blocking the v10 MCP tool set [rocketmq-dashboard]

Posted by "lizhimins (via GitHub)" <gi...@apache.org>.
lizhimins closed issue #4303: Server-side metadata, ACL and admin gaps blocking the v10 MCP tool set
URL: https://github.com/apache/rocketmq-dashboard/issues/4303


-- 
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: commits-unsubscribe@rocketmq.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org