diff --git a/src/main/java/com/datadoghq/datadog_lambda_java/DDLambda.java b/src/main/java/com/datadoghq/datadog_lambda_java/DDLambda.java index 141de66..6d947a1 100644 --- a/src/main/java/com/datadoghq/datadog_lambda_java/DDLambda.java +++ b/src/main/java/com/datadoghq/datadog_lambda_java/DDLambda.java @@ -52,7 +52,7 @@ private DDLambda() { this.shouldUseExtension = Extension.setup(); if(this.shouldUseExtension) { DDLogger.getLoggerImpl().debug("Setting the writer to extension"); - ExtensionMetricWriter emw = new ExtensionMetricWriter(); + ExtensionMetricWriter emw = ExtensionMetricWriter.GetInstance(); MetricWriter.setMetricWriter(emw); } } 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 eb6b350..40f40db 100644 --- a/src/main/java/com/datadoghq/datadog_lambda_java/MetricWriter.java +++ b/src/main/java/com/datadoghq/datadog_lambda_java/MetricWriter.java @@ -39,20 +39,30 @@ public void flush(){} class ExtensionMetricWriter extends MetricWriter{ - private StatsDClient client; - - public ExtensionMetricWriter() { - try { - this.client = new NonBlockingStatsDClientBuilder() - .prefix("") - .hostname("127.0.0.1") - .port(8125) - .enableTelemetry(false) - .telemetryFlushInterval(0) - .build(); - } catch (Exception e) { - DDLogger.getLoggerImpl().error("Could not create StatsDClient " + e.getMessage()); - this.client = null; + private static StatsDClient client; + private static ExtensionMetricWriter emw; + + public static ExtensionMetricWriter GetInstance(){ + if (null == emw){ + emw = new ExtensionMetricWriter(); + } + return emw; + } + + private ExtensionMetricWriter() { + if (null == client) { + try { + client = new NonBlockingStatsDClientBuilder() + .prefix("") + .hostname("127.0.0.1") + .port(8125) + .enableTelemetry(false) + .telemetryFlushInterval(0) + .build(); + } catch (Exception e) { + DDLogger.getLoggerImpl().error("Could not create StatsDClient " + e.getMessage()); + client = 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 e340d9e..1b51d5a 100644 --- a/src/test/java/com/datadoghq/datadog_lambda_java/CustomMetricTest.java +++ b/src/test/java/com/datadoghq/datadog_lambda_java/CustomMetricTest.java @@ -56,7 +56,7 @@ public class CustomMetricTest { map.put("firstTag", "firstTagValue"); map.put("secondTag", 100.34); CustomMetric ddm = new CustomMetric("foo", 24.3, map); - ExtensionMetricWriter emw = new ExtensionMetricWriter(); + ExtensionMetricWriter emw = ExtensionMetricWriter.GetInstance(); MetricWriter.setMetricWriter(emw); final String[] text = new String[1];