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 06986a724587..673228570785 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 @@ -291,7 +291,9 @@ protected long getRollbackRetryTimeout() { @Override protected boolean isRollbackSupported(RemoveDataNodeState state) { - return false; + // Child migration failures are reported after the parent has advanced to STOP_DATA_NODE. + // Roll back there so drained nodes are stopped and failed migrations restore their statuses. + return state == RemoveDataNodeState.STOP_DATA_NODE; } /**