You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by yo...@apache.org on 2023/08/14 04:17:27 UTC

[iotdb] 01/01: Finish part1

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

yongzao pushed a commit to branch Fix-Region-creation-bugs
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit eb6c61c976f6b19ff759a492cd232edf29e4a7b4
Author: YongzaoDan <53...@qq.com>
AuthorDate: Mon Aug 14 12:17:16 2023 +0800

    Finish part1
---
 .../manager/load/balancer/RegionBalancer.java           | 17 ++++++-----------
 1 file changed, 6 insertions(+), 11 deletions(-)

diff --git a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/RegionBalancer.java b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/RegionBalancer.java
index 31cb976f3b1..c9965fe036c 100644
--- a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/RegionBalancer.java
+++ b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/load/balancer/RegionBalancer.java
@@ -74,18 +74,15 @@ public class RegionBalancer {
       Map<String, Integer> allotmentMap, TConsensusGroupType consensusGroupType)
       throws NotEnoughDataNodeException, DatabaseNotExistsException {
 
-    // The new RegionGroups will occupy online DataNodes firstly
-    List<TDataNodeConfiguration> onlineDataNodes =
-        getNodeManager().filterDataNodeThroughStatus(NodeStatus.Running);
     // Some new RegionGroups will have to occupy unknown DataNodes
     // if the number of online DataNodes is insufficient
     List<TDataNodeConfiguration> availableDataNodes =
         getNodeManager().filterDataNodeThroughStatus(NodeStatus.Running, NodeStatus.Unknown);
 
     // Make sure the number of available DataNodes is enough for allocating new RegionGroups
-    for (String storageGroup : allotmentMap.keySet()) {
+    for (String database : allotmentMap.keySet()) {
       int replicationFactor =
-          getClusterSchemaManager().getReplicationFactor(storageGroup, consensusGroupType);
+          getClusterSchemaManager().getReplicationFactor(database, consensusGroupType);
       if (availableDataNodes.size() < replicationFactor) {
         throw new NotEnoughDataNodeException();
       }
@@ -97,18 +94,16 @@ public class RegionBalancer {
         getPartitionManager().getAllReplicaSets(consensusGroupType);
 
     for (Map.Entry<String, Integer> entry : allotmentMap.entrySet()) {
-      String storageGroup = entry.getKey();
+      String database = entry.getKey();
       int allotment = entry.getValue();
       int replicationFactor =
-          getClusterSchemaManager().getReplicationFactor(storageGroup, consensusGroupType);
-      List<TDataNodeConfiguration> targetDataNodes =
-          onlineDataNodes.size() >= replicationFactor ? onlineDataNodes : availableDataNodes;
+          getClusterSchemaManager().getReplicationFactor(database, consensusGroupType);
 
       for (int i = 0; i < allotment; i++) {
         // Prepare input data
         Map<Integer, TDataNodeConfiguration> availableDataNodeMap = new ConcurrentHashMap<>();
         Map<Integer, Double> freeDiskSpaceMap = new ConcurrentHashMap<>();
-        targetDataNodes.forEach(
+        availableDataNodes.forEach(
             dataNodeConfiguration -> {
               int dataNodeId = dataNodeConfiguration.getLocation().getDataNodeId();
               availableDataNodeMap.put(dataNodeId, dataNodeConfiguration);
@@ -124,7 +119,7 @@ public class RegionBalancer {
                 replicationFactor,
                 new TConsensusGroupId(
                     consensusGroupType, getPartitionManager().generateNextRegionGroupId()));
-        createRegionGroupsPlan.addRegionGroup(storageGroup, newRegionGroup);
+        createRegionGroupsPlan.addRegionGroup(database, newRegionGroup);
 
         // Mark the new RegionGroup as allocated
         allocatedRegionGroups.add(newRegionGroup);