summaryrefslogtreecommitdiff
path: root/src/main/java/com/zaxxer/hikari/metrics/prometheus/PrometheusMetricsTrackerFactory.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/zaxxer/hikari/metrics/prometheus/PrometheusMetricsTrackerFactory.java')
-rw-r--r--src/main/java/com/zaxxer/hikari/metrics/prometheus/PrometheusMetricsTrackerFactory.java25
1 files changed, 17 insertions, 8 deletions
diff --git a/src/main/java/com/zaxxer/hikari/metrics/prometheus/PrometheusMetricsTrackerFactory.java b/src/main/java/com/zaxxer/hikari/metrics/prometheus/PrometheusMetricsTrackerFactory.java
index 2a0b5c3..0d18a35 100644
--- a/src/main/java/com/zaxxer/hikari/metrics/prometheus/PrometheusMetricsTrackerFactory.java
+++ b/src/main/java/com/zaxxer/hikari/metrics/prometheus/PrometheusMetricsTrackerFactory.java
@@ -20,20 +20,29 @@ import com.zaxxer.hikari.metrics.IMetricsTracker;
import com.zaxxer.hikari.metrics.MetricsTrackerFactory;
import com.zaxxer.hikari.metrics.PoolStats;
-import io.prometheus.client.Collector;
-
/**
* <pre>{@code
* HikariConfig config = new HikariConfig();
* config.setMetricsTrackerFactory(new PrometheusMetricsTrackerFactory());
* }</pre>
*/
-public class PrometheusMetricsTrackerFactory implements MetricsTrackerFactory
-{
+public class PrometheusMetricsTrackerFactory implements MetricsTrackerFactory {
+
+ private static HikariCPCollector collector;
+
@Override
- public IMetricsTracker create(String poolName, PoolStats poolStats)
- {
- Collector collector = new HikariCPCollector(poolName, poolStats).register();
- return new PrometheusMetricsTracker(poolName, collector);
+ public IMetricsTracker create(String poolName, PoolStats poolStats) {
+ getCollector().add(poolName, poolStats);
+ return new PrometheusMetricsTracker(poolName);
+ }
+
+ /**
+ * initialize and register collector if it isn't initialized yet
+ */
+ private HikariCPCollector getCollector() {
+ if (collector == null) {
+ collector = new HikariCPCollector().register();
+ }
+ return collector;
}
}