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

Reply via email to