This is an automated email from the ASF dual-hosted git repository. zyk pushed a commit to branch rc/1.1.0 in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 9493bbc15bbe1b8a1ee7eb4fdcd50cf848199b9d Author: ZhangHongYin <[email protected]> AuthorDate: Mon Mar 20 09:23:37 2023 +0800 [IOTDB-5681] Fix the creation of system database used by IoTDB Internal Reporter (#9339) (#9378) (cherry picked from commit be23689cceab4ab8eeb0d27fcdab49b1ed693edd) --- .../metrics/IoTDBInternalLocalReporter.java | 37 ++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/server/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java b/server/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java index 2714387735..a275bbad6a 100644 --- a/server/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java +++ b/server/src/main/java/org/apache/iotdb/db/service/metrics/IoTDBInternalLocalReporter.java @@ -19,8 +19,17 @@ package org.apache.iotdb.db.service.metrics; +import org.apache.iotdb.common.rpc.thrift.TSStatus; +import org.apache.iotdb.commons.client.IClientManager; +import org.apache.iotdb.commons.client.exception.ClientManagerException; import org.apache.iotdb.commons.concurrent.threadpool.ScheduledExecutorUtil; +import org.apache.iotdb.commons.consensus.ConfigRegionId; import org.apache.iotdb.commons.exception.IllegalPathException; +import org.apache.iotdb.confignode.rpc.thrift.TDatabaseSchema; +import org.apache.iotdb.confignode.rpc.thrift.TShowDatabaseResp; +import org.apache.iotdb.db.client.ConfigNodeClient; +import org.apache.iotdb.db.client.ConfigNodeClientManager; +import org.apache.iotdb.db.client.ConfigNodeInfo; import org.apache.iotdb.db.exception.query.QueryProcessException; import org.apache.iotdb.db.mpp.common.SessionInfo; import org.apache.iotdb.db.mpp.plan.Coordinator; @@ -35,6 +44,7 @@ import org.apache.iotdb.db.query.control.SessionManager; import org.apache.iotdb.metrics.config.MetricConfigDescriptor; import org.apache.iotdb.metrics.reporter.iotdb.IoTDBInternalReporter; import org.apache.iotdb.metrics.utils.InternalReporterType; +import org.apache.iotdb.metrics.utils.IoTDBMetricsUtils; import org.apache.iotdb.metrics.utils.ReporterType; import org.apache.iotdb.rpc.IoTDBConnectionException; import org.apache.iotdb.rpc.TSStatusCode; @@ -42,12 +52,14 @@ import org.apache.iotdb.service.rpc.thrift.TSInsertRecordReq; import org.apache.iotdb.session.util.SessionUtils; import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; +import org.apache.thrift.TException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.nio.ByteBuffer; import java.time.ZoneId; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.concurrent.Executors; @@ -69,6 +81,31 @@ public class IoTDBInternalLocalReporter extends IoTDBInternalReporter { partitionFetcher = ClusterPartitionFetcher.getInstance(); schemaFetcher = ClusterSchemaFetcher.getInstance(); sessionInfo = new SessionInfo(0, "root", ZoneId.systemDefault().getId()); + + IClientManager<ConfigRegionId, ConfigNodeClient> configNodeClientManager = + ConfigNodeClientManager.getInstance(); + try (ConfigNodeClient client = + configNodeClientManager.borrowClient(ConfigNodeInfo.CONFIG_REGION_ID)) { + TShowDatabaseResp showDatabaseResp = + client.showDatabase(Arrays.asList(IoTDBMetricsUtils.DATABASE.split("\\."))); + if (TSStatusCode.SUCCESS_STATUS.getStatusCode() == showDatabaseResp.getStatus().getCode() + && showDatabaseResp.getDatabaseInfoMapSize() == 0) { + TDatabaseSchema databaseSchema = new TDatabaseSchema(); + databaseSchema.setName(IoTDBMetricsUtils.DATABASE); + databaseSchema.setSchemaReplicationFactor(1); + databaseSchema.setDataReplicationFactor(1); + databaseSchema.setMaxSchemaRegionGroupNum(1); + databaseSchema.setMinSchemaRegionGroupNum(1); + databaseSchema.setMaxDataRegionGroupNum(1); + TSStatus tsStatus = client.setDatabase(databaseSchema); + if (TSStatusCode.SUCCESS_STATUS.getStatusCode() != tsStatus.getCode()) { + LOGGER.error("IoTDBSessionReporter checkOrCreateDatabase failed."); + } + } + } catch (ClientManagerException | TException e) { + // do nothing + LOGGER.warn("IoTDBSessionReporter checkOrCreateDatabase failed because ", e); + } } @Override
