You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@bookkeeper.apache.org by GitBox <gi...@apache.org> on 2018/01/30 20:04:42 UTC

[GitHub] sijie closed pull request #1081: Issue 1078: use CachingStatsProvider underly PrometheusMetricsProvider

sijie closed pull request #1081: Issue 1078: use CachingStatsProvider underly PrometheusMetricsProvider
URL: https://github.com/apache/bookkeeper/pull/1081
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/PrometheusMetricsProvider.java b/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/PrometheusMetricsProvider.java
index 6c84dea7d..4008c0486 100644
--- a/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/PrometheusMetricsProvider.java
+++ b/bookkeeper-stats-providers/prometheus-metrics-provider/src/main/java/org/apache/bookkeeper/stats/prometheus/PrometheusMetricsProvider.java
@@ -23,6 +23,7 @@
 import io.prometheus.client.hotspot.StandardExports;
 import io.prometheus.client.hotspot.ThreadExports;
 import java.net.InetSocketAddress;
+import org.apache.bookkeeper.stats.CachingStatsProvider;
 import org.apache.bookkeeper.stats.StatsLogger;
 import org.apache.bookkeeper.stats.StatsProvider;
 import org.apache.commons.configuration.Configuration;
@@ -39,6 +40,28 @@
 
     private final CollectorRegistry registry = new CollectorRegistry();
     private Server server;
+    private final CachingStatsProvider cachingStatsProvider;
+
+    public PrometheusMetricsProvider() {
+        this.cachingStatsProvider = new CachingStatsProvider(
+            new StatsProvider() {
+                @Override
+                public void start(Configuration conf) {
+                    // nop
+                }
+
+                @Override
+                public void stop() {
+                    // nop
+                }
+
+                @Override
+                public StatsLogger getStatsLogger(String scope) {
+                    return new PrometheusStatsLogger(registry, scope);
+                }
+            }
+        );
+    }
 
     @Override
     public void start(Configuration conf) {
@@ -79,7 +102,7 @@ public void stop() {
 
     @Override
     public StatsLogger getStatsLogger(String scope) {
-        return new PrometheusStatsLogger(registry, scope);
+        return this.cachingStatsProvider.getStatsLogger(scope);
     }
 
     private static final Logger log = LoggerFactory.getLogger(PrometheusMetricsProvider.class);
diff --git a/bookkeeper-stats-providers/prometheus-metrics-provider/src/test/java/org/apache/bookkeeper/stats/prometheus/TestPrometheusMetricsProvider.java b/bookkeeper-stats-providers/prometheus-metrics-provider/src/test/java/org/apache/bookkeeper/stats/prometheus/TestPrometheusMetricsProvider.java
index e90cceeb0..84ad5f4b0 100644
--- a/bookkeeper-stats-providers/prometheus-metrics-provider/src/test/java/org/apache/bookkeeper/stats/prometheus/TestPrometheusMetricsProvider.java
+++ b/bookkeeper-stats-providers/prometheus-metrics-provider/src/test/java/org/apache/bookkeeper/stats/prometheus/TestPrometheusMetricsProvider.java
@@ -17,17 +17,40 @@
 package org.apache.bookkeeper.stats.prometheus;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
 
 import io.prometheus.client.Collector;
 import io.prometheus.client.CollectorRegistry;
 import java.lang.reflect.Field;
 import java.util.Map;
+import org.apache.bookkeeper.stats.Counter;
+import org.apache.bookkeeper.stats.OpStatsLogger;
+import org.apache.bookkeeper.stats.StatsLogger;
 import org.junit.Test;
 
 public class TestPrometheusMetricsProvider {
 
     private final CollectorRegistry registry = new CollectorRegistry();
 
+    @Test
+    public void testCache() {
+        PrometheusMetricsProvider provider = new PrometheusMetricsProvider();
+
+        StatsLogger statsLogger =  provider.getStatsLogger("test");
+
+        OpStatsLogger opStatsLogger1 = statsLogger.getOpStatsLogger("optest");
+        OpStatsLogger opStatsLogger2 = statsLogger.getOpStatsLogger("optest");
+        assertSame(opStatsLogger1, opStatsLogger2);
+
+        Counter counter1 = statsLogger.getCounter("countertest");
+        Counter counter2 = statsLogger.getCounter("countertest");
+        assertSame(counter1, counter2);
+
+        StatsLogger scope1 = statsLogger.scope("scopetest");
+        StatsLogger scope2 = statsLogger.scope("scopetest");
+        assertSame(scope1, scope2);
+    }
+
     @Test
     public void testCounter() {
         PrometheusCounter counter = new PrometheusCounter(registry, "testcounter");


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services