This is an automated email from the ASF dual-hosted git repository. tanxinyu pushed a commit to branch enhance_system_database_auto_create in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 378ac1c4e8958ae64107e230195466f3d09a2d26 Author: OneSizeFitQuorum <[email protected]> AuthorDate: Thu Jul 18 15:16:13 2024 +0800 fix Signed-off-by: OneSizeFitQuorum <[email protected]> --- .../plan/analyze/cache/partition/PartitionCache.java | 20 ++++++++++++++++---- .../service/metrics/IoTDBInternalLocalReporter.java | 1 + .../metrics/reporter/iotdb/IoTDBSessionReporter.java | 2 +- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/partition/PartitionCache.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/partition/PartitionCache.java index 8fc726015c7..37b9ec9a14f 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/partition/PartitionCache.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/cache/partition/PartitionCache.java @@ -238,10 +238,14 @@ public class PartitionCache { // Try to get database needed to be created from missed device Set<String> storageGroupNamesNeedCreated = new HashSet<>(); for (String devicePath : result.getMissedDevices()) { - PartialPath storageGroupNameNeedCreated = - MetaUtils.getStorageGroupPathByLevel( - new PartialPath(devicePath), config.getDefaultStorageGroupLevel()); - storageGroupNamesNeedCreated.add(storageGroupNameNeedCreated.getFullPath()); + if (devicePath.startsWith(SchemaConstant.SYSTEM_DATABASE)) { + storageGroupNamesNeedCreated.add(SchemaConstant.SYSTEM_DATABASE); + } else { + PartialPath storageGroupNameNeedCreated = + MetaUtils.getStorageGroupPathByLevel( + new PartialPath(devicePath), config.getDefaultStorageGroupLevel()); + storageGroupNamesNeedCreated.add(storageGroupNameNeedCreated.getFullPath()); + } } // Try to create databases one by one until done or one database fail @@ -265,6 +269,14 @@ public class PartitionCache { } TDatabaseSchema storageGroupSchema = new TDatabaseSchema(); storageGroupSchema.setName(storageGroupName); + if (SchemaConstant.SYSTEM_DATABASE.equals(storageGroupName)) { + storageGroupSchema.setSchemaReplicationFactor(1); + storageGroupSchema.setDataReplicationFactor(1); + storageGroupSchema.setMinSchemaRegionGroupNum(1); + storageGroupSchema.setMaxSchemaRegionGroupNum(1); + storageGroupSchema.setMaxDataRegionGroupNum(1); + storageGroupSchema.setMaxDataRegionGroupNum(1); + } TSStatus tsStatus = client.setDatabase(storageGroupSchema); if (TSStatusCode.SUCCESS_STATUS.getStatusCode() == tsStatus.getCode()) { successFullyCreatedStorageGroup.add(storageGroupName); diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java index 5f581f271ea..f33624fb0b2 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java @@ -102,6 +102,7 @@ public class IoTDBInternalLocalReporter extends IoTDBInternalReporter { databaseSchema.setMaxSchemaRegionGroupNum(1); databaseSchema.setMinSchemaRegionGroupNum(1); databaseSchema.setMaxDataRegionGroupNum(1); + databaseSchema.setMinDataRegionGroupNum(1); TSStatus tsStatus = client.setDatabase(databaseSchema); if (TSStatusCode.SUCCESS_STATUS.getStatusCode() != tsStatus.getCode()) { LOGGER.error("IoTDBSessionReporter checkOrCreateDatabase failed."); diff --git a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBSessionReporter.java b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBSessionReporter.java index c5d431d1960..968fa4cc476 100644 --- a/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBSessionReporter.java +++ b/iotdb-core/metrics/interface/src/main/java/org/apache/iotdb/metrics/reporter/iotdb/IoTDBSessionReporter.java @@ -75,7 +75,7 @@ public class IoTDBSessionReporter extends IoTDBReporter { if (!result.hasNext()) { try (SessionDataSetWrapper result2 = this.sessionPool.executeQueryStatement( - "CREATE " + "CREATE DATABASE " + metricConfig.getInternalDatabase() + " WITH SCHEMA_REPLICATION_FACTOR=1, DATA_REPLICATION_FACTOR=1, SCHEMA_REGION_GROUP_NUM=1, DATA_REGION_GROUP_NUM=1")) { if (!result2.hasNext()) {
