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

tanxinyu pushed a commit to branch rel/1.2
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/rel/1.2 by this push:
     new 4d1a7833beb [IOTDB-6185] Fix show cluster null status bug (#11273) 
(#11281)
4d1a7833beb is described below

commit 4d1a7833bebfcf0e89667668c87f821658243879
Author: Yongzao <[email protected]>
AuthorDate: Wed Oct 11 18:42:24 2023 +0800

    [IOTDB-6185] Fix show cluster null status bug (#11273) (#11281)
---
 .../org/apache/iotdb/confignode/manager/ConfigManager.java   | 12 +++++++++++-
 .../apache/iotdb/confignode/manager/node/NodeManager.java    |  9 +++++++++
 .../procedure/impl/node/AddConfigNodeProcedure.java          |  9 +++++++++
 3 files changed, 29 insertions(+), 1 deletion(-)

diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
index ea151cc6b12..7494a9a5edc 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
@@ -439,8 +439,18 @@ public class ConfigManager implements IManager {
               .map(TDataNodeConfiguration::getLocation)
               
.sorted(Comparator.comparingInt(TDataNodeLocation::getDataNodeId))
               .collect(Collectors.toList());
-      Map<Integer, String> nodeStatus = 
getLoadManager().getNodeStatusWithReason();
       Map<Integer, TNodeVersionInfo> nodeVersionInfo = 
getNodeManager().getNodeVersionInfo();
+      Map<Integer, String> nodeStatus = 
getLoadManager().getNodeStatusWithReason();
+      for (TConfigNodeLocation configNodeLocation : configNodeLocations) {
+        if (!nodeStatus.containsKey(configNodeLocation.getConfigNodeId())) {
+          nodeStatus.put(configNodeLocation.getConfigNodeId(), 
NodeStatus.Unknown.toString());
+        }
+      }
+      for (TDataNodeLocation dataNodeLocation : dataNodeInfoLocations) {
+        if (!nodeStatus.containsKey(dataNodeLocation.getDataNodeId())) {
+          nodeStatus.put(dataNodeLocation.getDataNodeId(), 
NodeStatus.Unknown.toString());
+        }
+      }
       return new TShowClusterResp(
           status, configNodeLocations, dataNodeInfoLocations, nodeStatus, 
nodeVersionInfo);
     } else {
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/node/NodeManager.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/node/NodeManager.java
index bd718527c7b..ba0875dc768 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/node/NodeManager.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/node/NodeManager.java
@@ -26,6 +26,7 @@ import org.apache.iotdb.common.rpc.thrift.TFlushReq;
 import org.apache.iotdb.common.rpc.thrift.TRegionReplicaSet;
 import org.apache.iotdb.common.rpc.thrift.TSStatus;
 import org.apache.iotdb.commons.cluster.NodeStatus;
+import org.apache.iotdb.commons.cluster.NodeType;
 import org.apache.iotdb.commons.cluster.RegionRoleType;
 import org.apache.iotdb.commons.conf.CommonConfig;
 import org.apache.iotdb.commons.conf.CommonDescriptor;
@@ -55,6 +56,7 @@ import org.apache.iotdb.confignode.manager.UDFManager;
 import org.apache.iotdb.confignode.manager.consensus.ConsensusManager;
 import org.apache.iotdb.confignode.manager.load.LoadManager;
 import 
org.apache.iotdb.confignode.manager.load.cache.node.ConfigNodeHeartbeatCache;
+import org.apache.iotdb.confignode.manager.load.cache.node.NodeHeartbeatSample;
 import org.apache.iotdb.confignode.manager.partition.PartitionManager;
 import org.apache.iotdb.confignode.manager.partition.PartitionMetrics;
 import org.apache.iotdb.confignode.manager.pipe.PipeManager;
@@ -262,6 +264,13 @@ public class NodeManager {
       LOGGER.warn(CONSENSUS_WRITE_ERROR, e);
     }
 
+    // Init HeartbeatCache
+    getLoadManager()
+        .forceUpdateNodeCache(
+            NodeType.DataNode,
+            dataNodeId,
+            NodeHeartbeatSample.generateDefaultSample(NodeStatus.Unknown));
+
     // update datanode's versionInfo
     UpdateVersionInfoPlan updateVersionInfoPlan =
         new UpdateVersionInfoPlan(req.getVersionInfo(), dataNodeId);
diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/node/AddConfigNodeProcedure.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/node/AddConfigNodeProcedure.java
index f14cc0870c1..01c7d82ec62 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/node/AddConfigNodeProcedure.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/node/AddConfigNodeProcedure.java
@@ -20,8 +20,11 @@
 package org.apache.iotdb.confignode.procedure.impl.node;
 
 import org.apache.iotdb.common.rpc.thrift.TConfigNodeLocation;
+import org.apache.iotdb.commons.cluster.NodeStatus;
+import org.apache.iotdb.commons.cluster.NodeType;
 import org.apache.iotdb.commons.exception.runtime.ThriftSerDeException;
 import org.apache.iotdb.commons.utils.ThriftConfigNodeSerDeUtils;
+import org.apache.iotdb.confignode.manager.load.cache.node.NodeHeartbeatSample;
 import org.apache.iotdb.confignode.procedure.env.ConfigNodeProcedureEnv;
 import org.apache.iotdb.confignode.procedure.exception.ProcedureException;
 import org.apache.iotdb.confignode.procedure.state.AddConfigNodeState;
@@ -83,6 +86,12 @@ public class AddConfigNodeProcedure extends 
AbstractNodeProcedure<AddConfigNodeS
           env.notifyRegisterSuccess(tConfigNodeLocation);
           env.applyConfigNode(tConfigNodeLocation, versionInfo);
           env.broadCastTheLatestConfigNodeGroup();
+          env.getConfigManager()
+              .getLoadManager()
+              .forceUpdateNodeCache(
+                  NodeType.ConfigNode,
+                  tConfigNodeLocation.getConfigNodeId(),
+                  
NodeHeartbeatSample.generateDefaultSample(NodeStatus.Unknown));
           LOG.info("The ConfigNode: {} is successfully added to the cluster", 
tConfigNodeLocation);
           return Flow.NO_MORE_STATE;
       }

Reply via email to