JanWarlen opened a new issue, #4644:
URL: https://github.com/apache/rocketmq/issues/4644

   
   **BUG REPORT**
   
   1. Please describe the issue you observed:
   
   - What did you do (The steps to reproduce)?
   - `./mqadmin deleteTopic  -n 'master:9876' -c DefaultCluster -t test_topic`
   
   - What is expected to see?
   - topic delete succeed
   
   - What did you see instead?
   - `org.apache.rocketmq.tools.command.SubCommandException: 
DeleteTopicSubCommand command failed
           at 
org.apache.rocketmq.tools.command.topic.DeleteTopicSubCommand.execute(DeleteTopicSubCommand.java:97)
           at 
org.apache.rocketmq.tools.command.MQAdminStartup.main0(MQAdminStartup.java:149)
           at 
org.apache.rocketmq.tools.command.MQAdminStartup.main(MQAdminStartup.java:100)
   Caused by: org.apache.rocketmq.client.exception.MQClientException: CODE: 1  
DESC: Can't modify topic or subscription group from slave broker, please 
execute it from master broker.
   For more information, please visit the url, 
http://rocketmq.apache.org/docs/faq/
           at 
org.apache.rocketmq.client.impl.MQClientAPIImpl.deleteTopicInBroker(MQClientAPIImpl.java:1499)
           at 
org.apache.rocketmq.tools.admin.DefaultMQAdminExtImpl.deleteTopicInBroker(DefaultMQAdminExtImpl.java:465)
           at 
org.apache.rocketmq.tools.admin.DefaultMQAdminExt.deleteTopicInBroker(DefaultMQAdminExt.java:336)
           at 
org.apache.rocketmq.tools.command.topic.DeleteTopicSubCommand.deleteTopic(DeleteTopicSubCommand.java:44)
           at 
org.apache.rocketmq.tools.command.topic.DeleteTopicSubCommand.execute(DeleteTopicSubCommand.java:91)
           ... 2 more`
   
   2. Please tell us about your environment:
   I have 3 broker, one master, two slave.
   3 nameserver
   I can create topic by command `./mqadmin updateTopic -n master:9876 -c 
DefaultCluster -t test_topic`
   and i can delete topic by rocketmq-dashboard.but not work on command 
`./mqadmin deleteTopic`
   system is centos7_64
   rocketmq version: 4.9.4
   
   4. Other information (e.g. detailed explanation, logs, related issues, 
suggestions on how to fix, etc):
   i checked tools' code,and here is the question:
   first: code 
`org.apache.rocketmq.tools.command.topic.DeleteTopicSubCommand#deleteTopic`try 
to find all broker addrs by code 
`CommandUtil.fetchMasterAndSlaveAddrByClusterName`.
   second: when it ready to delete the 
topic,`org.apache.rocketmq.tools.admin.DefaultMQAdminExtImpl#deleteTopicInBroker`,it
 exec the command on every single broker, didn't void the slave.
   third: i add some `System.out.println`
   ```java
   public static void deleteTopic(final DefaultMQAdminExt adminExt,
           final String clusterName,
           final String topic
       ) throws InterruptedException, MQBrokerException, RemotingException, 
MQClientException {
   
           Set<String> brokerAddressSet = 
CommandUtil.fetchMasterAndSlaveAddrByClusterName(adminExt, clusterName);
           System.out.println("brokerAddressSet:"+ 
Arrays.toString(brokerAddressSet.toArray()));
           adminExt.deleteTopicInBroker(brokerAddressSet, topic);
           System.out.printf("delete topic [%s] from cluster [%s] success.%n", 
topic, clusterName);
   
           Set<String> nameServerSet = null;
           if (adminExt.getNamesrvAddr() != null) {
               String[] ns = adminExt.getNamesrvAddr().trim().split(";");
               nameServerSet = new HashSet(Arrays.asList(ns));
           }
   
           adminExt.deleteTopicInNameServer(nameServerSet, topic, clusterName);
           System.out.printf("delete topic [%s] from NameServer success.%n", 
topic);
       }
   ```
   ```java
   org.apache.rocketmq.tools.admin.DefaultMQAdminExtImpl#deleteTopicInBroker
   @Override
       public void deleteTopicInBroker(Set<String> addrs,
                                       String topic) throws RemotingException, 
MQBrokerException, InterruptedException,
               MQClientException {
           for (String addr : addrs) {
               
System.out.println("org.apache.rocketmq.tools.admin.DefaultMQAdminExtImpl.deleteTopicInBroker:"
 + addr);
               
this.mqClientInstance.getMQClientAPIImpl().deleteTopicInBroker(addr, topic, 
timeoutMillis);
           }
       }
   ```
   and the last but also important,here is the log when i exec the delete 
command again:
   ```shell
   [root@master bin]# ./mqadmin deleteTopic -n 'master:9876' -c DefaultCluster 
-t test_topic
   brokerAddressSet:[192.168.125.201:10911, 192.168.125.202:10911, 
192.168.125.203:10911]
   
org.apache.rocketmq.tools.admin.DefaultMQAdminExtImpl.deleteTopicInBroker:192.168.125.201:10911
   
org.apache.rocketmq.tools.admin.DefaultMQAdminExtImpl.deleteTopicInBroker:192.168.125.202:10911
   org.apache.rocketmq.tools.command.SubCommandException: DeleteTopicSubCommand 
command failed
           at 
org.apache.rocketmq.tools.command.topic.DeleteTopicSubCommand.execute(DeleteTopicSubCommand.java:97)
           at 
org.apache.rocketmq.tools.command.MQAdminStartup.main0(MQAdminStartup.java:149)
           at 
org.apache.rocketmq.tools.command.MQAdminStartup.main(MQAdminStartup.java:100)
   Caused by: org.apache.rocketmq.client.exception.MQClientException: CODE: 1  
DESC: Can't modify topic or subscription group from slave broker, please 
execute it from master broker.
   For more information, please visit the url, 
http://rocketmq.apache.org/docs/faq/
           at 
org.apache.rocketmq.client.impl.MQClientAPIImpl.deleteTopicInBroker(MQClientAPIImpl.java:1499)
           at 
org.apache.rocketmq.tools.admin.DefaultMQAdminExtImpl.deleteTopicInBroker(DefaultMQAdminExtImpl.java:465)
           at 
org.apache.rocketmq.tools.admin.DefaultMQAdminExt.deleteTopicInBroker(DefaultMQAdminExt.java:336)
           at 
org.apache.rocketmq.tools.command.topic.DeleteTopicSubCommand.deleteTopic(DeleteTopicSubCommand.java:44)
           at 
org.apache.rocketmq.tools.command.topic.DeleteTopicSubCommand.execute(DeleteTopicSubCommand.java:91)
           ... 2 more
   ```
   


-- 
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]

Reply via email to