You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by qi...@apache.org on 2022/07/01 12:29:28 UTC

[iotdb] branch master updated: [IOTDB-3529] Rename Region to RegionGroup and optimize the SetTTL process (#6552)

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

qiaojialin 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 d08093e531 [IOTDB-3529] Rename Region to RegionGroup and optimize the SetTTL process (#6552)
d08093e531 is described below

commit d08093e5312c644f037c183548af6423cd0ff389
Author: YongzaoDan <33...@users.noreply.github.com>
AuthorDate: Fri Jul 1 20:29:23 2022 +0800

    [IOTDB-3529] Rename Region to RegionGroup and optimize the SetTTL process (#6552)
---
 .../confignode/client/AsyncDataNodeClientPool.java | 44 ++++++++++++---
 .../confignode/client/SyncDataNodeClientPool.java  | 15 -----
 .../confignode/client/handlers/SetTTLHandler.java  | 58 +++++++++++++++++++
 .../consensus/request/ConfigPhysicalPlan.java      |  4 +-
 ...egionsPlan.java => CreateRegionGroupsPlan.java} |  6 +-
 .../confignode/manager/ClusterSchemaManager.java   | 46 ++++++++++++++-
 .../iotdb/confignode/manager/ConfigManager.java    | 29 ----------
 .../iotdb/confignode/manager/PartitionManager.java | 12 +++-
 .../iotdb/confignode/manager/load/LoadManager.java |  4 +-
 .../manager/load/balancer/RegionBalancer.java      |  6 +-
 .../persistence/executor/ConfigPlanExecutor.java   |  4 +-
 .../persistence/partition/PartitionInfo.java       | 32 +++++++----
 .../partition/StorageGroupPartitionTable.java      | 66 +++++++++++-----------
 .../request/ConfigPhysicalPlanSerDeTest.java       |  8 +--
 .../confignode/persistence/PartitionInfoTest.java  | 18 +++---
 15 files changed, 227 insertions(+), 125 deletions(-)

diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/client/AsyncDataNodeClientPool.java b/confignode/src/main/java/org/apache/iotdb/confignode/client/AsyncDataNodeClientPool.java
index afc4940cfd..c8c0e052f8 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/client/AsyncDataNodeClientPool.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/client/AsyncDataNodeClientPool.java
@@ -23,13 +23,15 @@ import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation;
 import org.apache.iotdb.common.rpc.thrift.TEndPoint;
 import org.apache.iotdb.common.rpc.thrift.TFlushReq;
 import org.apache.iotdb.common.rpc.thrift.TRegionReplicaSet;
+import org.apache.iotdb.common.rpc.thrift.TSetTTLReq;
 import org.apache.iotdb.commons.client.IClientManager;
 import org.apache.iotdb.commons.client.async.AsyncDataNodeInternalServiceClient;
 import org.apache.iotdb.confignode.client.handlers.CreateRegionHandler;
 import org.apache.iotdb.confignode.client.handlers.DataNodeHeartbeatHandler;
 import org.apache.iotdb.confignode.client.handlers.FlushHandler;
 import org.apache.iotdb.confignode.client.handlers.FunctionManagementHandler;
-import org.apache.iotdb.confignode.consensus.request.write.CreateRegionsPlan;
+import org.apache.iotdb.confignode.client.handlers.SetTTLHandler;
+import org.apache.iotdb.confignode.consensus.request.write.CreateRegionGroupsPlan;
 import org.apache.iotdb.mpp.rpc.thrift.TCreateDataRegionReq;
 import org.apache.iotdb.mpp.rpc.thrift.TCreateFunctionRequest;
 import org.apache.iotdb.mpp.rpc.thrift.TCreateSchemaRegionReq;
@@ -67,7 +69,10 @@ public class AsyncDataNodeClientPool {
    * @param createRegionGroupsPlan CreateRegionsReq
    * @param ttlMap Map<StorageGroupName, TTL>
    */
-  public void createRegions(CreateRegionsPlan createRegionGroupsPlan, Map<String, Long> ttlMap) {
+  public void createRegions(
+      CreateRegionGroupsPlan createRegionGroupsPlan, Map<String, Long> ttlMap) {
+
+    // TODO: Unify retry logic
 
     // Index of each Region
     int index = 0;
@@ -163,6 +168,7 @@ public class AsyncDataNodeClientPool {
 
   private TCreateSchemaRegionReq genCreateSchemaRegionReq(
       String storageGroup, TRegionReplicaSet regionReplicaSet) {
+    // TODO: Add a retry logic
     TCreateSchemaRegionReq req = new TCreateSchemaRegionReq();
     req.setStorageGroup(storageGroup);
     req.setRegionReplicaSet(regionReplicaSet);
@@ -176,6 +182,7 @@ public class AsyncDataNodeClientPool {
    */
   private void createSchemaRegion(
       TEndPoint endPoint, TCreateSchemaRegionReq req, CreateRegionHandler handler) {
+    // TODO: Add a retry logic
     AsyncDataNodeInternalServiceClient client;
     try {
       client = clientManager.borrowClient(endPoint);
@@ -189,6 +196,7 @@ public class AsyncDataNodeClientPool {
 
   private TCreateDataRegionReq genCreateDataRegionReq(
       String storageGroup, TRegionReplicaSet regionReplicaSet, long TTL) {
+    // TODO: Add a retry logic
     TCreateDataRegionReq req = new TCreateDataRegionReq();
     req.setStorageGroup(storageGroup);
     req.setRegionReplicaSet(regionReplicaSet);
@@ -203,6 +211,7 @@ public class AsyncDataNodeClientPool {
    */
   public void createDataRegion(
       TEndPoint endPoint, TCreateDataRegionReq req, CreateRegionHandler handler) {
+    // TODO: Add a retry logic
     AsyncDataNodeInternalServiceClient client;
     try {
       client = clientManager.borrowClient(endPoint);
@@ -221,6 +230,7 @@ public class AsyncDataNodeClientPool {
    */
   public void getDataNodeHeartBeat(
       TEndPoint endPoint, THeartbeatReq req, DataNodeHeartbeatHandler handler) {
+    // TODO: Add a retry logic
     AsyncDataNodeInternalServiceClient client;
     try {
       client = clientManager.borrowClient(endPoint);
@@ -246,6 +256,7 @@ public class AsyncDataNodeClientPool {
    */
   public void createFunction(
       TEndPoint endPoint, TCreateFunctionRequest request, FunctionManagementHandler handler) {
+    // TODO: Add a retry logic
     try {
       clientManager.borrowClient(endPoint).createFunction(request, handler);
     } catch (Exception e) {
@@ -260,6 +271,7 @@ public class AsyncDataNodeClientPool {
    */
   public void dropFunction(
       TEndPoint endPoint, TDropFunctionRequest request, FunctionManagementHandler handler) {
+    // TODO: Add a retry logic
     try {
       clientManager.borrowClient(endPoint).dropFunction(request, handler);
     } catch (Exception e) {
@@ -273,13 +285,27 @@ public class AsyncDataNodeClientPool {
    * @param endPoint The specific DataNode
    */
   public void flush(TEndPoint endPoint, TFlushReq flushReq, FlushHandler handler) {
-    for (int retry = 0; retry < 3; retry++) {
-      try {
-        clientManager.borrowClient(endPoint).flush(flushReq, handler);
-        return;
-      } catch (Exception e) {
-        LOGGER.error("Failed to asking DataNode to flush: {}", endPoint, e);
-      }
+    // TODO: Add a retry logic
+    try {
+      clientManager.borrowClient(endPoint).flush(flushReq, handler);
+    } catch (Exception e) {
+      LOGGER.error("Failed to asking DataNode to flush: {}", endPoint, e);
+    }
+  }
+
+  /**
+   * Set TTL on specific DataNode
+   *
+   * @param endPoint The specific DataNode
+   */
+  public void setTTL(TEndPoint endPoint, TSetTTLReq setTTLReq, SetTTLHandler handler) {
+    // TODO: Add a retry logic
+    try {
+      clientManager.borrowClient(endPoint).setTTL(setTTLReq, handler);
+    } catch (IOException e) {
+      LOGGER.error("Can't connect to DataNode {}", endPoint, e);
+    } catch (TException e) {
+      LOGGER.error("Set TTL on DataNode {} failed", endPoint, e);
     }
   }
 
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/client/SyncDataNodeClientPool.java b/confignode/src/main/java/org/apache/iotdb/confignode/client/SyncDataNodeClientPool.java
index c06bcf2ce9..22f184a345 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/client/SyncDataNodeClientPool.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/client/SyncDataNodeClientPool.java
@@ -23,7 +23,6 @@ import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation;
 import org.apache.iotdb.common.rpc.thrift.TEndPoint;
 import org.apache.iotdb.common.rpc.thrift.TRegionReplicaSet;
 import org.apache.iotdb.common.rpc.thrift.TSStatus;
-import org.apache.iotdb.common.rpc.thrift.TSetTTLReq;
 import org.apache.iotdb.commons.client.IClientManager;
 import org.apache.iotdb.commons.client.sync.SyncDataNodeInternalServiceClient;
 import org.apache.iotdb.mpp.rpc.thrift.TInvalidateCacheReq;
@@ -150,18 +149,4 @@ public class SyncDataNodeClientPool {
   public static SyncDataNodeClientPool getInstance() {
     return ClientPoolHolder.INSTANCE;
   }
-
-  public TSStatus setTTL(TEndPoint endPoint, TSetTTLReq setTTLReq) {
-    TSStatus status;
-    try (SyncDataNodeInternalServiceClient client = clientManager.borrowClient(endPoint)) {
-      status = client.setTTL(setTTLReq);
-    } catch (IOException e) {
-      LOGGER.error("Can't connect to DataNode {}", endPoint, e);
-      status = new TSStatus(TSStatusCode.TIME_OUT.getStatusCode());
-    } catch (TException e) {
-      LOGGER.error("setTTL on DataNode {} failed", endPoint, e);
-      status = new TSStatus(TSStatusCode.EXECUTE_STATEMENT_ERROR.getStatusCode());
-    }
-    return status;
-  }
 }
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/client/handlers/SetTTLHandler.java b/confignode/src/main/java/org/apache/iotdb/confignode/client/handlers/SetTTLHandler.java
new file mode 100644
index 0000000000..c31efe1030
--- /dev/null
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/client/handlers/SetTTLHandler.java
@@ -0,0 +1,58 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.iotdb.confignode.client.handlers;
+
+import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation;
+import org.apache.iotdb.common.rpc.thrift.TSStatus;
+import org.apache.iotdb.rpc.TSStatusCode;
+
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.concurrent.CountDownLatch;
+
+public class SetTTLHandler implements AsyncMethodCallback<TSStatus> {
+
+  private static final Logger LOGGER = LoggerFactory.getLogger(SetTTLHandler.class);
+
+  private final TDataNodeLocation dataNodeLocation;
+  private final CountDownLatch latch;
+
+  public SetTTLHandler(TDataNodeLocation dataNodeLocation, CountDownLatch latch) {
+    this.dataNodeLocation = dataNodeLocation;
+    this.latch = latch;
+  }
+
+  @Override
+  public void onComplete(TSStatus status) {
+    if (status.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
+      LOGGER.info("Successfully SetTTL on DataNode: {}", dataNodeLocation);
+    } else {
+      LOGGER.error("Failed to SetTTL on DataNode: {}, {}", dataNodeLocation, status);
+    }
+    latch.countDown();
+  }
+
+  @Override
+  public void onError(Exception e) {
+    latch.countDown();
+    LOGGER.error("Failed to SetTTL on DataNode: {}", dataNodeLocation);
+  }
+}
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlan.java b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlan.java
index d1b5a5c234..900126c325 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlan.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlan.java
@@ -32,7 +32,7 @@ import org.apache.iotdb.confignode.consensus.request.write.AdjustMaxRegionGroupC
 import org.apache.iotdb.confignode.consensus.request.write.ApplyConfigNodePlan;
 import org.apache.iotdb.confignode.consensus.request.write.CreateDataPartitionPlan;
 import org.apache.iotdb.confignode.consensus.request.write.CreateFunctionPlan;
-import org.apache.iotdb.confignode.consensus.request.write.CreateRegionsPlan;
+import org.apache.iotdb.confignode.consensus.request.write.CreateRegionGroupsPlan;
 import org.apache.iotdb.confignode.consensus.request.write.CreateSchemaPartitionPlan;
 import org.apache.iotdb.confignode.consensus.request.write.DeleteProcedurePlan;
 import org.apache.iotdb.confignode.consensus.request.write.DeleteRegionsPlan;
@@ -129,7 +129,7 @@ public abstract class ConfigPhysicalPlan implements IConsensusRequest {
           req = new GetStorageGroupPlan();
           break;
         case CreateRegionGroups:
-          req = new CreateRegionsPlan();
+          req = new CreateRegionGroupsPlan();
           break;
         case DeleteRegions:
           req = new DeleteRegionsPlan();
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/CreateRegionsPlan.java b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/CreateRegionGroupsPlan.java
similarity index 95%
rename from confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/CreateRegionsPlan.java
rename to confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/CreateRegionGroupsPlan.java
index ecbeec7ed2..fa0d288d72 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/CreateRegionsPlan.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/consensus/request/write/CreateRegionGroupsPlan.java
@@ -35,12 +35,12 @@ import java.util.Objects;
 import java.util.TreeMap;
 
 /** Create regions for specific StorageGroups */
-public class CreateRegionsPlan extends ConfigPhysicalPlan {
+public class CreateRegionGroupsPlan extends ConfigPhysicalPlan {
 
   // Map<StorageGroupName, List<TRegionReplicaSet>>
   private final Map<String, List<TRegionReplicaSet>> regionGroupMap;
 
-  public CreateRegionsPlan() {
+  public CreateRegionGroupsPlan() {
     super(ConfigPhysicalPlanType.CreateRegionGroups);
     this.regionGroupMap = new TreeMap<>();
   }
@@ -91,7 +91,7 @@ public class CreateRegionsPlan extends ConfigPhysicalPlan {
   public boolean equals(Object o) {
     if (this == o) return true;
     if (o == null || getClass() != o.getClass()) return false;
-    CreateRegionsPlan that = (CreateRegionsPlan) o;
+    CreateRegionGroupsPlan that = (CreateRegionGroupsPlan) o;
     return regionGroupMap.equals(that.regionGroupMap);
   }
 
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/manager/ClusterSchemaManager.java b/confignode/src/main/java/org/apache/iotdb/confignode/manager/ClusterSchemaManager.java
index 9c9dd86546..235377855e 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/manager/ClusterSchemaManager.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/manager/ClusterSchemaManager.java
@@ -19,9 +19,13 @@
 package org.apache.iotdb.confignode.manager;
 
 import org.apache.iotdb.common.rpc.thrift.TConsensusGroupType;
+import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation;
 import org.apache.iotdb.common.rpc.thrift.TSStatus;
+import org.apache.iotdb.common.rpc.thrift.TSetTTLReq;
 import org.apache.iotdb.commons.exception.IllegalPathException;
 import org.apache.iotdb.commons.exception.MetadataException;
+import org.apache.iotdb.confignode.client.AsyncDataNodeClientPool;
+import org.apache.iotdb.confignode.client.handlers.SetTTLHandler;
 import org.apache.iotdb.confignode.conf.ConfigNodeDescriptor;
 import org.apache.iotdb.confignode.consensus.request.read.CountStorageGroupPlan;
 import org.apache.iotdb.confignode.consensus.request.read.GetStorageGroupPlan;
@@ -36,6 +40,7 @@ import org.apache.iotdb.confignode.exception.StorageGroupNotExistsException;
 import org.apache.iotdb.confignode.persistence.ClusterSchemaInfo;
 import org.apache.iotdb.confignode.rpc.thrift.TStorageGroupSchema;
 import org.apache.iotdb.consensus.common.DataSet;
+import org.apache.iotdb.rpc.RpcUtils;
 import org.apache.iotdb.rpc.TSStatusCode;
 import org.apache.iotdb.tsfile.utils.Pair;
 
@@ -44,6 +49,8 @@ import org.slf4j.LoggerFactory;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.CountDownLatch;
 
 /** The ClusterSchemaManager Manages cluster schema read and write requests. */
 public class ClusterSchemaManager {
@@ -122,8 +129,45 @@ public class ClusterSchemaManager {
     return getConsensusManager().read(getStorageGroupPlan).getDataset();
   }
 
+  /**
+   * Update TTL for the specific StorageGroup
+   *
+   * @param setTTLPlan setTTLPlan
+   * @return SUCCESS_STATUS if successfully update the TTL, STORAGE_GROUP_NOT_EXIST if the specific
+   *     StorageGroup doesn't exist
+   */
   public TSStatus setTTL(SetTTLPlan setTTLPlan) {
-    // TODO: Inform DataNodes
+
+    if (!getStorageGroupNames().contains(setTTLPlan.getStorageGroup())) {
+      return RpcUtils.getStatus(
+          TSStatusCode.STORAGE_GROUP_NOT_EXIST,
+          "storageGroup " + setTTLPlan.getStorageGroup() + " does not exist");
+    }
+
+    Set<TDataNodeLocation> dataNodeLocations =
+        getPartitionManager()
+            .getStorageGroupRelatedDataNodes(
+                setTTLPlan.getStorageGroup(), TConsensusGroupType.DataRegion);
+    if (dataNodeLocations.size() > 0) {
+      // TODO: Use procedure to protect SetTTL on DataNodes
+      CountDownLatch latch = new CountDownLatch(dataNodeLocations.size());
+      for (TDataNodeLocation dataNodeLocation : dataNodeLocations) {
+        SetTTLHandler handler = new SetTTLHandler(dataNodeLocation, latch);
+        AsyncDataNodeClientPool.getInstance()
+            .setTTL(
+                dataNodeLocation.getInternalEndPoint(),
+                new TSetTTLReq(setTTLPlan.getStorageGroup(), setTTLPlan.getTTL()),
+                handler);
+      }
+
+      try {
+        // Waiting until this batch of SetTTL requests done
+        latch.await();
+      } catch (InterruptedException e) {
+        LOGGER.error("ClusterSchemaManager was interrupted during SetTTL on DataNodes", e);
+      }
+    }
+
     return getConsensusManager().write(setTTLPlan).getStatus();
   }
 
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java b/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
index bff49a01ea..9d56895b03 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/manager/ConfigManager.java
@@ -20,13 +20,11 @@
 package org.apache.iotdb.confignode.manager;
 
 import org.apache.iotdb.common.rpc.thrift.TConfigNodeLocation;
-import org.apache.iotdb.common.rpc.thrift.TConsensusGroupType;
 import org.apache.iotdb.common.rpc.thrift.TDataNodeInfo;
 import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation;
 import org.apache.iotdb.common.rpc.thrift.TFlushReq;
 import org.apache.iotdb.common.rpc.thrift.TSStatus;
 import org.apache.iotdb.common.rpc.thrift.TSeriesPartitionSlot;
-import org.apache.iotdb.common.rpc.thrift.TSetTTLReq;
 import org.apache.iotdb.commons.conf.CommonDescriptor;
 import org.apache.iotdb.commons.conf.IoTDBConstant;
 import org.apache.iotdb.commons.exception.IllegalPathException;
@@ -34,7 +32,6 @@ import org.apache.iotdb.commons.path.PartialPath;
 import org.apache.iotdb.commons.utils.AuthUtils;
 import org.apache.iotdb.commons.utils.PathUtils;
 import org.apache.iotdb.commons.utils.StatusUtils;
-import org.apache.iotdb.confignode.client.SyncDataNodeClientPool;
 import org.apache.iotdb.confignode.conf.ConfigNodeConfig;
 import org.apache.iotdb.confignode.conf.ConfigNodeDescriptor;
 import org.apache.iotdb.confignode.consensus.request.auth.AuthorPlan;
@@ -217,32 +214,6 @@ public class ConfigManager implements IManager {
   public TSStatus setTTL(SetTTLPlan setTTLPlan) {
     TSStatus status = confirmLeader();
     if (status.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
-      if (!clusterSchemaManager
-          .getStorageGroupNames()
-          .contains(setTTLPlan.getStorageGroup().toString())) {
-        return RpcUtils.getStatus(
-            TSStatusCode.STORAGE_GROUP_NOT_EXIST,
-            "storageGroup " + setTTLPlan.getStorageGroup() + " does not exist");
-      }
-      Set<TDataNodeLocation> dataNodeLocations =
-          getPartitionManager()
-              .getDataNodeLocation(setTTLPlan.getStorageGroup(), TConsensusGroupType.DataRegion);
-      if (dataNodeLocations.size() != 0) {
-        for (TDataNodeLocation dataNodeLocation : dataNodeLocations) {
-          List<TDataNodeInfo> onlineDataNodes =
-              getNodeManager().getOnlineDataNodes(dataNodeLocation.getDataNodeId());
-          for (TDataNodeInfo dataNodeInfo : onlineDataNodes) {
-            status =
-                SyncDataNodeClientPool.getInstance()
-                    .setTTL(
-                        dataNodeInfo.getLocation().getInternalEndPoint(),
-                        new TSetTTLReq(setTTLPlan.getStorageGroup(), setTTLPlan.getTTL()));
-            if (status.getCode() != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
-              return status;
-            }
-          }
-        }
-      }
       return clusterSchemaManager.setTTL(setTTLPlan);
     } else {
       return status;
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/manager/PartitionManager.java b/confignode/src/main/java/org/apache/iotdb/confignode/manager/PartitionManager.java
index 7d20d7cca9..2940ebfe14 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/manager/PartitionManager.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/manager/PartitionManager.java
@@ -425,8 +425,16 @@ public class PartitionManager {
     throw new TimeoutException("");
   }
 
-  public Set<TDataNodeLocation> getDataNodeLocation(String storageGroup, TConsensusGroupType type) {
-    return partitionInfo.getDataNodeLocation(storageGroup, type);
+  /**
+   * Get the DataNodes who contain the specific StorageGroup's Schema or Data
+   *
+   * @param storageGroup The specific StorageGroup's name
+   * @param type SchemaRegion or DataRegion
+   * @return Set<TDataNodeLocation>, the related DataNodes
+   */
+  public Set<TDataNodeLocation> getStorageGroupRelatedDataNodes(
+      String storageGroup, TConsensusGroupType type) {
+    return partitionInfo.getStorageGroupRelatedDataNodes(storageGroup, type);
   }
   /**
    * Only leader use this interface
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/LoadManager.java b/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/LoadManager.java
index e1c1d79421..f8b0e04358 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/LoadManager.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/LoadManager.java
@@ -35,7 +35,7 @@ import org.apache.iotdb.confignode.client.AsyncDataNodeClientPool;
 import org.apache.iotdb.confignode.client.handlers.ConfigNodeHeartbeatHandler;
 import org.apache.iotdb.confignode.client.handlers.DataNodeHeartbeatHandler;
 import org.apache.iotdb.confignode.conf.ConfigNodeDescriptor;
-import org.apache.iotdb.confignode.consensus.request.write.CreateRegionsPlan;
+import org.apache.iotdb.confignode.consensus.request.write.CreateRegionGroupsPlan;
 import org.apache.iotdb.confignode.exception.NotEnoughDataNodeException;
 import org.apache.iotdb.confignode.exception.StorageGroupNotExistsException;
 import org.apache.iotdb.confignode.manager.ClusterSchemaManager;
@@ -121,7 +121,7 @@ public class LoadManager {
   public void doRegionCreation(
       Map<String, Integer> allotmentMap, TConsensusGroupType consensusGroupType)
       throws NotEnoughDataNodeException, StorageGroupNotExistsException {
-    CreateRegionsPlan createRegionGroupsPlan =
+    CreateRegionGroupsPlan createRegionGroupsPlan =
         regionBalancer.genRegionsAllocationPlan(allotmentMap, consensusGroupType);
 
     // TODO: Use procedure to protect the following process
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/RegionBalancer.java b/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/RegionBalancer.java
index 121c1f449b..421a726c9a 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/RegionBalancer.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/RegionBalancer.java
@@ -22,7 +22,7 @@ import org.apache.iotdb.common.rpc.thrift.TConsensusGroupId;
 import org.apache.iotdb.common.rpc.thrift.TConsensusGroupType;
 import org.apache.iotdb.common.rpc.thrift.TDataNodeInfo;
 import org.apache.iotdb.common.rpc.thrift.TRegionReplicaSet;
-import org.apache.iotdb.confignode.consensus.request.write.CreateRegionsPlan;
+import org.apache.iotdb.confignode.consensus.request.write.CreateRegionGroupsPlan;
 import org.apache.iotdb.confignode.exception.NotEnoughDataNodeException;
 import org.apache.iotdb.confignode.exception.StorageGroupNotExistsException;
 import org.apache.iotdb.confignode.manager.ClusterSchemaManager;
@@ -56,10 +56,10 @@ public class RegionBalancer {
    * @throws NotEnoughDataNodeException When the number of DataNodes is not enough for allocation
    * @throws StorageGroupNotExistsException When some StorageGroups don't exist
    */
-  public CreateRegionsPlan genRegionsAllocationPlan(
+  public CreateRegionGroupsPlan genRegionsAllocationPlan(
       Map<String, Integer> allotmentMap, TConsensusGroupType consensusGroupType)
       throws NotEnoughDataNodeException, StorageGroupNotExistsException {
-    CreateRegionsPlan createRegionGroupsPlan = new CreateRegionsPlan();
+    CreateRegionGroupsPlan createRegionGroupsPlan = new CreateRegionGroupsPlan();
     IRegionAllocator regionAllocator = genRegionAllocator();
 
     List<TDataNodeInfo> onlineDataNodes = getNodeManager().getOnlineDataNodes(-1);
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/persistence/executor/ConfigPlanExecutor.java b/confignode/src/main/java/org/apache/iotdb/confignode/persistence/executor/ConfigPlanExecutor.java
index 76554207c2..a081e5c526 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/persistence/executor/ConfigPlanExecutor.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/persistence/executor/ConfigPlanExecutor.java
@@ -35,7 +35,7 @@ import org.apache.iotdb.confignode.consensus.request.write.AdjustMaxRegionGroupC
 import org.apache.iotdb.confignode.consensus.request.write.ApplyConfigNodePlan;
 import org.apache.iotdb.confignode.consensus.request.write.CreateDataPartitionPlan;
 import org.apache.iotdb.confignode.consensus.request.write.CreateFunctionPlan;
-import org.apache.iotdb.confignode.consensus.request.write.CreateRegionsPlan;
+import org.apache.iotdb.confignode.consensus.request.write.CreateRegionGroupsPlan;
 import org.apache.iotdb.confignode.consensus.request.write.CreateSchemaPartitionPlan;
 import org.apache.iotdb.confignode.consensus.request.write.DeleteProcedurePlan;
 import org.apache.iotdb.confignode.consensus.request.write.DeleteStorageGroupPlan;
@@ -167,7 +167,7 @@ public class ConfigPlanExecutor {
       case SetTimePartitionInterval:
         return clusterSchemaInfo.setTimePartitionInterval((SetTimePartitionIntervalPlan) req);
       case CreateRegionGroups:
-        return partitionInfo.createRegionGroups((CreateRegionsPlan) req);
+        return partitionInfo.createRegionGroups((CreateRegionGroupsPlan) req);
       case CreateSchemaPartition:
         return partitionInfo.createSchemaPartition((CreateSchemaPartitionPlan) req);
       case CreateDataPartition:
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/PartitionInfo.java b/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/PartitionInfo.java
index 4f56c7847d..52d3e8b120 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/PartitionInfo.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/PartitionInfo.java
@@ -34,7 +34,7 @@ import org.apache.iotdb.confignode.consensus.request.read.GetDataPartitionPlan;
 import org.apache.iotdb.confignode.consensus.request.read.GetRegionInfoListPlan;
 import org.apache.iotdb.confignode.consensus.request.read.GetSchemaPartitionPlan;
 import org.apache.iotdb.confignode.consensus.request.write.CreateDataPartitionPlan;
-import org.apache.iotdb.confignode.consensus.request.write.CreateRegionsPlan;
+import org.apache.iotdb.confignode.consensus.request.write.CreateRegionGroupsPlan;
 import org.apache.iotdb.confignode.consensus.request.write.CreateSchemaPartitionPlan;
 import org.apache.iotdb.confignode.consensus.request.write.DeleteStorageGroupPlan;
 import org.apache.iotdb.confignode.consensus.request.write.PreDeleteStorageGroupPlan;
@@ -126,7 +126,7 @@ public class PartitionInfo implements SnapshotProcessor {
               Metric.REGION.toString(),
               MetricLevel.IMPORTANT,
               this,
-              o -> o.updateRegionMetric(TConsensusGroupType.SchemaRegion),
+              o -> o.updateRegionGroupMetric(TConsensusGroupType.SchemaRegion),
               Tag.NAME.toString(),
               "total",
               Tag.TYPE.toString(),
@@ -137,7 +137,7 @@ public class PartitionInfo implements SnapshotProcessor {
               Metric.REGION.toString(),
               MetricLevel.IMPORTANT,
               this,
-              o -> o.updateRegionMetric(TConsensusGroupType.DataRegion),
+              o -> o.updateRegionGroupMetric(TConsensusGroupType.DataRegion),
               Tag.NAME.toString(),
               "total",
               Tag.TYPE.toString(),
@@ -172,7 +172,7 @@ public class PartitionInfo implements SnapshotProcessor {
    * @param plan CreateRegionGroupsPlan
    * @return SUCCESS_STATUS
    */
-  public TSStatus createRegionGroups(CreateRegionsPlan plan) {
+  public TSStatus createRegionGroups(CreateRegionGroupsPlan plan) {
     TSStatus result;
     AtomicInteger maxRegionId = new AtomicInteger(Integer.MIN_VALUE);
 
@@ -524,7 +524,7 @@ public class PartitionInfo implements SnapshotProcessor {
       throw new StorageGroupNotExistsException(storageGroup);
     }
 
-    return storageGroupPartitionTables.get(storageGroup).getRegionCount(type);
+    return storageGroupPartitionTables.get(storageGroup).getRegionGroupCount(type);
   }
 
   public int getSlotCount(String storageGroup) {
@@ -562,8 +562,16 @@ public class PartitionInfo implements SnapshotProcessor {
     return storageGroupPartitionTables.get(storageGroup).getRegionAllocationParticle(type);
   }
 
-  public Set<TDataNodeLocation> getDataNodeLocation(String storageGroup, TConsensusGroupType type) {
-    return storageGroupPartitionTables.get(storageGroup).getDataNodeLocation(type);
+  /**
+   * Get the DataNodes who contain the specific StorageGroup's Schema or Data
+   *
+   * @param storageGroup The specific StorageGroup's name
+   * @param type SchemaRegion or DataRegion
+   * @return Set<TDataNodeLocation>, the related DataNodes
+   */
+  public Set<TDataNodeLocation> getStorageGroupRelatedDataNodes(
+      String storageGroup, TConsensusGroupType type) {
+    return storageGroupPartitionTables.get(storageGroup).getStorageGroupRelatedDataNodes(type);
   }
 
   /**
@@ -575,7 +583,7 @@ public class PartitionInfo implements SnapshotProcessor {
    */
   public List<Pair<Long, TConsensusGroupId>> getSortedRegionSlotsCounter(
       String storageGroup, TConsensusGroupType type) {
-    return storageGroupPartitionTables.get(storageGroup).getSortedRegionSlotsCounter(type);
+    return storageGroupPartitionTables.get(storageGroup).getSortedRegionGroupSlotsCounter(type);
   }
 
   /**
@@ -588,22 +596,22 @@ public class PartitionInfo implements SnapshotProcessor {
     Set<RegionGroup> regionGroups = new HashSet<>();
     for (Map.Entry<String, StorageGroupPartitionTable> entry :
         storageGroupPartitionTables.entrySet()) {
-      regionGroups.addAll(entry.getValue().getRegion(type));
+      regionGroups.addAll(entry.getValue().getRegionGroups(type));
     }
     return regionGroups.size();
   }
 
   /**
-   * update region-related metric
+   * Update RegionGroup-related metric
    *
    * @param type SchemaRegion or DataRegion
    * @return the number of SchemaRegion or DataRegion
    */
-  private int updateRegionMetric(TConsensusGroupType type) {
+  private int updateRegionGroupMetric(TConsensusGroupType type) {
     Set<RegionGroup> regionGroups = new HashSet<>();
     for (Map.Entry<String, StorageGroupPartitionTable> entry :
         storageGroupPartitionTables.entrySet()) {
-      regionGroups.addAll(entry.getValue().getRegion(type));
+      regionGroups.addAll(entry.getValue().getRegionGroups(type));
     }
     int result = regionGroups.size();
     // datanode location -> region number
diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/StorageGroupPartitionTable.java b/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/StorageGroupPartitionTable.java
index 1d92dbc3c7..e4a6ed4431 100644
--- a/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/StorageGroupPartitionTable.java
+++ b/confignode/src/main/java/org/apache/iotdb/confignode/persistence/partition/StorageGroupPartitionTable.java
@@ -56,6 +56,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
 
 public class StorageGroupPartitionTable {
+
   private volatile boolean isPredeleted = false;
   // The name of storage group
   private String storageGroupName;
@@ -69,7 +70,7 @@ public class StorageGroupPartitionTable {
   private final AtomicBoolean dataRegionParticle;
 
   // Region
-  private final Map<TConsensusGroupId, RegionGroup> regionInfoMap;
+  private final Map<TConsensusGroupId, RegionGroup> regionGroupMap;
   // SchemaPartition
   private final SchemaPartitionTable schemaPartitionTable;
   // DataPartition
@@ -81,7 +82,7 @@ public class StorageGroupPartitionTable {
 
     this.schemaRegionParticle = new AtomicBoolean(true);
     this.dataRegionParticle = new AtomicBoolean(true);
-    this.regionInfoMap = new ConcurrentHashMap<>();
+    this.regionGroupMap = new ConcurrentHashMap<>();
 
     this.schemaPartitionTable = new SchemaPartitionTable();
     this.dataPartitionTable = new DataPartitionTable();
@@ -97,7 +98,7 @@ public class StorageGroupPartitionTable {
               Metric.REGION.toString(),
               MetricLevel.NORMAL,
               this,
-              o -> o.getRegionCount(TConsensusGroupType.SchemaRegion),
+              o -> o.getRegionGroupCount(TConsensusGroupType.SchemaRegion),
               Tag.NAME.toString(),
               storageGroupName,
               Tag.TYPE.toString(),
@@ -108,7 +109,7 @@ public class StorageGroupPartitionTable {
               Metric.REGION.toString(),
               MetricLevel.NORMAL,
               this,
-              o -> o.getRegionCount(TConsensusGroupType.DataRegion),
+              o -> o.getRegionGroupCount(TConsensusGroupType.DataRegion),
               Tag.NAME.toString(),
               storageGroupName,
               Tag.TYPE.toString(),
@@ -154,14 +155,14 @@ public class StorageGroupPartitionTable {
    */
   public void createRegionGroups(List<TRegionReplicaSet> replicaSets) {
     replicaSets.forEach(
-        replicaSet -> regionInfoMap.put(replicaSet.getRegionId(), new RegionGroup(replicaSet)));
+        replicaSet -> regionGroupMap.put(replicaSet.getRegionId(), new RegionGroup(replicaSet)));
   }
 
   /** @return All Regions' RegionReplicaSet within one StorageGroup */
   public List<TRegionReplicaSet> getAllReplicaSets() {
     List<TRegionReplicaSet> result = new ArrayList<>();
 
-    for (RegionGroup regionGroup : regionInfoMap.values()) {
+    for (RegionGroup regionGroup : regionGroupMap.values()) {
       result.add(regionGroup.getReplicaSet());
     }
 
@@ -169,14 +170,14 @@ public class StorageGroupPartitionTable {
   }
 
   /**
-   * Get regions currently owned by this StorageGroup
+   * Get all RegionGroups currently owned by this StorageGroup
    *
    * @param type SchemaRegion or DataRegion
    * @return The regions currently owned by this StorageGroup
    */
-  public Set<RegionGroup> getRegion(TConsensusGroupType type) {
+  public Set<RegionGroup> getRegionGroups(TConsensusGroupType type) {
     Set<RegionGroup> regionGroups = new HashSet<>();
-    regionInfoMap
+    regionGroupMap
         .values()
         .forEach(
             regionGroup -> {
@@ -187,14 +188,14 @@ public class StorageGroupPartitionTable {
     return regionGroups;
   }
   /**
-   * Get the number of Regions currently owned by this StorageGroup
+   * Get the number of RegionGroups currently owned by this StorageGroup
    *
    * @param type SchemaRegion or DataRegion
    * @return The number of Regions currently owned by this StorageGroup
    */
-  public int getRegionCount(TConsensusGroupType type) {
+  public int getRegionGroupCount(TConsensusGroupType type) {
     AtomicInteger result = new AtomicInteger(0);
-    regionInfoMap
+    regionGroupMap
         .values()
         .forEach(
             regionGroup -> {
@@ -296,7 +297,7 @@ public class StorageGroupPartitionTable {
     deltaMap.forEach(
         ((consensusGroupId, delta) -> {
           total.getAndAdd(delta.get());
-          regionInfoMap.get(consensusGroupId).addCounter(delta.get());
+          regionGroupMap.get(consensusGroupId).addCounter(delta.get());
         }));
     seriesPartitionSlotsCount.getAndAdd(total.get());
   }
@@ -316,7 +317,7 @@ public class StorageGroupPartitionTable {
     deltaMap.forEach(
         ((consensusGroupId, delta) -> {
           total.getAndAdd(delta.get());
-          regionInfoMap.get(consensusGroupId).addCounter(delta.get());
+          regionGroupMap.get(consensusGroupId).addCounter(delta.get());
         }));
   }
 
@@ -332,18 +333,18 @@ public class StorageGroupPartitionTable {
     return schemaPartitionTable.filterUnassignedSchemaPartitionSlots(partitionSlots);
   }
 
-  public Set<TDataNodeLocation> getDataNodeLocation(TConsensusGroupType type) {
+  /**
+   * Get the DataNodes who contain the specific StorageGroup's Schema or Data
+   *
+   * @param type SchemaRegion or DataRegion
+   * @return Set<TDataNodeLocation>, the related DataNodes
+   */
+  public Set<TDataNodeLocation> getStorageGroupRelatedDataNodes(TConsensusGroupType type) {
     HashSet<TDataNodeLocation> result = new HashSet<>();
-    regionInfoMap.forEach(
+    regionGroupMap.forEach(
         (consensusGroupId, regionGroup) -> {
           if (consensusGroupId.getType().equals(type)) {
-            regionGroup
-                .getReplicaSet()
-                .getDataNodeLocations()
-                .forEach(
-                    (dataNodeLocation) -> {
-                      result.add(dataNodeLocation);
-                    });
+            result.addAll(regionGroup.getReplicaSet().getDataNodeLocations());
           }
         });
     return result;
@@ -365,12 +366,13 @@ public class StorageGroupPartitionTable {
    * Only leader use this interface.
    *
    * @param type SchemaRegion or DataRegion
-   * @return Regions that sorted by the number of allocated slots
+   * @return RegionGroups' indexes that sorted by the number of allocated slots
    */
-  public List<Pair<Long, TConsensusGroupId>> getSortedRegionSlotsCounter(TConsensusGroupType type) {
+  public List<Pair<Long, TConsensusGroupId>> getSortedRegionGroupSlotsCounter(
+      TConsensusGroupType type) {
     List<Pair<Long, TConsensusGroupId>> result = new Vector<>();
 
-    regionInfoMap.forEach(
+    regionGroupMap.forEach(
         (consensusGroupId, regionGroup) -> {
           if (consensusGroupId.getType().equals(type)) {
             result.add(new Pair<>(regionGroup.getCounter(), consensusGroupId));
@@ -383,7 +385,7 @@ public class StorageGroupPartitionTable {
 
   public void getRegionInfoList(
       GetRegionInfoListPlan regionsInfoPlan, List<TRegionInfo> regionInfoList) {
-    regionInfoMap.forEach(
+    regionGroupMap.forEach(
         (consensusGroupId, regionGroup) -> {
           TRegionReplicaSet replicaSet = regionGroup.getReplicaSet();
           if (regionsInfoPlan.getRegionType() == null) {
@@ -426,8 +428,8 @@ public class StorageGroupPartitionTable {
     ReadWriteIOUtils.write(storageGroupName, outputStream);
     ReadWriteIOUtils.write(seriesPartitionSlotsCount.get(), outputStream);
 
-    ReadWriteIOUtils.write(regionInfoMap.size(), outputStream);
-    for (Map.Entry<TConsensusGroupId, RegionGroup> regionInfoEntry : regionInfoMap.entrySet()) {
+    ReadWriteIOUtils.write(regionGroupMap.size(), outputStream);
+    for (Map.Entry<TConsensusGroupId, RegionGroup> regionInfoEntry : regionGroupMap.entrySet()) {
       regionInfoEntry.getKey().write(protocol);
       regionInfoEntry.getValue().serialize(outputStream, protocol);
     }
@@ -448,7 +450,7 @@ public class StorageGroupPartitionTable {
       consensusGroupId.read(protocol);
       RegionGroup regionGroup = new RegionGroup();
       regionGroup.deserialize(inputStream, protocol);
-      regionInfoMap.put(consensusGroupId, regionGroup);
+      regionGroupMap.put(consensusGroupId, regionGroup);
     }
 
     schemaPartitionTable.deserialize(inputStream, protocol);
@@ -461,13 +463,13 @@ public class StorageGroupPartitionTable {
     if (o == null || getClass() != o.getClass()) return false;
     StorageGroupPartitionTable that = (StorageGroupPartitionTable) o;
     return isPredeleted == that.isPredeleted
-        && regionInfoMap.equals(that.regionInfoMap)
+        && regionGroupMap.equals(that.regionGroupMap)
         && schemaPartitionTable.equals(that.schemaPartitionTable)
         && dataPartitionTable.equals(that.dataPartitionTable);
   }
 
   @Override
   public int hashCode() {
-    return Objects.hash(isPredeleted, regionInfoMap, schemaPartitionTable, dataPartitionTable);
+    return Objects.hash(isPredeleted, regionGroupMap, schemaPartitionTable, dataPartitionTable);
   }
 }
diff --git a/confignode/src/test/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanSerDeTest.java b/confignode/src/test/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanSerDeTest.java
index fb5ca7bd28..46bf937f4d 100644
--- a/confignode/src/test/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanSerDeTest.java
+++ b/confignode/src/test/java/org/apache/iotdb/confignode/consensus/request/ConfigPhysicalPlanSerDeTest.java
@@ -44,7 +44,7 @@ import org.apache.iotdb.confignode.consensus.request.read.GetStorageGroupPlan;
 import org.apache.iotdb.confignode.consensus.request.write.AdjustMaxRegionGroupCountPlan;
 import org.apache.iotdb.confignode.consensus.request.write.ApplyConfigNodePlan;
 import org.apache.iotdb.confignode.consensus.request.write.CreateDataPartitionPlan;
-import org.apache.iotdb.confignode.consensus.request.write.CreateRegionsPlan;
+import org.apache.iotdb.confignode.consensus.request.write.CreateRegionGroupsPlan;
 import org.apache.iotdb.confignode.consensus.request.write.CreateSchemaPartitionPlan;
 import org.apache.iotdb.confignode.consensus.request.write.DeleteProcedurePlan;
 import org.apache.iotdb.confignode.consensus.request.write.DeleteRegionsPlan;
@@ -203,7 +203,7 @@ public class ConfigPhysicalPlanSerDeTest {
     dataNodeLocation.setDataRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 40010));
     dataNodeLocation.setSchemaRegionConsensusEndPoint(new TEndPoint("0.0.0.0", 50010));
 
-    CreateRegionsPlan req0 = new CreateRegionsPlan();
+    CreateRegionGroupsPlan req0 = new CreateRegionGroupsPlan();
     TRegionReplicaSet dataRegionSet = new TRegionReplicaSet();
     dataRegionSet.setRegionId(new TConsensusGroupId(TConsensusGroupType.DataRegion, 0));
     dataRegionSet.setDataNodeLocations(Collections.singletonList(dataNodeLocation));
@@ -214,8 +214,8 @@ public class ConfigPhysicalPlanSerDeTest {
     schemaRegionSet.setDataNodeLocations(Collections.singletonList(dataNodeLocation));
     req0.addRegionGroup("root.sg1", schemaRegionSet);
 
-    CreateRegionsPlan req1 =
-        (CreateRegionsPlan) ConfigPhysicalPlan.Factory.create(req0.serializeToByteBuffer());
+    CreateRegionGroupsPlan req1 =
+        (CreateRegionGroupsPlan) ConfigPhysicalPlan.Factory.create(req0.serializeToByteBuffer());
     Assert.assertEquals(req0, req1);
   }
 
diff --git a/confignode/src/test/java/org/apache/iotdb/confignode/persistence/PartitionInfoTest.java b/confignode/src/test/java/org/apache/iotdb/confignode/persistence/PartitionInfoTest.java
index 9afb184009..c813dc772d 100644
--- a/confignode/src/test/java/org/apache/iotdb/confignode/persistence/PartitionInfoTest.java
+++ b/confignode/src/test/java/org/apache/iotdb/confignode/persistence/PartitionInfoTest.java
@@ -31,7 +31,7 @@ import org.apache.iotdb.commons.partition.SchemaPartitionTable;
 import org.apache.iotdb.commons.partition.SeriesPartitionTable;
 import org.apache.iotdb.confignode.consensus.request.read.GetRegionInfoListPlan;
 import org.apache.iotdb.confignode.consensus.request.write.CreateDataPartitionPlan;
-import org.apache.iotdb.confignode.consensus.request.write.CreateRegionsPlan;
+import org.apache.iotdb.confignode.consensus.request.write.CreateRegionGroupsPlan;
 import org.apache.iotdb.confignode.consensus.request.write.CreateSchemaPartitionPlan;
 import org.apache.iotdb.confignode.consensus.request.write.SetStorageGroupPlan;
 import org.apache.iotdb.confignode.consensus.response.RegionInfoListResp;
@@ -100,7 +100,7 @@ public class PartitionInfoTest {
     partitionInfo.setStorageGroup(new SetStorageGroupPlan(new TStorageGroupSchema("root.test")));
 
     // Create a SchemaRegion
-    CreateRegionsPlan createRegionGroupsReq = new CreateRegionsPlan();
+    CreateRegionGroupsPlan createRegionGroupsReq = new CreateRegionGroupsPlan();
     TRegionReplicaSet schemaRegionReplicaSet =
         generateTRegionReplicaSet(
             testFlag.SchemaPartition.getFlag(),
@@ -110,7 +110,7 @@ public class PartitionInfoTest {
     partitionInfo.createRegionGroups(createRegionGroupsReq);
 
     // Create a DataRegion
-    createRegionGroupsReq = new CreateRegionsPlan();
+    createRegionGroupsReq = new CreateRegionGroupsPlan();
     TRegionReplicaSet dataRegionReplicaSet =
         generateTRegionReplicaSet(
             testFlag.DataPartition.getFlag(),
@@ -153,24 +153,24 @@ public class PartitionInfoTest {
     partitionInfo.setStorageGroup(new SetStorageGroupPlan(new TStorageGroupSchema("root.test")));
 
     // Create a SchemaRegion
-    CreateRegionsPlan createRegionsPlan = new CreateRegionsPlan();
+    CreateRegionGroupsPlan createRegionGroupsPlan = new CreateRegionGroupsPlan();
     TRegionReplicaSet schemaRegionReplicaSet =
         generateTRegionReplicaSet(
             testFlag.SchemaPartition.getFlag(),
             generateTConsensusGroupId(
                 testFlag.SchemaPartition.getFlag(), TConsensusGroupType.SchemaRegion));
-    createRegionsPlan.addRegionGroup("root.test", schemaRegionReplicaSet);
-    partitionInfo.createRegionGroups(createRegionsPlan);
+    createRegionGroupsPlan.addRegionGroup("root.test", schemaRegionReplicaSet);
+    partitionInfo.createRegionGroups(createRegionGroupsPlan);
 
     // Create a DataRegion
-    createRegionsPlan = new CreateRegionsPlan();
+    createRegionGroupsPlan = new CreateRegionGroupsPlan();
     TRegionReplicaSet dataRegionReplicaSet =
         generateTRegionReplicaSet(
             testFlag.DataPartition.getFlag(),
             generateTConsensusGroupId(
                 testFlag.DataPartition.getFlag(), TConsensusGroupType.DataRegion));
-    createRegionsPlan.addRegionGroup("root.test", dataRegionReplicaSet);
-    partitionInfo.createRegionGroups(createRegionsPlan);
+    createRegionGroupsPlan.addRegionGroup("root.test", dataRegionReplicaSet);
+    partitionInfo.createRegionGroups(createRegionGroupsPlan);
 
     GetRegionInfoListPlan regionReq = new GetRegionInfoListPlan();
     regionReq.setRegionType(null);