This is an automated email from the ASF dual-hosted git repository. caogaofei pushed a commit to branch beyyes-rc1.0.1 in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit ea2a16275dc027b675750b5ed380b3d680355bff Author: Beyyes <[email protected]> AuthorDate: Wed Feb 1 20:22:22 2023 +0800 add LeastDataRegionGroupNum examination --- .../iotdb/confignode/conf/ConfigNodeConfig.java | 11 +++++++++ .../confignode/conf/ConfigNodeDescriptor.java | 9 ++++---- .../confignode/manager/ClusterSchemaManager.java | 26 ++++++++++++---------- 3 files changed, 30 insertions(+), 16 deletions(-) diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeConfig.java b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeConfig.java index 4be8758fde..63bd4f02fa 100644 --- a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeConfig.java +++ b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeConfig.java @@ -100,6 +100,9 @@ public class ConfigNodeConfig { /** The least number of DataRegionGroup for each Database. */ private volatile int leastDataRegionGroupNum = 5; + /** Indicate whether the leastDataRegionGroupNum is set by user, if true, lock it. */ + private volatile boolean leastDataRegionGroupNumSetByUser = false; + /** RegionGroup allocate policy. */ private RegionBalancer.RegionGroupAllocatePolicy regionGroupAllocatePolicy = RegionBalancer.RegionGroupAllocatePolicy.GREEDY; @@ -507,6 +510,14 @@ public class ConfigNodeConfig { this.leastDataRegionGroupNum = leastDataRegionGroupNum; } + public boolean isLeastDataRegionGroupNumSetByUser() { + return leastDataRegionGroupNumSetByUser; + } + + public void setLeastDataRegionGroupNumSetByUser(boolean leastDataRegionGroupNumSetByUser) { + this.leastDataRegionGroupNumSetByUser = leastDataRegionGroupNumSetByUser; + } + public RegionBalancer.RegionGroupAllocatePolicy getRegionGroupAllocatePolicy() { return regionGroupAllocatePolicy; } diff --git a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java index 63d30fc6cd..ca4d7e6b25 100644 --- a/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java +++ b/confignode/src/main/java/org/apache/iotdb/confignode/conf/ConfigNodeDescriptor.java @@ -254,10 +254,11 @@ public class ConfigNodeDescriptor { "data_region_per_processor", String.valueOf(conf.getDataRegionPerProcessor())) .trim())); - conf.setLeastDataRegionGroupNum( - Integer.parseInt( - properties.getProperty( - "least_data_region_group_num", String.valueOf(conf.getLeastDataRegionGroupNum())))); + if (properties.getProperty("least_data_region_group_num") != null) { + conf.setLeastDataRegionGroupNum( + Integer.parseInt(properties.getProperty("least_data_region_group_num"))); + conf.setLeastDataRegionGroupNumSetByUser(true); + } try { conf.setRegionAllocateStrategy( 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 91746ace72..6e8250b87d 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 @@ -326,18 +326,20 @@ public class ClusterSchemaManager { // Adjust least_data_region_group_num // TODO: The least_data_region_group_num should be maintained separately by different // TODO: StorageGroup - int leastDataRegionGroupNum = - (int) - Math.ceil( - (double) totalCpuCoreNum - / (double) (storageGroupNum * CONF.getDataReplicationFactor())); - if (leastDataRegionGroupNum < CONF.getLeastDataRegionGroupNum()) { - // The leastDataRegionGroupNum should be the maximum integer that satisfy: - // 1 <= leastDataRegionGroupNum <= 5(default) - CONF.setLeastDataRegionGroupNum(leastDataRegionGroupNum); - LOGGER.info( - "[AdjustRegionGroupNum] The least number of DataRegionGroups per Database is adjusted to: {}", - leastDataRegionGroupNum); + if (!CONF.isLeastDataRegionGroupNumSetByUser()) { + int leastDataRegionGroupNum = + (int) + Math.ceil( + (double) totalCpuCoreNum + / (double) (storageGroupNum * CONF.getDataReplicationFactor())); + if (leastDataRegionGroupNum < CONF.getLeastDataRegionGroupNum()) { + // The leastDataRegionGroupNum should be the maximum integer that satisfy: + // 1 <= leastDataRegionGroupNum <= 5(default) + CONF.setLeastDataRegionGroupNum(leastDataRegionGroupNum); + LOGGER.info( + "[AdjustRegionGroupNum] The least number of DataRegionGroups per Database is adjusted to: {}", + leastDataRegionGroupNum); + } } AdjustMaxRegionGroupNumPlan adjustMaxRegionGroupNumPlan = new AdjustMaxRegionGroupNumPlan();
