From 869ab5e20e472812c1b82fa4b42e01498b7d439d Mon Sep 17 00:00:00 2001 From: Shuangxi Ding Date: Thu, 9 Feb 2023 18:55:54 +0800 Subject: [PATCH] [ISSUE #5975] Fix getUserTopicConfig Impl contains system topic (#5976) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: 徒钟 --- .../rocketmq/tools/admin/DefaultMQAdminExtImpl.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tools/src/main/java/org/apache/rocketmq/tools/admin/DefaultMQAdminExtImpl.java b/tools/src/main/java/org/apache/rocketmq/tools/admin/DefaultMQAdminExtImpl.java index fc3e079fe7..6744487f6d 100644 --- a/tools/src/main/java/org/apache/rocketmq/tools/admin/DefaultMQAdminExtImpl.java +++ b/tools/src/main/java/org/apache/rocketmq/tools/admin/DefaultMQAdminExtImpl.java @@ -53,6 +53,7 @@ import org.apache.rocketmq.common.ServiceState; import org.apache.rocketmq.common.ThreadFactoryImpl; import org.apache.rocketmq.common.TopicConfig; import org.apache.rocketmq.common.UtilAll; +import org.apache.rocketmq.common.constant.PermName; import org.apache.rocketmq.common.help.FAQUrl; import org.apache.rocketmq.common.message.MessageClientExt; import org.apache.rocketmq.common.message.MessageConst; @@ -61,6 +62,7 @@ import org.apache.rocketmq.common.message.MessageExt; import org.apache.rocketmq.common.message.MessageQueue; import org.apache.rocketmq.common.message.MessageRequestMode; import org.apache.rocketmq.common.namesrv.NamesrvUtil; +import org.apache.rocketmq.common.topic.TopicValidator; import org.apache.rocketmq.common.utils.NetworkUtil; import org.apache.rocketmq.logging.org.slf4j.Logger; import org.apache.rocketmq.logging.org.slf4j.LoggerFactory; @@ -1658,8 +1660,14 @@ public class DefaultMQAdminExtImpl implements MQAdminExt, MQAdminExtInner { TopicList topicList = this.mqClientInstance.getMQClientAPIImpl().getSystemTopicListFromBroker(brokerAddr, timeoutMillis); Iterator> iterator = topicConfigSerializeWrapper.getTopicConfigTable().entrySet().iterator(); while (iterator.hasNext()) { - String topic = iterator.next().getKey(); - if (topicList.getTopicList().contains(topic) || !specialTopic && (topic.startsWith(MixAll.RETRY_GROUP_TOPIC_PREFIX) || topic.startsWith(MixAll.DLQ_GROUP_TOPIC_PREFIX))) { + TopicConfig topicConfig = iterator.next().getValue(); + if (topicList.getTopicList().contains(topicConfig.getTopicName()) + || TopicValidator.isSystemTopic(topicConfig.getTopicName())) { + iterator.remove(); + } else if (!specialTopic && StringUtils.startsWithAny(topicConfig.getTopicName(), + MixAll.RETRY_GROUP_TOPIC_PREFIX, MixAll.DLQ_GROUP_TOPIC_PREFIX)) { + iterator.remove(); + } else if (!PermName.isValid(topicConfig.getPerm())) { iterator.remove(); } }