diff --git a/src/main/java/com/datadoghq/datadog_lambda_java/MetricWriter.java b/src/main/java/com/datadoghq/datadog_lambda_java/MetricWriter.java index 560bc92..eb6b350 100644 --- a/src/main/java/com/datadoghq/datadog_lambda_java/MetricWriter.java +++ b/src/main/java/com/datadoghq/datadog_lambda_java/MetricWriter.java @@ -3,6 +3,8 @@ import com.timgroup.statsd.NonBlockingStatsDClientBuilder; import com.timgroup.statsd.StatsDClient; +import java.util.stream.Collectors; + abstract class MetricWriter { private static MetricWriter IMPL; public static synchronized MetricWriter getMetricWriterImpl(){ @@ -59,14 +61,17 @@ public ExtensionMetricWriter() { @Override public void write(CustomMetric cm){ if(null != client) { - StringBuilder tagsSb = new StringBuilder(); + String tags = ""; if (cm.getTags() != null) { - cm.getTags().forEach((k, val) -> - tagsSb.append(k.toLowerCase()) - .append(":") - .append(val.toString().toLowerCase())); + tags = cm + .getTags() + .entrySet() + .stream() + .map( + entry -> entry.getKey().toLowerCase() + ":" + entry.getValue().toString().toLowerCase() + ).collect(Collectors.joining(",")); } - client.distribution(cm.getName(), cm.getValue(), tagsSb.toString()); + client.distribution(cm.getName(), cm.getValue(), tags); } else { DDLogger.getLoggerImpl().error("Could not write the metric because the client is null"); } diff --git a/src/test/java/com/datadoghq/datadog_lambda_java/CustomMetricTest.java b/src/test/java/com/datadoghq/datadog_lambda_java/CustomMetricTest.java index 7456bca..e340d9e 100644 --- a/src/test/java/com/datadoghq/datadog_lambda_java/CustomMetricTest.java +++ b/src/test/java/com/datadoghq/datadog_lambda_java/CustomMetricTest.java @@ -90,7 +90,7 @@ public void run() { if (null == text[0] || text[0].equals("notYetReceived")) { Thread.sleep(1000); } else { - assertTrue(text[0].startsWith("foo:24.3|d|#firsttag:firsttagvaluesecondtag:100.34")); + assertTrue(text[0].startsWith("foo:24.3|d|#firsttag:firsttagvalue,secondtag:100.34")); break; } }