This is an automated email from the ASF dual-hosted git repository.
dongeforever pushed a commit to branch 5.0.0-alpha-static-topic
in repository https://gitbox.apache.org/repos/asf/rocketmq.git
The following commit(s) were added to refs/heads/5.0.0-alpha-static-topic by
this push:
new a9addc3 Add tests for command
a9addc3 is described below
commit a9addc3c293d878112ae3eb45fa00f75adf1f6c3
Author: dongeforever <[email protected]>
AuthorDate: Wed Dec 8 20:12:04 2021 +0800
Add tests for command
---
.../broker/processor/AdminBrokerProcessor.java | 2 +-
.../topic/TopicQueueMappingCleanService.java | 3 +-
.../rocketmq/client/impl/MQClientAPIImpl.java | 2 +-
.../header/GetTopicConfigRequestHeader.java | 12 +---
.../rocketmq/test/util/MQAdminTestUtils.java | 74 ++++++++++++++++++++++
.../rocketmq/test/statictopic/StaticTopicIT.java | 67 +++++++++++++++++---
.../tools/admin/DefaultMQAdminExtImpl.java | 1 +
.../topic/RemappingStaticTopicSubCommand.java | 8 ++-
.../command/topic/UpdateStaticTopicSubCommand.java | 3 +-
9 files changed, 147 insertions(+), 25 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 fb4a711..e4f3697 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
@@ -1996,7 +1996,7 @@ public class AdminBrokerProcessor extends
AsyncNettyRequestProcessor implements
return response;
}
TopicQueueMappingDetail topicQueueMappingDetail = null;
- if (Boolean.TRUE.equals(requestHeader.getWithMapping())) {
+ if (Boolean.TRUE.equals(requestHeader.getLo())) {
topicQueueMappingDetail =
this.brokerController.getTopicQueueMappingManager().getTopicQueueMapping(requestHeader.getTopic());
}
String content = JSONObject.toJSONString(new
TopicConfigAndQueueMapping(topicConfig, topicQueueMappingDetail));
diff --git
a/broker/src/main/java/org/apache/rocketmq/broker/topic/TopicQueueMappingCleanService.java
b/broker/src/main/java/org/apache/rocketmq/broker/topic/TopicQueueMappingCleanService.java
index 05c5003..8374903 100644
---
a/broker/src/main/java/org/apache/rocketmq/broker/topic/TopicQueueMappingCleanService.java
+++
b/broker/src/main/java/org/apache/rocketmq/broker/topic/TopicQueueMappingCleanService.java
@@ -134,6 +134,7 @@ public class TopicQueueMappingCleanService extends
ServiceThread {
GetTopicStatsInfoRequestHeader header = new
GetTopicStatsInfoRequestHeader();
header.setTopic(topic);
header.setBname(broker);
+ header.setLo(false);
try {
RpcRequest rpcRequest = new
RpcRequest(RequestCode.GET_TOPIC_STATS_INFO, header, null);
RpcResponse rpcResponse =
rpcClient.invoke(rpcRequest, brokerConfig.getForwardTimeout()).get();
@@ -261,7 +262,7 @@ public class TopicQueueMappingCleanService extends
ServiceThread {
GetTopicConfigRequestHeader header = new
GetTopicConfigRequestHeader();
header.setTopic(topic);
header.setBname(broker);
- header.setWithMapping(true);
+ header.setLo(true);
try {
RpcRequest rpcRequest = new
RpcRequest(RequestCode.GET_TOPIC_CONFIG, header, null);
RpcResponse rpcResponse =
rpcClient.invoke(rpcRequest, brokerConfig.getForwardTimeout()).get();
diff --git
a/client/src/main/java/org/apache/rocketmq/client/impl/MQClientAPIImpl.java
b/client/src/main/java/org/apache/rocketmq/client/impl/MQClientAPIImpl.java
index 7538866..1de4fdb 100644
--- a/client/src/main/java/org/apache/rocketmq/client/impl/MQClientAPIImpl.java
+++ b/client/src/main/java/org/apache/rocketmq/client/impl/MQClientAPIImpl.java
@@ -2581,7 +2581,7 @@ public class MQClientAPIImpl {
RemotingTimeoutException, RemotingSendRequestException,
RemotingConnectException, MQBrokerException {
GetTopicConfigRequestHeader header = new GetTopicConfigRequestHeader();
header.setTopic(topic);
- header.setWithMapping(true);
+ header.setLo(true);
RemotingCommand request =
RemotingCommand.createRequestCommand(RequestCode.GET_TOPIC_CONFIG, header);
RemotingCommand response = this.remotingClient
.invokeSync(MixAll.brokerVIPChannel(this.clientConfig.isVipChannelEnabled(),
brokerAddr), request, timeoutMillis);
diff --git
a/common/src/main/java/org/apache/rocketmq/common/protocol/header/GetTopicConfigRequestHeader.java
b/common/src/main/java/org/apache/rocketmq/common/protocol/header/GetTopicConfigRequestHeader.java
index b282efa..b701df6 100644
---
a/common/src/main/java/org/apache/rocketmq/common/protocol/header/GetTopicConfigRequestHeader.java
+++
b/common/src/main/java/org/apache/rocketmq/common/protocol/header/GetTopicConfigRequestHeader.java
@@ -18,11 +18,12 @@
package org.apache.rocketmq.common.protocol.header;
import org.apache.rocketmq.common.rpc.RpcRequestHeader;
+import org.apache.rocketmq.common.rpc.TopicRequestHeader;
import org.apache.rocketmq.remoting.CommandCustomHeader;
import org.apache.rocketmq.remoting.annotation.CFNotNull;
import org.apache.rocketmq.remoting.exception.RemotingCommandException;
-public class GetTopicConfigRequestHeader extends RpcRequestHeader {
+public class GetTopicConfigRequestHeader extends TopicRequestHeader {
@Override
public void checkFields() throws RemotingCommandException {
}
@@ -30,7 +31,6 @@ public class GetTopicConfigRequestHeader extends
RpcRequestHeader {
@CFNotNull
private String topic;
- private Boolean withMapping;
/**
* @return the topic
@@ -45,12 +45,4 @@ public class GetTopicConfigRequestHeader extends
RpcRequestHeader {
public void setTopic(String topic) {
this.topic = topic;
}
-
- public Boolean getWithMapping() {
- return withMapping;
- }
-
- public void setWithMapping(Boolean withMapping) {
- this.withMapping = withMapping;
- }
}
\ No newline at end of file
diff --git
a/test/src/main/java/org/apache/rocketmq/test/util/MQAdminTestUtils.java
b/test/src/main/java/org/apache/rocketmq/test/util/MQAdminTestUtils.java
index 7eaf6a0..6784b76 100644
--- a/test/src/main/java/org/apache/rocketmq/test/util/MQAdminTestUtils.java
+++ b/test/src/main/java/org/apache/rocketmq/test/util/MQAdminTestUtils.java
@@ -22,9 +22,16 @@ import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.ForkJoinPool;
+import java.util.stream.Collectors;
+
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.Options;
+import org.apache.commons.cli.PosixParser;
import org.apache.log4j.Logger;
+import org.apache.rocketmq.acl.common.AclUtils;
import org.apache.rocketmq.client.exception.MQBrokerException;
import org.apache.rocketmq.client.exception.MQClientException;
+import org.apache.rocketmq.common.MixAll;
import org.apache.rocketmq.common.admin.TopicStatsTable;
import org.apache.rocketmq.common.protocol.body.ClusterInfo;
import org.apache.rocketmq.common.protocol.route.BrokerData;
@@ -34,9 +41,16 @@ import
org.apache.rocketmq.common.statictopic.TopicQueueMappingUtils;
import org.apache.rocketmq.common.statictopic.TopicRemappingDetailWrapper;
import org.apache.rocketmq.common.subscription.SubscriptionGroupConfig;
import org.apache.rocketmq.remoting.exception.RemotingException;
+import org.apache.rocketmq.srvutil.ServerUtil;
+import org.apache.rocketmq.test.client.rmq.RMQNormalConsumer;
+import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
+import org.apache.rocketmq.test.listener.rmq.concurrent.RMQNormalListener;
import org.apache.rocketmq.tools.admin.DefaultMQAdminExt;
import org.apache.rocketmq.tools.admin.MQAdminUtils;
import org.apache.rocketmq.tools.command.CommandUtil;
+import org.apache.rocketmq.tools.command.MQAdminStartup;
+import org.apache.rocketmq.tools.command.topic.RemappingStaticTopicSubCommand;
+import org.apache.rocketmq.tools.command.topic.UpdateStaticTopicSubCommand;
public class MQAdminTestUtils {
private static Logger log = Logger.getLogger(MQAdminTestUtils.class);
@@ -231,5 +245,65 @@ public class MQAdminTestUtils {
}
+ public static void createStaticTopicWithCommand(String topic, int
queueNum, Set<String> brokers, String cluster, String nameservers) throws
Exception {
+ UpdateStaticTopicSubCommand cmd = new UpdateStaticTopicSubCommand();
+ Options options = ServerUtil.buildCommandlineOptions(new Options());
+ String[] args;
+ if (cluster != null) {
+ args = new String[] {
+ "-c", cluster,
+ "-t", topic,
+ "-qn", String.valueOf(queueNum),
+ "-n", nameservers
+ };
+ } else {
+ String brokerStr = String.join(",", brokers);
+ args = new String[] {
+ "-b", brokerStr,
+ "-t", topic,
+ "-qn", String.valueOf(queueNum),
+ "-n", nameservers
+ };
+ }
+ final CommandLine commandLine = ServerUtil.parseCmdLine("mqadmin " +
cmd.commandName(), args, cmd.buildCommandlineOptions(options), new
PosixParser());
+ if (null == commandLine) {
+ return;
+ }
+ if (commandLine.hasOption('n')) {
+ String namesrvAddr = commandLine.getOptionValue('n');
+ System.setProperty(MixAll.NAMESRV_ADDR_PROPERTY, namesrvAddr);
+ }
+ cmd.execute(commandLine, options, null);
+ }
+
+
+ public static void remappingStaticTopicWithCommand(String topic,
Set<String> brokers, String cluster, String nameservers) throws Exception {
+ RemappingStaticTopicSubCommand cmd = new
RemappingStaticTopicSubCommand();
+ Options options = ServerUtil.buildCommandlineOptions(new Options());
+ String[] args;
+ if (cluster != null) {
+ args = new String[] {
+ "-c", cluster,
+ "-t", topic,
+ "-n", nameservers
+ };
+ } else {
+ String brokerStr = String.join(",", brokers);
+ args = new String[] {
+ "-b", brokerStr,
+ "-t", topic,
+ "-n", nameservers
+ };
+ }
+ final CommandLine commandLine = ServerUtil.parseCmdLine("mqadmin " +
cmd.commandName(), args, cmd.buildCommandlineOptions(options), new
PosixParser());
+ if (null == commandLine) {
+ return;
+ }
+ if (commandLine.hasOption('n')) {
+ String namesrvAddr = commandLine.getOptionValue('n');
+ System.setProperty(MixAll.NAMESRV_ADDR_PROPERTY, namesrvAddr);
+ }
+ cmd.execute(commandLine, options, null);
+ }
}
diff --git
a/test/src/test/java/org/apache/rocketmq/test/statictopic/StaticTopicIT.java
b/test/src/test/java/org/apache/rocketmq/test/statictopic/StaticTopicIT.java
index e89dc3a..38811f6 100644
--- a/test/src/test/java/org/apache/rocketmq/test/statictopic/StaticTopicIT.java
+++ b/test/src/test/java/org/apache/rocketmq/test/statictopic/StaticTopicIT.java
@@ -2,7 +2,11 @@ package org.apache.rocketmq.test.statictopic;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.Options;
+import org.apache.commons.cli.PosixParser;
import org.apache.log4j.Logger;
+import org.apache.rocketmq.acl.common.AclUtils;
import org.apache.rocketmq.broker.BrokerController;
import org.apache.rocketmq.common.MixAll;
import org.apache.rocketmq.common.admin.ConsumeStats;
@@ -14,6 +18,7 @@ import
org.apache.rocketmq.common.statictopic.LogicQueueMappingItem;
import org.apache.rocketmq.common.statictopic.TopicConfigAndQueueMapping;
import org.apache.rocketmq.common.statictopic.TopicQueueMappingOne;
import org.apache.rocketmq.common.statictopic.TopicQueueMappingUtils;
+import org.apache.rocketmq.srvutil.ServerUtil;
import org.apache.rocketmq.test.base.BaseConf;
import org.apache.rocketmq.test.client.rmq.RMQNormalConsumer;
import org.apache.rocketmq.test.client.rmq.RMQNormalProducer;
@@ -23,10 +28,12 @@ import org.apache.rocketmq.test.util.MQRandomUtils;
import org.apache.rocketmq.test.util.VerifyUtils;
import org.apache.rocketmq.tools.admin.DefaultMQAdminExt;
import org.apache.rocketmq.tools.admin.MQAdminUtils;
+import org.apache.rocketmq.tools.command.MQAdminStartup;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.FixMethodOrder;
+import org.junit.Ignore;
import org.junit.Test;
import java.util.ArrayList;
@@ -56,6 +63,51 @@ public class StaticTopicIT extends BaseConf {
defaultMQAdminExt.start();
}
+ @Test
+ public void testCommandsWithCluster() throws Exception {
+ //This case is used to mock the env to test the command manually
+ String topic = "static" + MQRandomUtils.getRandomTopic();
+ RMQNormalProducer producer = getProducer(nsAddr, topic);
+ RMQNormalConsumer consumer = getConsumer(nsAddr, topic, "*", new
RMQNormalListener());
+ int queueNum = 10;
+ int msgEachQueue = 100;
+
+ {
+ MQAdminTestUtils.createStaticTopicWithCommand(topic, queueNum,
null, clusterName, nsAddr);
+ sendMessagesAndCheck(producer, getBrokers(), topic, queueNum,
msgEachQueue, 0);
+ //consume and check
+ consumeMessagesAndCheck(producer, consumer, topic, queueNum,
msgEachQueue, 0, 1);
+ }
+ {
+ MQAdminTestUtils.remappingStaticTopicWithCommand(topic, null,
clusterName, nsAddr);
+ Thread.sleep(500);
+ sendMessagesAndCheck(producer, getBrokers(), topic, queueNum,
msgEachQueue, 100);
+ }
+ }
+
+ @Test
+ public void testCommandsWithBrokers() throws Exception {
+ //This case is used to mock the env to test the command manually
+ String topic = "static" + MQRandomUtils.getRandomTopic();
+ RMQNormalProducer producer = getProducer(nsAddr, topic);
+ RMQNormalConsumer consumer = getConsumer(nsAddr, topic, "*", new
RMQNormalListener());
+ int queueNum = 10;
+ int msgEachQueue = 100;
+ {
+ Set<String> brokers = ImmutableSet.of(broker1Name);
+ MQAdminTestUtils.createStaticTopicWithCommand(topic, queueNum,
brokers, null, nsAddr);
+ sendMessagesAndCheck(producer, brokers, topic, queueNum,
msgEachQueue, 0);
+ //consume and check
+ consumeMessagesAndCheck(producer, consumer, topic, queueNum,
msgEachQueue, 0, 1);
+ }
+ {
+ Set<String> brokers = ImmutableSet.of(broker2Name);
+ MQAdminTestUtils.remappingStaticTopicWithCommand(topic, brokers,
null, nsAddr);
+ Thread.sleep(500);
+ sendMessagesAndCheck(producer, brokers, topic, queueNum,
msgEachQueue, TopicQueueMappingUtils.DEFAULT_BLOCK_SEQ_SIZE);
+ consumeMessagesAndCheck(producer, consumer, topic, queueNum,
msgEachQueue, 0, 2);
+ }
+ }
@Test
public void testNoTargetBrokers() throws Exception {
@@ -89,7 +141,7 @@ public class StaticTopicIT extends BaseConf {
}
- private void sendMessagesAndCheck(RMQNormalProducer producer, Set<String>
targetBrokers, String topic, int queueNum, int msgEachQueue, int gen) throws
Exception {
+ private void sendMessagesAndCheck(RMQNormalProducer producer, Set<String>
targetBrokers, String topic, int queueNum, int msgEachQueue, long baseOffset)
throws Exception {
ClientMetadata clientMetadata =
MQAdminUtils.getBrokerAndTopicMetadata(topic, defaultMQAdminExt);
List<MessageQueue> messageQueueList = producer.getMessageQueue();
Assert.assertEquals(queueNum, messageQueueList.size());
@@ -109,12 +161,12 @@ public class StaticTopicIT extends BaseConf {
Thread.sleep(100);
for(MessageQueue messageQueue: messageQueueList) {
Assert.assertEquals(0, defaultMQAdminExt.minOffset(messageQueue));
- Assert.assertEquals(msgEachQueue + gen *
TopicQueueMappingUtils.DEFAULT_BLOCK_SEQ_SIZE,
defaultMQAdminExt.maxOffset(messageQueue));
+ Assert.assertEquals(msgEachQueue + baseOffset,
defaultMQAdminExt.maxOffset(messageQueue));
}
TopicStatsTable topicStatsTable =
defaultMQAdminExt.examineTopicStats(topic);
for(MessageQueue messageQueue: messageQueueList) {
Assert.assertEquals(0,
topicStatsTable.getOffsetTable().get(messageQueue).getMinOffset());
- Assert.assertEquals(msgEachQueue + gen *
TopicQueueMappingUtils.DEFAULT_BLOCK_SEQ_SIZE,
topicStatsTable.getOffsetTable().get(messageQueue).getMaxOffset());
+ Assert.assertEquals(msgEachQueue + baseOffset,
topicStatsTable.getOffsetTable().get(messageQueue).getMaxOffset());
}
}
@@ -214,7 +266,6 @@ public class StaticTopicIT extends BaseConf {
sendMessagesAndCheck(producer, targetBrokers, topic, queueNum,
msgEachQueue, 0);
consumeMessagesAndCheck(producer, consumer, topic, queueNum,
msgEachQueue, 0, 1);
}
-
System.out.println("=============================================================");
//remapping the static topic
{
Set<String> targetBrokers = ImmutableSet.of(broker2Name);
@@ -228,7 +279,7 @@ public class StaticTopicIT extends BaseConf {
Assert.assertEquals(TopicQueueMappingUtils.DEFAULT_BLOCK_SEQ_SIZE,
mappingOne.getItems().get(mappingOne.getItems().size() - 1).getLogicOffset());
}
Thread.sleep(500);
- sendMessagesAndCheck(producer, targetBrokers, topic, queueNum,
msgEachQueue, 1);
+ sendMessagesAndCheck(producer, targetBrokers, topic, queueNum,
msgEachQueue, TopicQueueMappingUtils.DEFAULT_BLOCK_SEQ_SIZE);
consumeMessagesAndCheck(producer, consumer, topic, queueNum,
msgEachQueue, 0, 2);
}
}
@@ -261,7 +312,7 @@ public class StaticTopicIT extends BaseConf {
MQAdminTestUtils.remappingStaticTopic(topic, targetBrokers,
defaultMQAdminExt);
//make the metadata
Thread.sleep(500);
- sendMessagesAndCheck(producer, targetBrokers, topic, queueNum,
msgEachQueue, i + 1);
+ sendMessagesAndCheck(producer, targetBrokers, topic, queueNum,
msgEachQueue, (i + 1) * TopicQueueMappingUtils.DEFAULT_BLOCK_SEQ_SIZE);
}
consumer = getConsumer(nsAddr, group, topic, "*", new
RMQNormalListener());
consumeMessagesAndCheck(producer, consumer, topic, queueNum,
msgEachQueue, 1, brokers.size());
@@ -289,7 +340,7 @@ public class StaticTopicIT extends BaseConf {
MQAdminTestUtils.remappingStaticTopic(topic, targetBrokers,
defaultMQAdminExt);
//leave the time to refresh the metadata
Thread.sleep(500);
- sendMessagesAndCheck(producer, targetBrokers, topic, queueNum,
msgEachQueue, 1);
+ sendMessagesAndCheck(producer, targetBrokers, topic, queueNum,
msgEachQueue, 1 * TopicQueueMappingUtils.DEFAULT_BLOCK_SEQ_SIZE);
}
//remapping to broker3Name
@@ -298,7 +349,7 @@ public class StaticTopicIT extends BaseConf {
MQAdminTestUtils.remappingStaticTopic(topic, targetBrokers,
defaultMQAdminExt);
//leave the time to refresh the metadata
Thread.sleep(500);
- sendMessagesAndCheck(producer, targetBrokers, topic, queueNum,
msgEachQueue, 2);
+ sendMessagesAndCheck(producer, targetBrokers, topic, queueNum,
msgEachQueue, 2 * TopicQueueMappingUtils.DEFAULT_BLOCK_SEQ_SIZE);
}
// 1 -> 2 -> 3, currently 1 should not has any mappings
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 7b0450c..d1f0fcd 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
@@ -268,6 +268,7 @@ public class DefaultMQAdminExtImpl implements MQAdminExt,
MQAdminExtInner {
}
}
+
if (topicStatsTable.getOffsetTable().isEmpty()) {
throw new MQClientException("Not found the topic stats info",
null);
}
diff --git
a/tools/src/main/java/org/apache/rocketmq/tools/command/topic/RemappingStaticTopicSubCommand.java
b/tools/src/main/java/org/apache/rocketmq/tools/command/topic/RemappingStaticTopicSubCommand.java
index 9a6f15a..a3b757a 100644
---
a/tools/src/main/java/org/apache/rocketmq/tools/command/topic/RemappingStaticTopicSubCommand.java
+++
b/tools/src/main/java/org/apache/rocketmq/tools/command/topic/RemappingStaticTopicSubCommand.java
@@ -20,13 +20,12 @@ import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.OptionGroup;
import org.apache.commons.cli.Options;
-import org.apache.rocketmq.client.MQAdmin;
import org.apache.rocketmq.common.MixAll;
+import org.apache.rocketmq.common.protocol.body.ClusterInfo;
+import org.apache.rocketmq.common.rpc.ClientMetadata;
import org.apache.rocketmq.common.statictopic.TopicConfigAndQueueMapping;
import org.apache.rocketmq.common.statictopic.TopicQueueMappingOne;
import org.apache.rocketmq.common.statictopic.TopicQueueMappingUtils;
-import org.apache.rocketmq.common.protocol.body.ClusterInfo;
-import org.apache.rocketmq.common.rpc.ClientMetadata;
import org.apache.rocketmq.common.statictopic.TopicRemappingDetailWrapper;
import org.apache.rocketmq.remoting.RPCHook;
import org.apache.rocketmq.srvutil.ServerUtil;
@@ -91,6 +90,7 @@ public class RemappingStaticTopicSubCommand implements
SubCommand {
defaultMQAdminExt.setInstanceName(Long.toString(System.currentTimeMillis()));
try {
+ defaultMQAdminExt.start();
String topic = commandLine.getOptionValue('t').trim();
String mapFileName = commandLine.getOptionValue('f').trim();
@@ -137,6 +137,7 @@ public class RemappingStaticTopicSubCommand implements
SubCommand {
Set<String> targetBrokers = new HashSet<>();
try {
+ defaultMQAdminExt.start();
if ((!commandLine.hasOption("b") && !commandLine.hasOption('c'))) {
ServerUtil.printCommandLineHelp("mqadmin " +
this.commandName(), options);
return;
@@ -148,6 +149,7 @@ public class RemappingStaticTopicSubCommand implements
SubCommand {
|| clusterInfo.getClusterAddrTable().isEmpty()) {
throw new RuntimeException("The Cluster info is empty");
}
+ clientMetadata.refreshClusterInfo(clusterInfo);
{
if (commandLine.hasOption("b")) {
String brokerStrs = commandLine.getOptionValue("b").trim();
diff --git
a/tools/src/main/java/org/apache/rocketmq/tools/command/topic/UpdateStaticTopicSubCommand.java
b/tools/src/main/java/org/apache/rocketmq/tools/command/topic/UpdateStaticTopicSubCommand.java
index 958922e..410381e 100644
---
a/tools/src/main/java/org/apache/rocketmq/tools/command/topic/UpdateStaticTopicSubCommand.java
+++
b/tools/src/main/java/org/apache/rocketmq/tools/command/topic/UpdateStaticTopicSubCommand.java
@@ -92,9 +92,9 @@ public class UpdateStaticTopicSubCommand implements
SubCommand {
RPCHook rpcHook) throws SubCommandException {
DefaultMQAdminExt defaultMQAdminExt = new DefaultMQAdminExt(rpcHook);
defaultMQAdminExt.setInstanceName(Long.toString(System.currentTimeMillis()));
- ClientMetadata clientMetadata = new ClientMetadata();
try {
+ defaultMQAdminExt.start();
String topic = commandLine.getOptionValue('t').trim();
String mapFileName = commandLine.getOptionValue('f').trim();
String mapData = MixAll.file2String(mapFileName);
@@ -139,6 +139,7 @@ public class UpdateStaticTopicSubCommand implements
SubCommand {
Set<String> targetBrokers = new HashSet<>();
try {
+ defaultMQAdminExt.start();
if ((!commandLine.hasOption("b") && !commandLine.hasOption('c'))
|| !commandLine.hasOption("qn")) {
ServerUtil.printCommandLineHelp("mqadmin " +
this.commandName(), options);