1616import com .amazonaws .AmazonWebServiceResponse ;
1717import com .amazonaws .Request ;
1818import com .amazonaws .Response ;
19- import com .fasterxml .jackson .core .JsonProcessingException ;
20- import com .fasterxml .jackson .databind .ObjectMapper ;
2119import io .opentracing .Span ;
2220import io .opentracing .tag .Tags ;
2321import java .io .PrintWriter ;
2422import java .io .StringWriter ;
2523import java .util .HashMap ;
24+ import java .util .List ;
2625import java .util .Map ;
26+ import java .util .Map .Entry ;
2727
2828class SpanDecorator {
29- private static final ObjectMapper MAPPER = new ObjectMapper ();
30-
3129 static final String COMPONENT_NAME = "java-aws-sdk" ;
3230
3331 static void onRequest (final Request request , final Span span ) {
@@ -38,9 +36,34 @@ static void onRequest(final Request request, final Span span) {
3836 span .setTag ("aws.service" , request .getServiceName ());
3937 span .setTag ("aws.operation" , request .getOriginalRequest ().getClass ().getSimpleName ());
4038 span .setTag ("aws.endpoint" , request .getEndpoint ().toString ());
39+
4140 try {
42- span .setTag ("params" , MAPPER .writeValueAsString (request .getParameters ()));
43- } catch (final JsonProcessingException e ) {
41+ StringBuilder params = new StringBuilder ("{" );
42+ final Map <String , List <Object >> requestParams = request .getParameters ();
43+ boolean firstKey = true ;
44+ for (Entry <String , List <Object >> entry : requestParams .entrySet ()) {
45+ if (!firstKey ) {
46+ params .append ("," );
47+ }
48+ params .append (entry .getKey ()).append ("=[" );
49+ for (int i = 0 ; i < entry .getValue ().size (); ++i ) {
50+ if (i > 0 ) {
51+ params .append ("," );
52+ }
53+ params .append (entry .getValue ().get (i ));
54+ }
55+ params .append ("]" );
56+ firstKey = false ;
57+ }
58+ params .append ("}" );
59+ span .setTag ("params" , params .toString ());
60+ } catch (Exception e ) {
61+ try {
62+ org .slf4j .LoggerFactory .getLogger (SpanDecorator .class )
63+ .debug ("Failed to decorate aws span" , e );
64+ } catch (Exception e2 ) {
65+ // can't reach logger. Silently eat excetpion.
66+ }
4467 }
4568 }
4669
0 commit comments