diff --git a/jaeger-core/src/main/java/io/jaegertracing/internal/JaegerSpan.java b/jaeger-core/src/main/java/io/jaegertracing/internal/JaegerSpan.java index 0dae320e..3dcb9c69 100644 --- a/jaeger-core/src/main/java/io/jaegertracing/internal/JaegerSpan.java +++ b/jaeger-core/src/main/java/io/jaegertracing/internal/JaegerSpan.java @@ -68,7 +68,7 @@ protected JaegerSpan( this.startTimeMicroseconds = startTimeMicroseconds; this.startTimeNanoTicks = startTimeNanoTicks; this.computeDurationViaNanoTicks = computeDurationViaNanoTicks; - this.tags = new ConcurrentHashMap(); + this.tags = new ConcurrentHashMap<>(); this.references = references != null ? new ArrayList(references) : null; // Handle SAMPLING_PRIORITY tag first, as this influences whether setTagAsObject actually @@ -111,7 +111,7 @@ public List getReferences() { } public Map getTags() { - return new HashMap(tags); + return new HashMap<>(tags); } @Override @@ -225,7 +225,7 @@ private JaegerSpan setTagAsObject(String key, Object value) { } if (context.isSampled()) { - tags.put(key, value); + tags.put(key, value == null ? "null" : value); } return this; diff --git a/jaeger-core/src/test/java/io/jaegertracing/internal/JaegerSpanTest.java b/jaeger-core/src/test/java/io/jaegertracing/internal/JaegerSpanTest.java index 0996ec87..f35f0c91 100644 --- a/jaeger-core/src/test/java/io/jaegertracing/internal/JaegerSpanTest.java +++ b/jaeger-core/src/test/java/io/jaegertracing/internal/JaegerSpanTest.java @@ -124,6 +124,14 @@ public void testSetAndGetBaggageItem() { assertEquals(value, jaegerSpan.getBaggageItem(key)); } + @Test + public void testSetNullTag() { + String key = "tag.key"; + + jaegerSpan.setTag(key, (String)null); + assertEquals("null", jaegerSpan.getTags().get(key)); + } + @Test public void testSetBooleanTag() { Boolean expected = true;