diff --git a/dd-trace/src/main/java/com/datadoghq/trace/DDSpanContext.java b/dd-trace/src/main/java/com/datadoghq/trace/DDSpanContext.java
index c19b7c0f3d..f05dda6d26 100644
--- a/dd-trace/src/main/java/com/datadoghq/trace/DDSpanContext.java
+++ b/dd-trace/src/main/java/com/datadoghq/trace/DDSpanContext.java
@@ -1,18 +1,13 @@
package com.datadoghq.trace;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
import com.datadoghq.trace.integration.DDSpanContextDecorator;
import com.fasterxml.jackson.annotation.JsonIgnore;
-
import io.opentracing.Span;
import io.opentracing.tag.Tags;
+import java.util.*;
+
/**
* SpanContext represents Span state that must propagate to descendant Spans and across process boundaries.
*
@@ -81,8 +76,9 @@ public class DDSpanContext implements io.opentracing.SpanContext {
this.spanId = spanId;
this.parentId = parentId;
+
if (baggageItems == null) {
- this.baggageItems = new HashMap();
+ this.baggageItems = Collections.emptyMap();
} else {
this.baggageItems = baggageItems;
}
@@ -121,7 +117,7 @@ public class DDSpanContext implements io.opentracing.SpanContext {
}
public String getResourceName() {
- return this.resourceName == null || this.resourceName.isEmpty() ? this.operationName : this.resourceName;
+ return this.resourceName == null || this.resourceName.isEmpty() ? this.operationName : this.resourceName;
}
public boolean getErrorFlag() {
@@ -134,6 +130,9 @@ public class DDSpanContext implements io.opentracing.SpanContext {
}
public void setBaggageItem(String key, String value) {
+ if (this.baggageItems.isEmpty()) {
+ this.baggageItems = new HashMap();
+ }
this.baggageItems.put(key, value);
}
@@ -176,11 +175,11 @@ public class DDSpanContext implements io.opentracing.SpanContext {
this.tags.put(tag, value);
//Call decorators
- for(DDSpanContextDecorator decorator:tracer.getSpanContextDecorators()){
+ for (DDSpanContextDecorator decorator : tracer.getSpanContextDecorators()) {
decorator.afterSetTag(this, tag, value);
}
//Error management
- if(Tags.ERROR.getKey().equals(tag) && Boolean.TRUE.equals(value)){
+ if (Tags.ERROR.getKey().equals(tag) && Boolean.TRUE.equals(value)) {
this.errorFlag = true;
}
}
@@ -191,7 +190,7 @@ public class DDSpanContext implements io.opentracing.SpanContext {
@Override
public String toString() {
- return "Span [ "+traceId+" ] [ "+spanId+" | "+parentId+" ] [ "+getServiceName()+" | "+getOperationName()+" | "+getResourceName()+" ]";
+ return "Span [ " + traceId + " ] [ " + spanId + " | " + parentId + " ] [ " + getServiceName() + " | " + getOperationName() + " | " + getResourceName() + " ]";
}
public void setOperationName(String operationName) {
diff --git a/dd-trace/src/main/java/com/datadoghq/trace/DDTracer.java b/dd-trace/src/main/java/com/datadoghq/trace/DDTracer.java
index 3044be3a39..c57d1f825f 100644
--- a/dd-trace/src/main/java/com/datadoghq/trace/DDTracer.java
+++ b/dd-trace/src/main/java/com/datadoghq/trace/DDTracer.java
@@ -304,7 +304,7 @@ public class DDTracer implements io.opentracing.Tracer {
serviceName,
operationName,
this.resourceName,
- this.parent == null ? new HashMap() : p.getBaggageItems(),
+ this.parent == null ? null : p.getBaggageItems(),
errorFlag,
spanType,
this.tags,