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

rong 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 d9fb0c1  [IOTDB-2819][metrics] modify session to session pool. (#5369)
d9fb0c1 is described below

commit d9fb0c1d02809ac90ae00dd15e4b4dc2d6668103
Author: ZhangHongYin <[email protected]>
AuthorDate: Fri Apr 1 17:54:15 2022 +0800

    [IOTDB-2819][metrics] modify session to session pool. (#5369)
    
    * [metric] modify session to session pool.
    
    * [config] fix iotdb-metric.yml
---
 docs/UserGuide/Maintenance-Tools/Metric-Tool.md    |  1 +
 docs/zh/UserGuide/Maintenance-Tools/Metric-Tool.md |  1 +
 .../metrics/dropwizard/reporter/IoTDBReporter.java | 40 ++++++----------------
 .../main/assembly/resources/conf/iotdb-metric.yml  |  1 +
 .../apache/iotdb/metrics/config/MetricConfig.java  | 10 ++++++
 .../interface/src/test/resources/iotdb-metric.yml  |  1 +
 .../micrometer/reporter/IoTDBMeterRegistry.java    | 32 +++++------------
 7 files changed, 33 insertions(+), 53 deletions(-)

diff --git a/docs/UserGuide/Maintenance-Tools/Metric-Tool.md 
b/docs/UserGuide/Maintenance-Tools/Metric-Tool.md
index 83150b1..87be02f 100644
--- a/docs/UserGuide/Maintenance-Tools/Metric-Tool.md
+++ b/docs/UserGuide/Maintenance-Tools/Metric-Tool.md
@@ -240,6 +240,7 @@ ioTDBReporterConfig:
   port: 6667
   username: root
   password: root
+  maxConnectionNumber: 3
   database: _metric
   pushPeriodInSecond: 15
 ```
diff --git a/docs/zh/UserGuide/Maintenance-Tools/Metric-Tool.md 
b/docs/zh/UserGuide/Maintenance-Tools/Metric-Tool.md
index 5d78d90..4681fef 100644
--- a/docs/zh/UserGuide/Maintenance-Tools/Metric-Tool.md
+++ b/docs/zh/UserGuide/Maintenance-Tools/Metric-Tool.md
@@ -241,6 +241,7 @@ ioTDBReporterConfig:
   port: 6667
   username: root
   password: root
+  maxConnectionNumber: 3
   database: _metric
   pushPeriodInSecond: 15
 ```
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 f9b08dd..93ab733 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
@@ -25,17 +25,10 @@ import org.apache.iotdb.metrics.dropwizard.MetricName;
 import org.apache.iotdb.metrics.utils.MetricsUtils;
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
-import org.apache.iotdb.session.Session;
+import org.apache.iotdb.session.pool.SessionPool;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
-import com.codahale.metrics.Counter;
-import com.codahale.metrics.Gauge;
-import com.codahale.metrics.Histogram;
-import com.codahale.metrics.Meter;
-import com.codahale.metrics.MetricFilter;
-import com.codahale.metrics.MetricRegistry;
-import com.codahale.metrics.ScheduledReporter;
-import com.codahale.metrics.Snapshot;
+import com.codahale.metrics.*;
 import com.codahale.metrics.Timer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -51,7 +44,7 @@ public class IoTDBReporter extends ScheduledReporter {
   private static final TimeUnit DURATION_UNIT = TimeUnit.MILLISECONDS;
   private static final TimeUnit RATE_UNIT = TimeUnit.SECONDS;
   private final String prefix;
-  private final Session session;
+  private final SessionPool sessionPool;
 
   protected IoTDBReporter(
       MetricRegistry registry,
@@ -68,34 +61,20 @@ public class IoTDBReporter extends ScheduledReporter {
         executor,
         shutdownExecutorOnStop);
     this.prefix = prefix;
-    this.session =
-        new Session(
+    this.sessionPool =
+        new SessionPool(
             ioTDBReporterConfig.getHost(),
             ioTDBReporterConfig.getPort(),
             ioTDBReporterConfig.getUsername(),
             ioTDBReporterConfig.getPassword(),
-            true);
-  }
-
-  @Override
-  public void start(long period, TimeUnit unit) {
-    super.start(period, unit);
-    try {
-      session.open();
-    } catch (IoTDBConnectionException e) {
-      logger.error("Failed to add session", e);
-    }
+            ioTDBReporterConfig.getMaxConnectionNumber());
   }
 
   @Override
   public void stop() {
     super.stop();
-    try {
-      if (session != null) {
-        session.close();
-      }
-    } catch (IoTDBConnectionException e) {
-      logger.error("Failed to close session.");
+    if (sessionPool != null) {
+      sessionPool.close();
     }
   }
 
@@ -242,9 +221,10 @@ public class IoTDBReporter extends ScheduledReporter {
         dataTypes.add(TSDataType.TEXT);
         value = value.toString();
       }
+      List<Object> values = Collections.singletonList(value);
 
       try {
-        session.insertRecord(deviceId, System.currentTimeMillis(), sensors, 
dataTypes, value);
+        sessionPool.insertRecord(deviceId, System.currentTimeMillis(), 
sensors, dataTypes, values);
       } catch (IoTDBConnectionException | StatementExecutionException e) {
         logger.warn("Failed to insert record");
       }
diff --git 
a/metrics/interface/src/main/assembly/resources/conf/iotdb-metric.yml 
b/metrics/interface/src/main/assembly/resources/conf/iotdb-metric.yml
index 7064ed4..53e9bef 100644
--- a/metrics/interface/src/main/assembly/resources/conf/iotdb-metric.yml
+++ b/metrics/interface/src/main/assembly/resources/conf/iotdb-metric.yml
@@ -44,5 +44,6 @@ ioTDBReporterConfig:
   port: 6667
   username: root
   password: root
+  maxConnectionNumber: 3
   database: _metric
   pushPeriodInSecond: 15
\ No newline at end of file
diff --git 
a/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfig.java
 
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfig.java
index 268bb31..f4c0c1f 100644
--- 
a/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfig.java
+++ 
b/metrics/interface/src/main/java/org/apache/iotdb/metrics/config/MetricConfig.java
@@ -59,6 +59,8 @@ public class MetricConfig {
     private String username = "root";
     /** The password of iotdb */
     private String password = "root";
+    /** The max number of connection */
+    private Integer maxConnectionNumber = 3;
     /** The monitor database of iotdb */
     private String database = "_metric";
     /** The period of data pushed by the reporter to the remote monitoring 
system. */
@@ -96,6 +98,14 @@ public class MetricConfig {
       this.password = password;
     }
 
+    public Integer getMaxConnectionNumber() {
+      return maxConnectionNumber;
+    }
+
+    public void setMaxConnectionNumber(Integer maxConnectionNumber) {
+      this.maxConnectionNumber = maxConnectionNumber;
+    }
+
     public String getDatabase() {
       return database;
     }
diff --git a/metrics/interface/src/test/resources/iotdb-metric.yml 
b/metrics/interface/src/test/resources/iotdb-metric.yml
index 7064ed4..53e9bef 100644
--- a/metrics/interface/src/test/resources/iotdb-metric.yml
+++ b/metrics/interface/src/test/resources/iotdb-metric.yml
@@ -44,5 +44,6 @@ ioTDBReporterConfig:
   port: 6667
   username: root
   password: root
+  maxConnectionNumber: 3
   database: _metric
   pushPeriodInSecond: 15
\ No newline at end of file
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 979919c..79525be 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
@@ -24,7 +24,7 @@ import org.apache.iotdb.metrics.config.MetricConfigDescriptor;
 import org.apache.iotdb.metrics.utils.MetricsUtils;
 import org.apache.iotdb.rpc.IoTDBConnectionException;
 import org.apache.iotdb.rpc.StatementExecutionException;
-import org.apache.iotdb.session.Session;
+import org.apache.iotdb.session.pool.SessionPool;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 
 import io.micrometer.core.instrument.Clock;
@@ -40,45 +40,30 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.TimeUnit;
 
 public class IoTDBMeterRegistry extends StepMeterRegistry {
   private static final Logger logger = 
LoggerFactory.getLogger(IoTDBMeterRegistry.class);
   private static final MetricConfig.IoTDBReporterConfig ioTDBReporterConfig =
       
MetricConfigDescriptor.getInstance().getMetricConfig().getIoTDBReporterConfig();
-  private final Session session;
+  private final SessionPool sessionPool;
 
   public IoTDBMeterRegistry(StepRegistryConfig config, Clock clock) {
     super(config, clock);
-    session =
-        new Session(
+    this.sessionPool =
+        new SessionPool(
             ioTDBReporterConfig.getHost(),
             ioTDBReporterConfig.getPort(),
             ioTDBReporterConfig.getUsername(),
             ioTDBReporterConfig.getPassword(),
-            true);
-  }
-
-  @Override
-  public void start(ThreadFactory threadFactory) {
-    super.start(threadFactory);
-    try {
-      session.open();
-    } catch (IoTDBConnectionException e) {
-      logger.error("Failed to add session", e);
-    }
+            ioTDBReporterConfig.getMaxConnectionNumber());
   }
 
   @Override
   public void stop() {
     super.stop();
-    try {
-      if (session != null) {
-        session.close();
-      }
-    } catch (IoTDBConnectionException e) {
-      logger.error("Failed to close session.");
+    if (sessionPool != null) {
+      sessionPool.close();
     }
   }
 
@@ -144,9 +129,10 @@ public class IoTDBMeterRegistry extends StepMeterRegistry {
       String deviceId = MetricsUtils.generatePath(name, labels);
       List<String> sensors = Collections.singletonList("value");
       List<TSDataType> dataTypes = 
Collections.singletonList(TSDataType.DOUBLE);
+      List<Object> values = Collections.singletonList(value);
 
       try {
-        session.insertRecord(deviceId, time, sensors, dataTypes, value);
+        sessionPool.insertRecord(deviceId, time, sensors, dataTypes, values);
       } catch (IoTDBConnectionException | StatementExecutionException e) {
         logger.warn("Failed to insert record");
       }

Reply via email to