This is an automated email from the ASF dual-hosted git repository.
tanxinyu 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 e437ef3d056 [remove datanode] Log the node information when submitting
RegionMigrateProcedure (#14051)
e437ef3d056 is described below
commit e437ef3d05648a4d356bdb28544a14eda1a64f83
Author: Xiangpeng Hu <[email protected]>
AuthorDate: Mon Nov 11 21:58:23 2024 +0800
[remove datanode] Log the node information when submitting
RegionMigrateProcedure (#14051)
---
.../load/cache/node/DataNodeHeartbeatCache.java | 9 +++++++
.../procedure/env/RemoveDataNodeHandler.java | 28 ++++++++++++++++++----
.../impl/node/RemoveDataNodesProcedure.java | 8 ++++++-
.../procedure/impl/region/RegionMigrationPlan.java | 12 ++++++++++
.../apache/iotdb/commons/conf/CommonConfig.java | 8 -------
5 files changed, 51 insertions(+), 14 deletions(-)
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/cache/node/DataNodeHeartbeatCache.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/cache/node/DataNodeHeartbeatCache.java
index cf550931c40..36bed0ecc67 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/cache/node/DataNodeHeartbeatCache.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/cache/node/DataNodeHeartbeatCache.java
@@ -22,11 +22,16 @@ package org.apache.iotdb.confignode.manager.load.cache.node;
import org.apache.iotdb.common.rpc.thrift.TLoadSample;
import org.apache.iotdb.commons.cluster.NodeStatus;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import java.util.concurrent.atomic.AtomicReference;
/** Heartbeat cache for cluster DataNodes. */
public class DataNodeHeartbeatCache extends BaseNodeCache {
+ private static final Logger LOGGER =
LoggerFactory.getLogger(DataNodeHeartbeatCache.class);
+
// TODO: The load sample may be moved into NodeStatistics in the future
private final AtomicReference<TLoadSample> latestLoadSample;
@@ -74,6 +79,10 @@ public class DataNodeHeartbeatCache extends BaseNodeCache {
long loadScore = NodeStatus.isNormalStatus(status) ? 0 : Long.MAX_VALUE;
currentStatistics.set(new NodeStatistics(currentNanoTime, status,
statusReason, loadScore));
+
+ if (forceUpdate) {
+ LOGGER.info("Force update NodeCache: status={}, currentNanoTime={}",
status, currentNanoTime);
+ }
}
public double getFreeDiskSpace() {
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/env/RemoveDataNodeHandler.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/env/RemoveDataNodeHandler.java
index 44371956981..19e0b8f422f 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/env/RemoveDataNodeHandler.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/env/RemoveDataNodeHandler.java
@@ -130,23 +130,40 @@ public class RemoveDataNodeHandler {
for (Map.Entry<Integer, TSStatus> entry :
changeDataNodeStatusContext.getResponseMap().entrySet()) {
- long currentTime = System.nanoTime();
-
int dataNodeId = entry.getKey();
NodeStatus nodeStatus = nodeStatusMap.get(dataNodeId);
RegionStatus regionStatus = RegionStatus.valueOf(nodeStatus.getStatus());
+
+ if (!isSucceed(entry.getValue())) {
+ LOGGER.error(
+ "{}, Failed to change DataNode status, dataNodeId={},
nodeStatus={}",
+ REMOVE_DATANODE_PROCESS,
+ dataNodeId,
+ nodeStatus);
+ continue;
+ }
+
// Force updating NodeStatus
+ long currentTime = System.nanoTime();
configManager
.getLoadManager()
.forceUpdateNodeCache(
NodeType.DataNode, dataNodeId, new
NodeHeartbeatSample(currentTime, nodeStatus));
+ LOGGER.info(
+ "{}, Force update NodeCache: dataNodeId={}, nodeStatus={},
currentTime={}",
+ REMOVE_DATANODE_PROCESS,
+ dataNodeId,
+ nodeStatus,
+ currentTime);
+
Map<TConsensusGroupId, Map<Integer, RegionHeartbeatSample>>
heartbeatSampleMap =
new TreeMap<>();
+
// Force update RegionStatus
configManager
.getPartitionManager()
- .getAllReplicaSets(entry.getKey())
+ .getAllReplicaSets(dataNodeId)
.forEach(
replicaSet ->
heartbeatSampleMap.put(
@@ -276,14 +293,15 @@ public class RemoveDataNodeHandler {
.sendAsyncRequestWithRetry(stopDataNodesContext);
for (Map.Entry<Integer, TSStatus> entry :
stopDataNodesContext.getResponseMap().entrySet()) {
- configManager.getLoadManager().removeNodeCache(entry.getKey());
+ int dataNodeId = entry.getKey();
+ configManager.getLoadManager().removeNodeCache(dataNodeId);
if (!isSucceed(entry.getValue())) {
LOGGER.error(
"{}, Stop Data Node meets error, error datanode: {}",
REMOVE_DATANODE_PROCESS,
entry.getValue());
} else {
- LOGGER.info("{}, Stop Data Node {} success.", REMOVE_DATANODE_PROCESS,
entry.getKey());
+ LOGGER.info("{}, Stop Data Node {} success.", REMOVE_DATANODE_PROCESS,
dataNodeId);
}
}
}
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/node/RemoveDataNodesProcedure.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/node/RemoveDataNodesProcedure.java
index aa27a0276f7..094e330eea9 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/node/RemoveDataNodesProcedure.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/node/RemoveDataNodesProcedure.java
@@ -154,7 +154,13 @@ public class RemoveDataNodesProcedure extends
AbstractNodeProcedure<RemoveDataNo
coordinatorForAddPeer,
coordinatorForRemovePeer);
addChildProcedure(regionMigrateProcedure);
- LOG.info("Submit child procedure {} for regionId {}",
regionMigrateProcedure, regionId);
+ LOG.info(
+ "Submit RegionMigrateProcedure for regionId {}:
removedDataNode={}, destDataNode={}, coordinatorForAddPeer={},
coordinatorForRemovePeer={}",
+ regionId,
+ removedDataNode,
+ destDataNode,
+ coordinatorForAddPeer,
+ coordinatorForRemovePeer);
} else {
LOG.error(
"{}, Cannot find target DataNode to migrate the region: {}",
diff --git
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/region/RegionMigrationPlan.java
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/region/RegionMigrationPlan.java
index c9c0ea018f1..9e90a00e84a 100644
---
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/region/RegionMigrationPlan.java
+++
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/procedure/impl/region/RegionMigrationPlan.java
@@ -94,4 +94,16 @@ public class RegionMigrationPlan {
public int hashCode() {
return Objects.hash(regionId, fromDataNode, toDataNode);
}
+
+ @Override
+ public String toString() {
+ return "RegionMigrationPlan{"
+ + "regionId="
+ + regionId
+ + ", fromDataNode="
+ + fromDataNode
+ + ", toDataNode="
+ + toDataNode
+ + '}';
+ }
}
diff --git
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
index 45be713bb57..59e20daae55 100644
---
a/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
+++
b/iotdb-core/node-commons/src/main/java/org/apache/iotdb/commons/conf/CommonConfig.java
@@ -567,14 +567,6 @@ public class CommonConfig {
this.statusReason = statusReason;
}
- public NodeStatus getStatus() {
- return status;
- }
-
- public void setStatus(NodeStatus status) {
- this.status = status;
- }
-
public TEndPoint getTargetAINodeEndPoint() {
return targetAINodeEndPoint;
}