This is an automated email from the ASF dual-hosted git repository.

lizhimins pushed a commit to branch rocketmq-studio
in repository https://gitbox.apache.org/repos/asf/rocketmq-dashboard.git


The following commit(s) were added to refs/heads/rocketmq-studio by this push:
     new d2d9eff6 fix(rocketmq): tolerate missing broker tables in dashboard 
overview (#1072)
d2d9eff6 is described below

commit d2d9eff6de93719ab674f44797283e388ef988d6
Author: yyqdbngt <[email protected]>
AuthorDate: Thu Aug 6 16:17:59 2026 +0800

    fix(rocketmq): tolerate missing broker tables in dashboard overview (#1072)
    
    Co-authored-by: yyqdbngt <[email protected]>
---
 .../studio/rocketmq/RocketMQDashboardProvider.java |  4 ++++
 .../rocketmq/RocketMQDashboardProviderTest.java    | 24 ++++++++++++++++++++++
 2 files changed, 28 insertions(+)

diff --git 
a/server/src/main/java/org/apache/rocketmq/studio/rocketmq/RocketMQDashboardProvider.java
 
b/server/src/main/java/org/apache/rocketmq/studio/rocketmq/RocketMQDashboardProvider.java
index 61bd5dec..0b7214de 100644
--- 
a/server/src/main/java/org/apache/rocketmq/studio/rocketmq/RocketMQDashboardProvider.java
+++ 
b/server/src/main/java/org/apache/rocketmq/studio/rocketmq/RocketMQDashboardProvider.java
@@ -96,6 +96,7 @@ public class RocketMQDashboardProvider implements 
DashboardProvider {
 
             // Collect all unique broker addresses (master only, brokerId=0)
             Set<String> masterAddrs = new HashSet<>();
+
             for (BrokerData brokerData : brokerAddrTable.values()) {
                 if (brokerData == null || brokerData.getBrokerAddrs() == null) 
{
                     continue;
@@ -105,6 +106,9 @@ public class RocketMQDashboardProvider implements 
DashboardProvider {
                     masterAddrs.add(masterAddr);
                 }
             }
+            if (masterAddrs.isEmpty()) {
+                log.warn("No master broker addresses discovered for dashboard 
overview");
+            }
 
             // Count topics
             try {
diff --git 
a/server/src/test/java/org/apache/rocketmq/studio/rocketmq/RocketMQDashboardProviderTest.java
 
b/server/src/test/java/org/apache/rocketmq/studio/rocketmq/RocketMQDashboardProviderTest.java
index d7707759..7a468b84 100644
--- 
a/server/src/test/java/org/apache/rocketmq/studio/rocketmq/RocketMQDashboardProviderTest.java
+++ 
b/server/src/test/java/org/apache/rocketmq/studio/rocketmq/RocketMQDashboardProviderTest.java
@@ -17,6 +17,8 @@
 package org.apache.rocketmq.studio.rocketmq;
 
 import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 
 import org.apache.rocketmq.remoting.protocol.body.ClusterInfo;
@@ -89,6 +91,28 @@ class RocketMQDashboardProviderTest {
         assertThat(dashboard.getClusters().get(0).getBrokers()).isZero();
     }
 
+    @Test
+    void dashboardShouldNotFailWhenBrokerAddrTableIsNull() throws Exception {
+        DefaultMQAdminExt adminExt = mock(DefaultMQAdminExt.class);
+        ClusterInfo info = new ClusterInfo();
+        HashMap<String, Set<String>> clusterAddrTable = new HashMap<>();
+        clusterAddrTable.put("cluster-1", new HashSet<>(List.of("broker-a")));
+        info.setClusterAddrTable(clusterAddrTable);
+        // brokerAddrTable intentionally left null
+        when(adminExt.examineBrokerClusterInfo()).thenReturn(info);
+        when(adminExt.fetchAllTopicList()).thenReturn(topicList());
+
+        RocketMQDashboardProvider provider = new 
RocketMQDashboardProvider(adminExt);
+
+        DashboardDataVO dashboard = provider.getDashboardData();
+
+        // The cluster is still surfaced (name, status) but no broker 
statistics exist.
+        assertThat(dashboard.getClusters()).hasSize(1);
+        assertThat(dashboard.getClusters().get(0).getBrokers()).isZero();
+        assertThat(dashboard.getStats().getTotalClusters()).isEqualTo(1);
+        assertThat(dashboard.getStats().getTotalBrokers()).isZero();
+    }
+
     private ClusterInfo clusterInfo() {
         ClusterInfo info = new ClusterInfo();
         HashMap<Long, String> addrs = new HashMap<>();

Reply via email to