Beyyes commented on code in PR #8641:
URL: https://github.com/apache/iotdb/pull/8641#discussion_r1058274832


##########
confignode/src/main/java/org/apache/iotdb/confignode/manager/ProcedureManager.java:
##########
@@ -414,6 +413,35 @@ public TSStatus migrateRegion(TMigrateRegionReq 
migrateRegionReq) {
               + migrateRegionReq.getRegionId());
       return status;
     }
+    // Here we only check Running DataNode to implement migration, because 
removing nodes may not
+    // exist when add peer is performing
+    Set<Integer> aliveDataNodes =
+        
configManager.getNodeManager().filterDataNodeThroughStatus(NodeStatus.Running).stream()
+            .map(TDataNodeConfiguration::getLocation)
+            .map(TDataNodeLocation::getDataNodeId)
+            .collect(Collectors.toSet());
+    DataNodesInRegion.retainAll(aliveDataNodes);
+    if (DataNodesInRegion.isEmpty()) {
+      LOGGER.warn(
+          "Submit RegionMigrateProcedure failed, because all of the DataNodes 
in Region Group {} is unavailable.",
+          migrateRegionReq.getRegionId());
+      TSStatus status = new 
TSStatus(TSStatusCode.MIGRATE_REGION_ERROR.getStatusCode());
+      status.setMessage(
+          "Submit RegionMigrateProcedure failed, because all of the DataNodes 
in Region Group "
+              + migrateRegionReq.getRegionId()
+              + " is unavailable.");
+      return status;
+    } else if (!aliveDataNodes.contains(migrateRegionReq.getToId())) {
+      LOGGER.warn(
+          "Submit RegionMigrateProcedure failed, because the destDataNode {} 
is ReadOnly.",
+          migrateRegionReq.getToId());
+      TSStatus status = new 
TSStatus(TSStatusCode.MIGRATE_REGION_ERROR.getStatusCode());
+      status.setMessage(
+          "Submit RegionMigrateProcedure failed, because the destDataNode "
+              + migrateRegionReq.getToId()
+              + " is ReadOnly.");

Review Comment:
   the destDataNode maybe ReadOnly or Unknown?



##########
confignode/src/main/java/org/apache/iotdb/confignode/manager/ProcedureManager.java:
##########
@@ -363,7 +367,10 @@ public TSStatus migrateRegion(TMigrateRegionReq 
migrateRegionReq) {
           "Submit RegionMigrateProcedure failed, because no region Group "
               + migrateRegionReq.getRegionId());
       return status;
-    } else if (originalDataNode == null) {
+    }
+    Set<Integer> DataNodesInRegion =

Review Comment:
   ```suggestion
       Set<Integer> dataNodesInRegion =
   ```



##########
confignode/src/main/java/org/apache/iotdb/confignode/manager/ProcedureManager.java:
##########
@@ -363,7 +367,10 @@ public TSStatus migrateRegion(TMigrateRegionReq 
migrateRegionReq) {
           "Submit RegionMigrateProcedure failed, because no region Group "
               + migrateRegionReq.getRegionId());
       return status;
-    } else if (originalDataNode == null) {
+    }
+    Set<Integer> DataNodesInRegion =

Review Comment:
   ```suggestion
       Set<Integer> dataNodesInRegion =
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to