[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
+               }
+       }
 }

Reply via email to