yx9o opened a new pull request, #7096: URL: https://github.com/apache/rocketmq-dashboard/pull/7096
## What is the purpose of the change An Apache topic update without `perm` currently replaces every target Broker's live permission with the stored catalog value. If an operator disabled writes outside Studio while the catalog still says `RW`, an unrelated queue-count or remark edit can re-enable writes. ## Brief changelog - Preserve each existing Broker's exact permission mask when the update omits `perm`, including disabled and inherited permissions. - Continue applying explicit `RO` / `WO` / `RW` requests to all target Brokers. When a target Broker does not yet have the topic, retain the existing stored-permission fallback for provisioning it. - Leave the stored permission unchanged when omitted and clarify the Apache update contract in the API documentation. - Add parameterized regressions for different permissions on two Brokers and explicit overrides; strengthen the absent-configuration controls. The catalog is not synchronized from externally changed Broker permissions. API schemas and queue-count handling are unchanged. ## Verifying this change Commands used `JAVA_HOME=/Users/yx9o/home/env/jdk-22.0.2.jdk/Contents/Home` (the project compiles for Java 21). - `cd server && mvn -B -ntp -Dtest='RocketMQAdminClientImplTest#updateTopicWithoutPermissionPreservesEachBrokersPermissionTest+updateTopicWithPermissionOverridesEachBrokersPermissionTest+updateTopicStillCreatesConfigurationOnMissingMastersTest' test` — before the fix: 8 cases, 3 expected failures demonstrating permission overwrite; after the fix: all 8 passed. - `cd server && mvn -B -ntp -Dtest=RocketMQAdminClientImplTest,RocketMQMetadataProviderTest,MetadataServiceTest,TopicControllerTest,TopicMutationPlanTest,ApacheInstanceProviderTest test` — 271 tests passed, no failures, errors, or skips; compilation and Checkstyle passed. - `git diff --check` — passed. Broker RPCs are mocked in these regressions. No live RocketMQ cluster or full backend suite was exercised. -- 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]
