From b2af7491a8e2e46397645a624d23b62de5dd6765 Mon Sep 17 00:00:00 2001 From: Andrew Kent Date: Fri, 2 Mar 2018 10:45:50 -0500 Subject: [PATCH] Remove Jackson from AWS Helper class --- .../instrumentation/aws/SpanDecorator.java | 35 +++++++++++++++---- 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/dd-java-agent/instrumentation/aws-sdk/src/main/java/datadog/trace/instrumentation/aws/SpanDecorator.java b/dd-java-agent/instrumentation/aws-sdk/src/main/java/datadog/trace/instrumentation/aws/SpanDecorator.java index 3a3c134311..d479b2ee5f 100644 --- a/dd-java-agent/instrumentation/aws-sdk/src/main/java/datadog/trace/instrumentation/aws/SpanDecorator.java +++ b/dd-java-agent/instrumentation/aws-sdk/src/main/java/datadog/trace/instrumentation/aws/SpanDecorator.java @@ -16,18 +16,16 @@ package datadog.trace.instrumentation.aws; import com.amazonaws.AmazonWebServiceResponse; import com.amazonaws.Request; import com.amazonaws.Response; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; import io.opentracing.Span; import io.opentracing.tag.Tags; import java.io.PrintWriter; import java.io.StringWriter; import java.util.HashMap; +import java.util.List; import java.util.Map; +import java.util.Map.Entry; class SpanDecorator { - private static final ObjectMapper MAPPER = new ObjectMapper(); - static final String COMPONENT_NAME = "java-aws-sdk"; static void onRequest(final Request request, final Span span) { @@ -38,9 +36,34 @@ class SpanDecorator { span.setTag("aws.service", request.getServiceName()); span.setTag("aws.operation", request.getOriginalRequest().getClass().getSimpleName()); span.setTag("aws.endpoint", request.getEndpoint().toString()); + try { - span.setTag("params", MAPPER.writeValueAsString(request.getParameters())); - } catch (final JsonProcessingException e) { + StringBuilder params = new StringBuilder("{"); + final Map> requestParams = request.getParameters(); + boolean firstKey = true; + for (Entry> entry : requestParams.entrySet()) { + if (!firstKey) { + params.append(","); + } + params.append(entry.getKey()).append("=["); + for (int i = 0; i < entry.getValue().size(); ++i) { + if (i > 0) { + params.append(","); + } + params.append(entry.getValue().get(i)); + } + params.append("]"); + firstKey = false; + } + params.append("}"); + span.setTag("params", params.toString()); + } catch (Exception e) { + try { + org.slf4j.LoggerFactory.getLogger(SpanDecorator.class) + .debug("Failed to decorate aws span", e); + } catch (Exception e2) { + // can't reach logger. Silently eat excetpion. + } } }