Repository: flink Updated Branches: refs/heads/master 393bceb58 -> 2bffd7b9e
[hotfix] [core] Make sure Dropwizard reporters do not block operator creation/teardown while reporting The "report()" method used to hold the same lock that was needed to create and shutdown metrics. Holding that lock too long could delay operator creation and teardown. This also removes the no longer needed dependency on dropwizard in flink-core. Project: http://git-wip-us.apache.org/repos/asf/flink/repo Commit: http://git-wip-us.apache.org/repos/asf/flink/commit/2bffd7b9 Tree: http://git-wip-us.apache.org/repos/asf/flink/tree/2bffd7b9 Diff: http://git-wip-us.apache.org/repos/asf/flink/diff/2bffd7b9 Branch: refs/heads/master Commit: 2bffd7b9e558b0ee7efb1bc23b1047faed48c4be Parents: 393bceb Author: Stephan Ewen <se...@apache.org> Authored: Fri Jun 10 00:24:57 2016 +0200 Committer: Stephan Ewen <se...@apache.org> Committed: Fri Jun 10 14:50:36 2016 +0200 ---------------------------------------------------------------------- flink-core/pom.xml | 6 ------ .../dropwizard/ScheduledDropwizardReporter.java | 19 +++++++++++-------- 2 files changed, 11 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flink/blob/2bffd7b9/flink-core/pom.xml ---------------------------------------------------------------------- diff --git a/flink-core/pom.xml b/flink-core/pom.xml index b64f94e..1aadfbd 100644 --- a/flink-core/pom.xml +++ b/flink-core/pom.xml @@ -47,12 +47,6 @@ under the License. <!-- managed version --> </dependency> - <dependency> - <groupId>io.dropwizard.metrics</groupId> - <artifactId>metrics-core</artifactId> - <version>${metrics.version}</version> - </dependency> - <!-- Avro is needed for the interoperability with Avro types for serialization --> <dependency> <groupId>org.apache.avro</groupId> http://git-wip-us.apache.org/repos/asf/flink/blob/2bffd7b9/flink-metric-reporters/flink-metrics-dropwizard/src/main/java/org/apache/flink/dropwizard/ScheduledDropwizardReporter.java ---------------------------------------------------------------------- diff --git a/flink-metric-reporters/flink-metrics-dropwizard/src/main/java/org/apache/flink/dropwizard/ScheduledDropwizardReporter.java b/flink-metric-reporters/flink-metrics-dropwizard/src/main/java/org/apache/flink/dropwizard/ScheduledDropwizardReporter.java index 74fdb85..d67f3e3 100644 --- a/flink-metric-reporters/flink-metrics-dropwizard/src/main/java/org/apache/flink/dropwizard/ScheduledDropwizardReporter.java +++ b/flink-metric-reporters/flink-metrics-dropwizard/src/main/java/org/apache/flink/dropwizard/ScheduledDropwizardReporter.java @@ -35,6 +35,7 @@ import org.apache.flink.metrics.reporter.Scheduled; import java.util.HashMap; import java.util.Map; +import java.util.SortedMap; /** * Base class for {@link org.apache.flink.metrics.reporter.MetricReporter} that wraps a @@ -123,14 +124,16 @@ public abstract class ScheduledDropwizardReporter implements MetricReporter, Sch @Override public void report() { - synchronized (this) { - this.reporter.report( - this.registry.getGauges(), - this.registry.getCounters(), - this.registry.getHistograms(), - this.registry.getMeters(), - this.registry.getTimers()); - } + // we do not need to lock here, because the dropwizard registry is + // internally a concurrent map + @SuppressWarnings("rawtypes") + final SortedMap<String, com.codahale.metrics.Gauge> gauges = registry.getGauges(); + final SortedMap<String, com.codahale.metrics.Counter> counters = registry.getCounters(); + final SortedMap<String, com.codahale.metrics.Histogram> histograms = registry.getHistograms(); + final SortedMap<String, com.codahale.metrics.Meter> meters = registry.getMeters(); + final SortedMap<String, com.codahale.metrics.Timer> timers = registry.getTimers(); + + this.reporter.report(gauges, counters, histograms, meters, timers); } public abstract ScheduledReporter getReporter(Configuration config);