diff --git a/tools/src/main/java/org/apache/rocketmq/tools/command/CommandUtil.java b/tools/src/main/java/org/apache/rocketmq/tools/command/CommandUtil.java index 9933415ffab..231179a6ce9 100644 --- a/tools/src/main/java/org/apache/rocketmq/tools/command/CommandUtil.java +++ b/tools/src/main/java/org/apache/rocketmq/tools/command/CommandUtil.java @@ -176,7 +176,7 @@ public static String fetchBrokerNameByAddr(final MQAdminExt adminExt, final Stri while (it.hasNext()) { Map.Entry entry = it.next(); HashMap brokerAddrs = entry.getValue().getBrokerAddrs(); - if (brokerAddrs.containsValue(addr)) { + if (brokerAddrs != null && brokerAddrs.containsValue(addr)) { return entry.getKey(); } } diff --git a/tools/src/test/java/org/apache/rocketmq/tools/command/CommandUtilTest.java b/tools/src/test/java/org/apache/rocketmq/tools/command/CommandUtilTest.java index ea089350cf8..72b5e1b3605 100644 --- a/tools/src/test/java/org/apache/rocketmq/tools/command/CommandUtilTest.java +++ b/tools/src/test/java/org/apache/rocketmq/tools/command/CommandUtilTest.java @@ -40,6 +40,7 @@ import org.junit.Test; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.mock; @@ -101,6 +102,14 @@ public void testFetchMasterAddrByClusterName() throws InterruptedException, MQBr assertThat(result.size()).isEqualTo(0); } + @Test + public void testFetchBrokerNameByAddrThrowsCorrectExceptionWhenNothingFound() { + assertThatThrownBy(() -> CommandUtil.fetchBrokerNameByAddr(defaultMQAdminExtImpl, "127.0.0.2:10911")) + .isInstanceOf(Exception.class) + .hasMessageContaining("Make sure the specified clusterName exists or the name server connected to is correct."); + + } + @Test public void testFetchBrokerNameByClusterName() throws Exception { Set result = CommandUtil.fetchBrokerNameByClusterName(defaultMQAdminExtImpl, "default-cluster");