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);

Reply via email to