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);