Frun1na opened a new issue, #5651: URL: https://github.com/apache/rocketmq-dashboard/issues/5651
### Before Creating the Bug Report - [x] I have searched the [open issues](https://github.com/apache/rocketmq-dashboard/issues) of this repository and believe that this is not a duplicate. - [x] This is a defect in RocketMQ Studio, not a usage question and not a defect in another Apache RocketMQ repository. - [x] I can reproduce this on the current `master` branch, or I have stated the exact version I am running below. ### Studio Version branch: `rocketmq-studio` git commit id: `6a68042f` deployed as: built from source ### Runtime Environment OS: Ubuntu 22.04 (WSL2) MySQL: not applicable — the defect is in the provider dispatch, covered by the provider test browser: not applicable ### Connected RocketMQ Cluster RocketMQ version: not applicable — the defect is in the Aliyun / Tencent provider adapters access mode: cloud provider adapters (Aliyun consumer-group OpenAPI, Tencent TDMQ DescribeMessage/consumer-group API) deployment: not applicable ### Describe the Bug `rmq.group.update` is documented as an upsert: `ConsumerGroupUpdateToolHandler.execute` updates the group when it already exists and creates it otherwise. On Aliyun and Tencent instances the update branch never updates anything: ```java // InstanceProvider.java default ConsumerGroupVO updateConsumerGroup(String instanceId, ConsumerGroupVO group) { return createConsumerGroup(instanceId, group); // only ApacheInstanceProvider overrides this } ``` Only `ApacheInstanceProvider` overrides `updateConsumerGroup` (it writes through `adminClient.updateConsumerGroup`), so on a cloud instance an update of an existing group is sent to the vendor's **create** API. That is not an update: the vendor either rejects the call because the group already exists — surfacing to the operator as an error that has nothing to do with the requested change — or answers success while the requested configuration is not applied, and Studio reports the call as executed. The tool is open to cloud instances by design: `rmq.group.update` requires the `CONSUMER_GROUP_MANAGEMENT` capability, which both `AliyunInstanceProvider` and `TencentInstanceProvider` declare, and `rmqctl group update` maps to the same tool. Other group operations that cloud instances cannot serve already say so explicitly (`BusinessException(501, "... are not supported for cloud instances")`); the update path silently does something else instead. ### Steps to Reproduce 1. Point Studio at an Aliyun or Tencent instance whose cluster contains a consumer group, e.g. `orders-group`. 2. Call the tool: `rmqctl group update --group-name orders-group --retry-max-times 20` (or the MCP/AI equivalent) against that instance. 3. Observe the outgoing vendor call: it is the create API, not an update — with a mock client the request captured is `CreateConsumerGroupRequest`, and the vendor's already-exists error is what an operator sees. 4. `InstanceProviderTest#updateConsumerGroupShouldRejectProvidersThatCannotUpdateTest` pins the dispatch: on the current code the default implementation calls `createConsumerGroup`; with the fix it rejects the request instead. ### What Did You Expect to See? Either a real update, or an explicit refusal — the same 501 the neighbouring cloud-unsupported group operations already return, so an operator learns the operation is unavailable instead of getting a create call in its place. ### What Did You See Instead? An update request answered by the vendor's create API, whose outcome is an already-exists failure or a success that leaves the group configuration unchanged. ### Additional Context - Only the Apache provider has a real update path (`ApacheInstanceProvider#updateConsumerGroup` → `adminClient.updateConsumerGroup`); neither cloud adapter overrides the default. - Real cloud support looks feasible as a follow-up: the Aliyun SDK carries `UpdateConsumerGroupRequest` and the Tencent SDK carries `ModifyConsumerGroupRequest`; wiring them up is a larger change than this report asks for, and cannot be verified here without a live cloud account. ### Are You Willing to Submit a Pull Request? - [x] Yes, I am willing to submit a pull request. -- 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]
