You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flink.apache.org by ch...@apache.org on 2019/02/15 12:54:23 UTC

[flink] branch release-1.7 updated: [FLINK-11424][metrics] Properly remove string/failing gauges

This is an automated email from the ASF dual-hosted git repository.

chesnay pushed a commit to branch release-1.7
in repository https://gitbox.apache.org/repos/asf/flink.git


The following commit(s) were added to refs/heads/release-1.7 by this push:
     new 9004371  [FLINK-11424][metrics] Properly remove string/failing gauges
9004371 is described below

commit 90043718f5ac5e859d77cf984d0be7cf1a36de46
Author: lining <ji...@gmail.com>
AuthorDate: Fri Feb 15 20:51:22 2019 +0800

    [FLINK-11424][metrics] Properly remove string/failing gauges
---
 .../apache/flink/metrics/datadog/DatadogHttpReporter.java   | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/flink-metrics/flink-metrics-datadog/src/main/java/org/apache/flink/metrics/datadog/DatadogHttpReporter.java b/flink-metrics/flink-metrics-datadog/src/main/java/org/apache/flink/metrics/datadog/DatadogHttpReporter.java
index b7e1c24..5462b32 100644
--- a/flink-metrics/flink-metrics-datadog/src/main/java/org/apache/flink/metrics/datadog/DatadogHttpReporter.java
+++ b/flink-metrics/flink-metrics-datadog/src/main/java/org/apache/flink/metrics/datadog/DatadogHttpReporter.java
@@ -118,6 +118,7 @@ public class DatadogHttpReporter implements MetricReporter, Scheduled {
 	public void report() {
 		DatadogHttpRequest request = new DatadogHttpRequest();
 
+		List<Gauge> gaugesToRemove = new ArrayList<>();
 		for (Map.Entry<Gauge, DGauge> entry : gauges.entrySet()) {
 			DGauge g = entry.getValue();
 			try {
@@ -125,11 +126,19 @@ public class DatadogHttpReporter implements MetricReporter, Scheduled {
 				// Flink uses Gauge to store many types other than Number
 				g.getMetricValue();
 				request.addGauge(g);
+			} catch (ClassCastException e) {
+				LOGGER.info("The metric {} will not be reported because only number types are supported by this reporter.", g.getMetric());
+				gaugesToRemove.add(entry.getKey());
 			} catch (Exception e) {
-				// Remove that Gauge if it's not of Number type
-				gauges.remove(entry.getKey());
+				if (LOGGER.isDebugEnabled()) {
+					LOGGER.debug("The metric {} will not be reported because it threw an exception.", g.getMetric(), e);
+				} else {
+					LOGGER.info("The metric {} will not be reported because it threw an exception.", g.getMetric());
+				}
+				gaugesToRemove.add(entry.getKey());
 			}
 		}
+		gaugesToRemove.forEach(gauges::remove);
 
 		for (DCounter c : counters.values()) {
 			request.addCounter(c);