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");
}