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;
}