This is an automated email from the ASF dual-hosted git repository.
caogaofei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 6188f62c81 [IOTDB-4067] Handle null pointer in
getRegisteredNodeInfoList (#6930)
6188f62c81 is described below
commit 6188f62c813506f4215cfbee18878a8b33732246
Author: Itami Sho <[email protected]>
AuthorDate: Wed Aug 10 14:08:32 2022 +0800
[IOTDB-4067] Handle null pointer in getRegisteredNodeInfoList (#6930)
---
.../org/apache/iotdb/confignode/manager/NodeManager.java | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git
a/confignode/src/main/java/org/apache/iotdb/confignode/manager/NodeManager.java
b/confignode/src/main/java/org/apache/iotdb/confignode/manager/NodeManager.java
index 4b5fa0bb38..cce00c155a 100644
---
a/confignode/src/main/java/org/apache/iotdb/confignode/manager/NodeManager.java
+++
b/confignode/src/main/java/org/apache/iotdb/confignode/manager/NodeManager.java
@@ -37,6 +37,7 @@ import
org.apache.iotdb.confignode.consensus.response.DataNodeConfigurationResp;
import org.apache.iotdb.confignode.consensus.response.DataNodeRegisterResp;
import org.apache.iotdb.confignode.consensus.response.DataNodeToStatusResp;
import org.apache.iotdb.confignode.manager.load.LoadManager;
+import org.apache.iotdb.confignode.manager.load.heartbeat.INodeCache;
import org.apache.iotdb.confignode.persistence.NodeInfo;
import org.apache.iotdb.confignode.procedure.env.DataNodeRemoveHandler;
import org.apache.iotdb.confignode.rpc.thrift.TClearCacheReq;
@@ -223,6 +224,15 @@ public class NodeManager {
return dataNodeLocations;
}
+ private INodeCache getNodeCache(int nodeId) {
+ return getLoadManager().getNodeCacheMap().get(nodeId);
+ }
+
+ private String getNodeStatus(int nodeId) {
+ INodeCache nodeCache = getNodeCache(nodeId);
+ return nodeCache == null ? "Unknown" :
nodeCache.getNodeStatus().getStatus();
+ }
+
public List<TDataNodeInfo> getRegisteredDataNodeInfoList() {
List<TDataNodeInfo> dataNodeInfoList = new ArrayList<>();
List<TDataNodeConfiguration> registeredDataNodes =
this.getRegisteredDataNodes(-1);
@@ -232,8 +242,7 @@ public class NodeManager {
TDataNodeInfo info = new TDataNodeInfo();
int dataNodeId = dataNodeInfo.getLocation().getDataNodeId();
info.setDataNodeId(dataNodeId);
- info.setStatus(
-
getLoadManager().getNodeCacheMap().get(dataNodeId).getNodeStatus().getStatus());
+ info.setStatus(getNodeStatus(dataNodeId));
info.setRpcAddresss(dataNodeInfo.getLocation().getClientRpcEndPoint().getIp());
info.setRpcPort(dataNodeInfo.getLocation().getClientRpcEndPoint().getPort());
info.setDataRegionNum(0);
@@ -253,8 +262,7 @@ public class NodeManager {
TConfigNodeInfo info = new TConfigNodeInfo();
int configNodeId = configNodeLocation.getConfigNodeId();
info.setConfigNodeId(configNodeId);
- info.setStatus(
-
getLoadManager().getNodeCacheMap().get(configNodeId).getNodeStatus().getStatus());
+ info.setStatus(getNodeStatus(configNodeId));
info.setInternalAddress(configNodeLocation.getInternalEndPoint().getIp());
info.setInternalPort(configNodeLocation.getInternalEndPoint().getPort());
configNodeInfoList.add(info);