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

jackietien pushed a commit to branch ShowCluster
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit c807757ddf06ae33048d7263c7ff3ea0243e5edd
Author: JackieTien97 <[email protected]>
AuthorDate: Fri Sep 1 15:15:31 2023 +0800

    Fix possible NPE while executing show cluster or show cluster details
---
 .../config/metadata/ShowClusterDetailsTask.java    | 54 ++++++++++++++++++----
 .../execution/config/metadata/ShowClusterTask.java | 30 ++++++++++--
 2 files changed, 70 insertions(+), 14 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowClusterDetailsTask.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowClusterDetailsTask.java
index 65b7b3cf8a0..7c072de0742 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowClusterDetailsTask.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowClusterDetailsTask.java
@@ -62,8 +62,16 @@ public class ShowClusterDetailsTask implements IConfigTask {
     builder.getTimeColumnBuilder().writeLong(0L);
     builder.getColumnBuilder(0).writeInt(nodeId);
     builder.getColumnBuilder(1).writeBinary(new Binary(NODE_TYPE_CONFIG_NODE));
-    builder.getColumnBuilder(2).writeBinary(new Binary(nodeStatus));
-    builder.getColumnBuilder(3).writeBinary(new Binary(internalAddress));
+    if (nodeStatus == null) {
+      builder.getColumnBuilder(2).appendNull();
+    } else {
+      builder.getColumnBuilder(2).writeBinary(new Binary(nodeStatus));
+    }
+    if (internalAddress == null) {
+      builder.getColumnBuilder(3).appendNull();
+    } else {
+      builder.getColumnBuilder(3).writeBinary(new Binary(internalAddress));
+    }
     builder.getColumnBuilder(4).writeInt(internalPort);
     builder.getColumnBuilder(5).writeBinary(new 
Binary(Integer.toString(configConsensusPort)));
     builder.getColumnBuilder(6).writeBinary(new Binary(""));
@@ -71,8 +79,16 @@ public class ShowClusterDetailsTask implements IConfigTask {
     builder.getColumnBuilder(8).writeBinary(new Binary(""));
     builder.getColumnBuilder(9).writeBinary(new Binary(""));
     builder.getColumnBuilder(10).writeBinary(new Binary(""));
-    builder.getColumnBuilder(11).writeBinary(new 
Binary(versionInfo.getVersion()));
-    builder.getColumnBuilder(12).writeBinary(new 
Binary(versionInfo.getBuildInfo()));
+    if (versionInfo == null || versionInfo.getVersion() == null) {
+      builder.getColumnBuilder(11).appendNull();
+    } else {
+      builder.getColumnBuilder(11).writeBinary(new 
Binary(versionInfo.getVersion()));
+    }
+    if (versionInfo == null || versionInfo.getBuildInfo() == null) {
+      builder.getColumnBuilder(12).appendNull();
+    } else {
+      builder.getColumnBuilder(12).writeBinary(new 
Binary(versionInfo.getBuildInfo()));
+    }
     builder.declarePosition();
   }
 
@@ -92,17 +108,37 @@ public class ShowClusterDetailsTask implements IConfigTask 
{
     builder.getTimeColumnBuilder().writeLong(0L);
     builder.getColumnBuilder(0).writeInt(nodeId);
     builder.getColumnBuilder(1).writeBinary(new Binary(NODE_TYPE_DATA_NODE));
-    builder.getColumnBuilder(2).writeBinary(new Binary(nodeStatus));
-    builder.getColumnBuilder(3).writeBinary(new Binary(internalAddress));
+    if (nodeStatus == null) {
+      builder.getColumnBuilder(2).appendNull();
+    } else {
+      builder.getColumnBuilder(2).writeBinary(new Binary(nodeStatus));
+    }
+    if (internalAddress == null) {
+      builder.getColumnBuilder(3).appendNull();
+    } else {
+      builder.getColumnBuilder(3).writeBinary(new Binary(internalAddress));
+    }
     builder.getColumnBuilder(4).writeInt(internalPort);
     builder.getColumnBuilder(5).writeBinary(new Binary(""));
-    builder.getColumnBuilder(6).writeBinary(new Binary(rpcAddress));
+    if (rpcAddress == null) {
+      builder.getColumnBuilder(6).appendNull();
+    } else {
+      builder.getColumnBuilder(6).writeBinary(new Binary(rpcAddress));
+    }
     builder.getColumnBuilder(7).writeBinary(new 
Binary(Integer.toString(rpcPort)));
     builder.getColumnBuilder(8).writeBinary(new 
Binary(Integer.toString(dataConsensusPort)));
     builder.getColumnBuilder(9).writeBinary(new 
Binary(Integer.toString(schemaConsensusPort)));
     builder.getColumnBuilder(10).writeBinary(new 
Binary(Integer.toString(mppPort)));
-    builder.getColumnBuilder(11).writeBinary(new 
Binary(versionInfo.getVersion()));
-    builder.getColumnBuilder(12).writeBinary(new 
Binary(versionInfo.getBuildInfo()));
+    if (versionInfo == null || versionInfo.getVersion() == null) {
+      builder.getColumnBuilder(11).appendNull();
+    } else {
+      builder.getColumnBuilder(11).writeBinary(new 
Binary(versionInfo.getVersion()));
+    }
+    if (versionInfo == null || versionInfo.getBuildInfo() == null) {
+      builder.getColumnBuilder(12).appendNull();
+    } else {
+      builder.getColumnBuilder(12).writeBinary(new 
Binary(versionInfo.getBuildInfo()));
+    }
     builder.declarePosition();
   }
 
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowClusterTask.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowClusterTask.java
index 65ebb459a92..7e85fa62d64 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowClusterTask.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/execution/config/metadata/ShowClusterTask.java
@@ -67,12 +67,32 @@ public class ShowClusterTask implements IConfigTask {
       TNodeVersionInfo versionInfo) {
     builder.getTimeColumnBuilder().writeLong(0L);
     builder.getColumnBuilder(0).writeInt(nodeId);
-    builder.getColumnBuilder(1).writeBinary(new Binary(nodeType));
-    builder.getColumnBuilder(2).writeBinary(new Binary(nodeStatus));
-    builder.getColumnBuilder(3).writeBinary(new Binary(hostAddress));
+    if (nodeType == null) {
+      builder.getColumnBuilder(1).appendNull();
+    } else {
+      builder.getColumnBuilder(1).writeBinary(new Binary(nodeType));
+    }
+    if (nodeStatus == null) {
+      builder.getColumnBuilder(2).appendNull();
+    } else {
+      builder.getColumnBuilder(2).writeBinary(new Binary(nodeStatus));
+    }
+    if (hostAddress == null) {
+      builder.getColumnBuilder(3).appendNull();
+    } else {
+      builder.getColumnBuilder(3).writeBinary(new Binary(hostAddress));
+    }
     builder.getColumnBuilder(4).writeInt(port);
-    builder.getColumnBuilder(5).writeBinary(new 
Binary(versionInfo.getVersion()));
-    builder.getColumnBuilder(6).writeBinary(new 
Binary(versionInfo.getBuildInfo()));
+    if (versionInfo == null || versionInfo.getVersion() == null) {
+      builder.getColumnBuilder(5).appendNull();
+    } else {
+      builder.getColumnBuilder(5).writeBinary(new 
Binary(versionInfo.getVersion()));
+    }
+    if (versionInfo == null || versionInfo.getBuildInfo() == null) {
+      builder.getColumnBuilder(6).appendNull();
+    } else {
+      builder.getColumnBuilder(6).writeBinary(new 
Binary(versionInfo.getBuildInfo()));
+    }
     builder.declarePosition();
   }
 

Reply via email to