From 0dafe38ee92fae215d1bab72cff951cf8a45d993 Mon Sep 17 00:00:00 2001 From: amirhadadi Date: Tue, 4 Jan 2022 17:07:32 +0200 Subject: [PATCH] Restore support for setting null as a tag value (Resolves #823) (#824) --- .../main/java/io/jaegertracing/internal/JaegerSpan.java | 6 +++--- .../java/io/jaegertracing/internal/JaegerSpanTest.java | 8 ++++++++ 2 files changed, 11 insertions(+), 3 deletions(-) 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;