You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by zy...@apache.org on 2023/03/20 06:39:30 UTC

[iotdb] 13/13: [IOTDB-5681] Fix the creation of system database used by IoTDB Internal Reporter (#9339) (#9378)

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 <46...@users.noreply.github.com>
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