[FLINK-8553][metrics][datadog] Switch to async mode This closes #5418.
Project: http://git-wip-us.apache.org/repos/asf/flink/repo Commit: http://git-wip-us.apache.org/repos/asf/flink/commit/ae3d547a Tree: http://git-wip-us.apache.org/repos/asf/flink/tree/ae3d547a Diff: http://git-wip-us.apache.org/repos/asf/flink/diff/ae3d547a Branch: refs/heads/master Commit: ae3d547afe7ec44d37beeee38222a3ea40d9181e Parents: e7f4f53 Author: Bowen Li <bowenl...@gmail.com> Authored: Tue Feb 6 16:11:18 2018 -0800 Committer: zentol <ches...@apache.org> Committed: Wed Feb 14 12:28:54 2018 +0100 ---------------------------------------------------------------------- .../metrics/datadog/DatadogHttpClient.java | 28 ++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flink/blob/ae3d547a/flink-metrics/flink-metrics-datadog/src/main/java/org/apache/flink/metrics/datadog/DatadogHttpClient.java ---------------------------------------------------------------------- diff --git a/flink-metrics/flink-metrics-datadog/src/main/java/org/apache/flink/metrics/datadog/DatadogHttpClient.java b/flink-metrics/flink-metrics-datadog/src/main/java/org/apache/flink/metrics/datadog/DatadogHttpClient.java index 374118c..be11e48 100644 --- a/flink-metrics/flink-metrics-datadog/src/main/java/org/apache/flink/metrics/datadog/DatadogHttpClient.java +++ b/flink-metrics/flink-metrics-datadog/src/main/java/org/apache/flink/metrics/datadog/DatadogHttpClient.java @@ -21,11 +21,15 @@ package org.apache.flink.metrics.datadog; import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.core.JsonProcessingException; import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.ObjectMapper; +import okhttp3.Call; +import okhttp3.Callback; import okhttp3.MediaType; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.IOException; import java.util.concurrent.TimeUnit; @@ -33,7 +37,9 @@ import java.util.concurrent.TimeUnit; /** * Http client talking to Datadog. */ -public class DatadogHttpClient{ +public class DatadogHttpClient { + private static final Logger LOGGER = LoggerFactory.getLogger(DatadogHttpClient.class); + private static final String SERIES_URL_FORMAT = "https://app.datadoghq.com/api/v1/series?api_key=%s"; private static final String VALIDATE_URL_FORMAT = "https://app.datadoghq.com/api/v1/validate?api_key=%s"; private static final MediaType MEDIA_TYPE = MediaType.parse("application/json; charset=utf-8"); @@ -83,7 +89,7 @@ public class DatadogHttpClient{ .post(RequestBody.create(MEDIA_TYPE, postBody)) .build(); - client.newCall(r).execute().close(); + client.newCall(r).enqueue(EmptyCallback.getEmptyCallback()); } public static String serialize(Object obj) throws JsonProcessingException { @@ -94,4 +100,22 @@ public class DatadogHttpClient{ client.dispatcher().executorService().shutdown(); client.connectionPool().evictAll(); } + + private static class EmptyCallback implements Callback { + private static final EmptyCallback singleton = new EmptyCallback(); + + public static Callback getEmptyCallback() { + return singleton; + } + + @Override + public void onFailure(Call call, IOException e) { + LOGGER.debug("Failed sending request to Datadog" , e); + } + + @Override + public void onResponse(Call call, Response response) throws IOException { + // Do nothing + } + } }