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