Skip to content

Commit e3cd680

Browse files
committed
[PINOT-2072]: Fix NPE in ShowClusterInfo command, due to unassigned segments
1 parent 8c10550 commit e3cd680

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

pinot-tools/src/main/java/com/linkedin/pinot/tools/admin/command/ShowClusterInfoCommand.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,14 @@ public boolean execute() throws Exception {
7272
clusterInfo.clusterName = _clusterName;
7373

7474
ZKHelixAdmin zkHelixAdmin = new ZKHelixAdmin(_zkAddress);
75-
List<String> instancesInCluster = zkHelixAdmin.getInstancesInCluster(_clusterName);
75+
if (!zkHelixAdmin.getClusters().contains(_clusterName)) {
76+
LOGGER.error("Cluster {} not found in {}.", _clusterName, _zkAddress);
77+
return false;
78+
}
7679

80+
List<String> instancesInCluster = zkHelixAdmin.getInstancesInCluster(_clusterName);
7781
List<String> tables = zkHelixAdmin.getResourcesInCluster(_clusterName);
82+
7883
ZkClient zkClient = new ZkClient(_zkAddress);
7984
zkClient.setZkSerializer(new ZNRecordStreamingSerializer());
8085
LOGGER.info("Connecting to Zookeeper at: {}", _zkAddress);
@@ -133,7 +138,16 @@ public boolean execute() throws Exception {
133138
SegmentInfo segmentInfo = new SegmentInfo();
134139
segmentInfo.name = segment;
135140
Map<String, String> serverStateMapFromIS = idealState.getInstanceStateMap(segment);
141+
if (serverStateMapFromIS == null) {
142+
LOGGER.info("Unassigned segment {} in ideal state", segment);
143+
serverStateMapFromIS = Collections.emptyMap();
144+
}
136145
Map<String, String> serverStateMapFromEV = externalView.getStateMap(segment);
146+
if (serverStateMapFromEV == null) {
147+
LOGGER.info("Unassigned segment {} in external view", segment);
148+
serverStateMapFromEV = Collections.emptyMap();
149+
}
150+
137151
for (String serverName : serverStateMapFromIS.keySet()) {
138152
segmentInfo.segmentStateMap.put(serverName, serverStateMapFromEV.get(serverName));
139153
}
@@ -145,7 +159,7 @@ public boolean execute() throws Exception {
145159
StringWriter sw = new StringWriter();
146160
yaml.dump(clusterInfo, sw);
147161
LOGGER.info(sw.toString());
148-
return false;
162+
return true;
149163
}
150164

151165
private String stripTypeFromName(String tableName) {

0 commit comments

Comments
 (0)