You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by uc...@apache.org on 2016/12/06 14:49:23 UTC
[2/2] flink git commit: [FLINK-5261] [metrics] Clean up meters in
ScheduledDropwizardReporter
[FLINK-5261] [metrics] Clean up meters in ScheduledDropwizardReporter
This closes #2944.
Project: http://git-wip-us.apache.org/repos/asf/flink/repo
Commit: http://git-wip-us.apache.org/repos/asf/flink/commit/f7f7b487
Tree: http://git-wip-us.apache.org/repos/asf/flink/tree/f7f7b487
Diff: http://git-wip-us.apache.org/repos/asf/flink/diff/f7f7b487
Branch: refs/heads/master
Commit: f7f7b487b705e31062e5f00508a92bed5b185674
Parents: e5f4e3d
Author: zentol <ch...@apache.org>
Authored: Mon Dec 5 14:00:10 2016 +0100
Committer: Ufuk Celebi <uc...@apache.org>
Committed: Tue Dec 6 14:06:51 2016 +0100
----------------------------------------------------------------------
.../dropwizard/ScheduledDropwizardReporter.java | 19 +++-
.../ScheduledDropwizardReporterTest.java | 92 ++++++++++++++++++++
2 files changed, 108 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flink/blob/f7f7b487/flink-metrics/flink-metrics-dropwizard/src/main/java/org/apache/flink/dropwizard/ScheduledDropwizardReporter.java
----------------------------------------------------------------------
diff --git a/flink-metrics/flink-metrics-dropwizard/src/main/java/org/apache/flink/dropwizard/ScheduledDropwizardReporter.java b/flink-metrics/flink-metrics-dropwizard/src/main/java/org/apache/flink/dropwizard/ScheduledDropwizardReporter.java
index b7e83b6..380abc4 100644
--- a/flink-metrics/flink-metrics-dropwizard/src/main/java/org/apache/flink/dropwizard/ScheduledDropwizardReporter.java
+++ b/flink-metrics/flink-metrics-dropwizard/src/main/java/org/apache/flink/dropwizard/ScheduledDropwizardReporter.java
@@ -21,11 +21,11 @@ package org.apache.flink.dropwizard;
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.Reporter;
import com.codahale.metrics.ScheduledReporter;
-
import org.apache.flink.annotation.PublicEvolving;
+import org.apache.flink.annotation.VisibleForTesting;
+import org.apache.flink.dropwizard.metrics.DropwizardHistogramWrapper;
import org.apache.flink.dropwizard.metrics.DropwizardMeterWrapper;
import org.apache.flink.dropwizard.metrics.FlinkCounterWrapper;
-import org.apache.flink.dropwizard.metrics.DropwizardHistogramWrapper;
import org.apache.flink.dropwizard.metrics.FlinkGaugeWrapper;
import org.apache.flink.dropwizard.metrics.FlinkHistogramWrapper;
import org.apache.flink.dropwizard.metrics.FlinkMeterWrapper;
@@ -82,15 +82,26 @@ public abstract class ScheduledDropwizardReporter implements MetricReporter, Sch
// Getters
// ------------------------------------------------------------------------
- // used for testing purposes
+ @VisibleForTesting
Map<Counter, String> getCounters() {
return counters;
}
+ @VisibleForTesting
Map<Meter, String> getMeters() {
return meters;
}
+ @VisibleForTesting
+ Map<Gauge<?>, String> getGauges() {
+ return gauges;
+ }
+
+ @VisibleForTesting
+ Map<Histogram, String> getHistograms() {
+ return histograms;
+ }
+
// ------------------------------------------------------------------------
// life cycle
// ------------------------------------------------------------------------
@@ -157,6 +168,8 @@ public abstract class ScheduledDropwizardReporter implements MetricReporter, Sch
fullName = gauges.remove(metric);
} else if (metric instanceof Histogram) {
fullName = histograms.remove(metric);
+ } else if (metric instanceof Meter) {
+ fullName = meters.remove(metric);
} else {
fullName = null;
}
http://git-wip-us.apache.org/repos/asf/flink/blob/f7f7b487/flink-metrics/flink-metrics-dropwizard/src/test/java/org/apache/flink/dropwizard/ScheduledDropwizardReporterTest.java
----------------------------------------------------------------------
diff --git a/flink-metrics/flink-metrics-dropwizard/src/test/java/org/apache/flink/dropwizard/ScheduledDropwizardReporterTest.java b/flink-metrics/flink-metrics-dropwizard/src/test/java/org/apache/flink/dropwizard/ScheduledDropwizardReporterTest.java
index 9385510..87c4ccb 100644
--- a/flink-metrics/flink-metrics-dropwizard/src/test/java/org/apache/flink/dropwizard/ScheduledDropwizardReporterTest.java
+++ b/flink-metrics/flink-metrics-dropwizard/src/test/java/org/apache/flink/dropwizard/ScheduledDropwizardReporterTest.java
@@ -24,9 +24,14 @@ import org.apache.flink.configuration.ConfigConstants;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.dropwizard.metrics.DropwizardMeterWrapper;
import org.apache.flink.metrics.Counter;
+import org.apache.flink.metrics.Gauge;
+import org.apache.flink.metrics.Histogram;
+import org.apache.flink.metrics.HistogramStatistics;
import org.apache.flink.metrics.Meter;
import org.apache.flink.metrics.MetricConfig;
+import org.apache.flink.metrics.MetricGroup;
import org.apache.flink.metrics.SimpleCounter;
+import org.apache.flink.metrics.groups.UnregisteredMetricsGroup;
import org.apache.flink.metrics.reporter.MetricReporter;
import org.apache.flink.runtime.metrics.MetricRegistry;
import org.apache.flink.runtime.metrics.MetricRegistryConfiguration;
@@ -124,6 +129,93 @@ public class ScheduledDropwizardReporterTest {
metricRegistry.shutdown();
}
+ /**
+ * This test verifies that metrics are properly added and removed to/from the ScheduledDropwizardReporter and
+ * the underlying Dropwizard MetricRegistry.
+ */
+ @Test
+ public void testMetricCleanup() {
+ TestingScheduledDropwizardReporter rep = new TestingScheduledDropwizardReporter();
+
+ MetricGroup mp = new UnregisteredMetricsGroup();
+
+ Counter c = new SimpleCounter();
+ Meter m = new Meter() {
+ @Override
+ public void markEvent() {
+ }
+
+ @Override
+ public void markEvent(long n) {
+ }
+
+ @Override
+ public double getRate() {
+ return 0;
+ }
+
+ @Override
+ public long getCount() {
+ return 0;
+ }
+ };
+ Histogram h = new Histogram() {
+ @Override
+ public void update(long value) {
+
+ }
+
+ @Override
+ public long getCount() {
+ return 0;
+ }
+
+ @Override
+ public HistogramStatistics getStatistics() {
+ return null;
+ }
+ };
+ Gauge g = new Gauge() {
+ @Override
+ public Object getValue() {
+ return null;
+ }
+ };
+
+ rep.notifyOfAddedMetric(c, "counter", mp);
+ assertEquals(1, rep.getCounters().size());
+ assertEquals(1, rep.registry.getCounters().size());
+
+ rep.notifyOfAddedMetric(m, "meter", mp);
+ assertEquals(1, rep.getMeters().size());
+ assertEquals(1, rep.registry.getMeters().size());
+
+ rep.notifyOfAddedMetric(h, "histogram", mp);
+ assertEquals(1, rep.getHistograms().size());
+ assertEquals(1, rep.registry.getHistograms().size());
+
+ rep.notifyOfAddedMetric(g, "gauge", mp);
+ assertEquals(1, rep.getGauges().size());
+ assertEquals(1, rep.registry.getGauges().size());
+
+
+ rep.notifyOfRemovedMetric(c, "counter", mp);
+ assertEquals(0, rep.getCounters().size());
+ assertEquals(0, rep.registry.getCounters().size());
+
+ rep.notifyOfRemovedMetric(m, "meter", mp);
+ assertEquals(0, rep.getMeters().size());
+ assertEquals(0, rep.registry.getMeters().size());
+
+ rep.notifyOfRemovedMetric(h, "histogram", mp);
+ assertEquals(0, rep.getHistograms().size());
+ assertEquals(0, rep.registry.getHistograms().size());
+
+ rep.notifyOfRemovedMetric(g, "gauge", mp);
+ assertEquals(0, rep.getGauges().size());
+ assertEquals(0, rep.registry.getGauges().size());
+ }
+
public static class TestingScheduledDropwizardReporter extends ScheduledDropwizardReporter {
@Override