diff options
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.java | 25 |
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; } } |