This is an automated email from the ASF dual-hosted git repository.
zhouxzhan pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/rocketmq.git
The following commit(s) were added to refs/heads/develop by this push:
new 62a959691 [ISSUE #5595] Add validateSystemTopicWhenUpdateTopic (#5596)
62a959691 is described below
commit 62a959691ced2165c496b5a543b5d0955dad7fd1
Author: Zhouxiang Zhan <[email protected]>
AuthorDate: Wed Nov 30 17:10:25 2022 +0800
[ISSUE #5595] Add validateSystemTopicWhenUpdateTopic (#5596)
* [ISSUE #5595] Add validateSystemTopicWhenUpdateTopic
---
.../broker/processor/AdminBrokerProcessor.java | 30 +++++++++++++---------
.../org/apache/rocketmq/common/BrokerConfig.java | 10 ++++++++
2 files changed, 28 insertions(+), 12 deletions(-)
diff --git
a/broker/src/main/java/org/apache/rocketmq/broker/processor/AdminBrokerProcessor.java
b/broker/src/main/java/org/apache/rocketmq/broker/processor/AdminBrokerProcessor.java
index b4ec95647..dfbd886f2 100644
---
a/broker/src/main/java/org/apache/rocketmq/broker/processor/AdminBrokerProcessor.java
+++
b/broker/src/main/java/org/apache/rocketmq/broker/processor/AdminBrokerProcessor.java
@@ -412,10 +412,12 @@ public class AdminBrokerProcessor implements
NettyRequestProcessor {
response.setRemark(result.getRemark());
return response;
}
- if (TopicValidator.isSystemTopic(topic)) {
- response.setCode(ResponseCode.SYSTEM_ERROR);
- response.setRemark("The topic[" + topic + "] is conflict with
system topic.");
- return response;
+ if
(brokerController.getBrokerConfig().isValidateSystemTopicWhenUpdateTopic()) {
+ if (TopicValidator.isSystemTopic(topic)) {
+ response.setCode(ResponseCode.SYSTEM_ERROR);
+ response.setRemark("The topic[" + topic + "] is conflict with
system topic.");
+ return response;
+ }
}
TopicConfig topicConfig = new TopicConfig(topic);
@@ -456,10 +458,12 @@ public class AdminBrokerProcessor implements
NettyRequestProcessor {
response.setRemark(result.getRemark());
return response;
}
- if (TopicValidator.isSystemTopic(topic)) {
- response.setCode(ResponseCode.SYSTEM_ERROR);
- response.setRemark("The topic[" + topic + "] is conflict with
system topic.");
- return response;
+ if
(brokerController.getBrokerConfig().isValidateSystemTopicWhenUpdateTopic()) {
+ if (TopicValidator.isSystemTopic(topic)) {
+ response.setCode(ResponseCode.SYSTEM_ERROR);
+ response.setRemark("The topic[" + topic + "] is conflict with
system topic.");
+ return response;
+ }
}
boolean force = false;
if (requestHeader.getForce() != null && requestHeader.getForce()) {
@@ -507,10 +511,12 @@ public class AdminBrokerProcessor implements
NettyRequestProcessor {
response.setRemark(result.getRemark());
return response;
}
- if (TopicValidator.isSystemTopic(topic)) {
- response.setCode(ResponseCode.SYSTEM_ERROR);
- response.setRemark("The topic[" + topic + "] is conflict with
system topic.");
- return response;
+ if
(brokerController.getBrokerConfig().isValidateSystemTopicWhenUpdateTopic()) {
+ if (TopicValidator.isSystemTopic(topic)) {
+ response.setCode(ResponseCode.SYSTEM_ERROR);
+ response.setRemark("The topic[" + topic + "] is conflict with
system topic.");
+ return response;
+ }
}
this.brokerController.getTopicConfigManager().deleteTopicConfig(requestHeader.getTopic());
diff --git a/common/src/main/java/org/apache/rocketmq/common/BrokerConfig.java
b/common/src/main/java/org/apache/rocketmq/common/BrokerConfig.java
index 8e78320f1..81531e3f1 100644
--- a/common/src/main/java/org/apache/rocketmq/common/BrokerConfig.java
+++ b/common/src/main/java/org/apache/rocketmq/common/BrokerConfig.java
@@ -332,6 +332,8 @@ public class BrokerConfig extends BrokerIdentity {
private long syncControllerMetadataPeriod = 10 * 1000;
+ private boolean validateSystemTopicWhenUpdateTopic = true;
+
/**
* It is an important basis for the controller to choose the broker master.
* The lower the value of brokerElectionPriority, the higher the priority
of the broker being selected as the master.
@@ -1590,6 +1592,14 @@ public class BrokerConfig extends BrokerIdentity {
this.transactionOpBatchInterval = transactionOpBatchInterval;
}
+ public boolean isValidateSystemTopicWhenUpdateTopic() {
+ return validateSystemTopicWhenUpdateTopic;
+ }
+
+ public void setValidateSystemTopicWhenUpdateTopic(boolean
validateSystemTopicWhenUpdateTopic) {
+ this.validateSystemTopicWhenUpdateTopic =
validateSystemTopicWhenUpdateTopic;
+ }
+
public boolean isEstimateAccumulation() {
return estimateAccumulation;
}