You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by xi...@apache.org on 2022/07/27 03:07:14 UTC

[iotdb] branch master updated: [IOTDB-3937] Fix the initialization of IoTDB Reporter in metric framework. (#6784)

This is an automated email from the ASF dual-hosted git repository.

xingtanzjr pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new 975eaa5bd2 [IOTDB-3937] Fix the initialization of IoTDB Reporter in metric framework. (#6784)
975eaa5bd2 is described below

commit 975eaa5bd283b98cf6e64944c2ed734da438c2b3
Author: ZhangHongYin <46...@users.noreply.github.com>
AuthorDate: Wed Jul 27 11:07:09 2022 +0800

    [IOTDB-3937] Fix the initialization of IoTDB Reporter in metric framework. (#6784)
---
 .../metrics/dropwizard/reporter/IoTDBReporter.java |  5 ++--
 .../{MetricsUtils.java => IoTDBMetricsUtils.java}  | 28 +++++++++++++++++++---
 .../micrometer/reporter/IoTDBMeterRegistry.java    |  5 ++--
 3 files changed, 31 insertions(+), 7 deletions(-)

diff --git a/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/reporter/IoTDBReporter.java b/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/reporter/IoTDBReporter.java
index b2452d0dea..feb335ea83 100644
--- a/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/reporter/IoTDBReporter.java
+++ b/metrics/dropwizard-metrics/src/main/java/org/apache/iotdb/metrics/dropwizard/reporter/IoTDBReporter.java
@@ -22,7 +22,7 @@ package org.apache.iotdb.metrics.dropwizard.reporter;
 import org.apache.iotdb.metrics.config.MetricConfig;
 import org.apache.iotdb.metrics.config.MetricConfigDescriptor;
 import org.apache.iotdb.metrics.dropwizard.MetricName;
-import org.apache.iotdb.metrics.utils.MetricsUtils;
+import org.apache.iotdb.metrics.utils.IoTDBMetricsUtils;
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.session.pool.SessionPool;
@@ -80,6 +80,7 @@ public class IoTDBReporter extends ScheduledReporter {
             ioTDBReporterConfig.getUsername(),
             ioTDBReporterConfig.getPassword(),
             ioTDBReporterConfig.getMaxConnectionNumber());
+    IoTDBMetricsUtils.checkOrCreateStorageGroup(sessionPool);
   }
 
   @Override
@@ -232,7 +233,7 @@ public class IoTDBReporter extends ScheduledReporter {
 
   private void updateValue(String name, Map<String, String> labels, Object value) {
     if (value != null) {
-      String deviceId = MetricsUtils.generatePath(name, labels);
+      String deviceId = IoTDBMetricsUtils.generatePath(name, labels);
       List<String> sensors = Collections.singletonList("value");
 
       List<TSDataType> dataTypes = new ArrayList<>();
diff --git a/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/MetricsUtils.java b/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/IoTDBMetricsUtils.java
similarity index 63%
rename from metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/MetricsUtils.java
rename to metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/IoTDBMetricsUtils.java
index 505d4b8a51..6bae939138 100644
--- a/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/MetricsUtils.java
+++ b/metrics/interface/src/main/java/org/apache/iotdb/metrics/utils/IoTDBMetricsUtils.java
@@ -21,18 +21,27 @@ package org.apache.iotdb.metrics.utils;
 
 import org.apache.iotdb.metrics.config.MetricConfig;
 import org.apache.iotdb.metrics.config.MetricConfigDescriptor;
+import org.apache.iotdb.rpc.IoTDBConnectionException;
+import org.apache.iotdb.rpc.StatementExecutionException;
+import org.apache.iotdb.session.pool.SessionDataSetWrapper;
+import org.apache.iotdb.session.pool.SessionPool;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.util.Map;
 
-public class MetricsUtils {
+public class IoTDBMetricsUtils {
+  private static final Logger logger = LoggerFactory.getLogger(IoTDBMetricsUtils.class);
   private static final MetricConfig metricConfig =
       MetricConfigDescriptor.getInstance().getMetricConfig();
+  private static final String STORAGE_GROUP =
+      "root." + metricConfig.getIoTDBReporterConfig().getDatabase();
 
   public static String generatePath(String name, Map<String, String> labels) {
     StringBuilder stringBuilder = new StringBuilder();
     stringBuilder
-        .append("root.")
-        .append(metricConfig.getIoTDBReporterConfig().getDatabase())
+        .append(STORAGE_GROUP)
         .append(".`")
         .append(metricConfig.getRpcAddress())
         .append(":")
@@ -53,4 +62,17 @@ public class MetricsUtils {
     }
     return stringBuilder.toString();
   }
+
+  public static void checkOrCreateStorageGroup(SessionPool session) {
+    try (SessionDataSetWrapper result =
+        session.executeQueryStatement("show storage group " + STORAGE_GROUP)) {
+      if (!result.hasNext()) {
+        session.setStorageGroup(STORAGE_GROUP);
+      }
+    } catch (IoTDBConnectionException e) {
+      logger.error("CheckOrCreateStorageGroup failed because ", e);
+    } catch (StatementExecutionException e) {
+      // do nothing
+    }
+  }
 }
diff --git a/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/reporter/IoTDBMeterRegistry.java b/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/reporter/IoTDBMeterRegistry.java
index bc481f8b5b..46557b3fbf 100644
--- a/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/reporter/IoTDBMeterRegistry.java
+++ b/metrics/micrometer-metrics/src/main/java/org/apache/iotdb/metrics/micrometer/reporter/IoTDBMeterRegistry.java
@@ -21,7 +21,7 @@ package org.apache.iotdb.metrics.micrometer.reporter;
 
 import org.apache.iotdb.metrics.config.MetricConfig;
 import org.apache.iotdb.metrics.config.MetricConfigDescriptor;
-import org.apache.iotdb.metrics.utils.MetricsUtils;
+import org.apache.iotdb.metrics.utils.IoTDBMetricsUtils;
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
 import org.apache.iotdb.session.pool.SessionPool;
@@ -57,6 +57,7 @@ public class IoTDBMeterRegistry extends StepMeterRegistry {
             ioTDBReporterConfig.getUsername(),
             ioTDBReporterConfig.getPassword(),
             ioTDBReporterConfig.getMaxConnectionNumber());
+    IoTDBMetricsUtils.checkOrCreateStorageGroup(sessionPool);
   }
 
   @Override
@@ -128,7 +129,7 @@ public class IoTDBMeterRegistry extends StepMeterRegistry {
 
   private void updateValue(String name, Map<String, String> labels, Double value, Long time) {
     if (value != null) {
-      String deviceId = MetricsUtils.generatePath(name, labels);
+      String deviceId = IoTDBMetricsUtils.generatePath(name, labels);
       List<String> sensors = Collections.singletonList("value");
       List<TSDataType> dataTypes = Collections.singletonList(TSDataType.DOUBLE);
       List<Object> values = Collections.singletonList(value);