You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bookkeeper.apache.org by si...@apache.org on 2018/01/30 20:04:55 UTC
[bookkeeper] branch branch-4.6 updated: ISSUE #1078: use
CachingStatsProvider underly PrometheusMetricsProvider
This is an automated email from the ASF dual-hosted git repository.
sijie pushed a commit to branch branch-4.6
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git
The following commit(s) were added to refs/heads/branch-4.6 by this push:
new 3ffae0d ISSUE #1078: use CachingStatsProvider underly PrometheusMetricsProvider
3ffae0d is described below
commit 3ffae0de55c02c5fd7cffb1cda03fcd8f0c9d3ce
Author: Jia Zhai <zh...@apache.org>
AuthorDate: Tue Jan 30 12:04:30 2018 -0800
ISSUE #1078: use CachingStatsProvider underly PrometheusMetricsProvider
Descriptions of the changes in this PR:
- add CachingStatsProvider to wrapper PrometheusMetricsProvider;
- add test verify the cache.
Master Issue: #1078
Author: Jia Zhai <zh...@apache.org>
Reviewers: Sijie Guo <si...@apache.org>, Matteo Merli <mm...@apache.org>
This closes #1081 from jiazhai/issue-1078, closes #1078
(cherry picked from commit d5dffc48a4eda6178bd25610097f2e49763f2377)
Signed-off-by: Sijie Guo <si...@apache.org>
---
.../prometheus/PrometheusMetricsProvider.java | 25 +++++++++++++++++++++-
.../prometheus/TestPrometheusMetricsProvider.java | 23 ++++++++++++++++++++
2 files changed, 47 insertions(+), 1 deletion(-)
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 6c84dea..4008c04 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.MemoryPoolsExports;
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 @@ public class PrometheusMetricsProvider implements StatsProvider {
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 class PrometheusMetricsProvider implements StatsProvider {
@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 e90ccee..84ad5f4 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,11 +17,15 @@
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 {
@@ -29,6 +33,25 @@ 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");
long value = counter.get();
--
To stop receiving notification emails like this one, please contact
sijie@apache.org.