From 9e538414295d97c8a05b9acb2c51810845e01717 Mon Sep 17 00:00:00 2001 From: Tyler Benson Date: Fri, 10 Nov 2017 16:52:57 -0500 Subject: [PATCH] =?UTF-8?q?Null=20tags=20are=20intended=20for=20=E2=80=9Cd?= =?UTF-8?q?eletion=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This was not well tested and misunderstood. --- .../java/com/datadoghq/trace/DDSpanContext.java | 1 + .../com/datadoghq/trace/DDSpanContextTest.groovy | 14 +++++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) 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 2ac5ba12b6..de79449318 100644 --- a/dd-trace/src/main/java/com/datadoghq/trace/DDSpanContext.java +++ b/dd-trace/src/main/java/com/datadoghq/trace/DDSpanContext.java @@ -181,6 +181,7 @@ public class DDSpanContext implements io.opentracing.SpanContext { */ public synchronized void setTag(final String tag, final Object value) { if (value == null) { + tags.remove(tag); return; } diff --git a/dd-trace/src/test/groovy/com/datadoghq/trace/DDSpanContextTest.groovy b/dd-trace/src/test/groovy/com/datadoghq/trace/DDSpanContextTest.groovy index 16be02ff12..9404d384bc 100644 --- a/dd-trace/src/test/groovy/com/datadoghq/trace/DDSpanContextTest.groovy +++ b/dd-trace/src/test/groovy/com/datadoghq/trace/DDSpanContextTest.groovy @@ -4,22 +4,26 @@ import spock.lang.Specification class DDSpanContextTest extends Specification { - def "null values for tags are ignored"() { + def "null values for tags delete existing tags"() { setup: def context = SpanFactory.newSpanOf(0).context + context.setTag("some.tag", "asdf") context.setTag(name, null) context.setErrorFlag(true) - def thread = Thread.currentThread() expect: - context.getTags() == [(DDTags.THREAD_NAME): thread.name, (DDTags.THREAD_ID): thread.id] + context.getTags() == tags context.serviceName == "fakeService" context.resourceName == "fakeResource" context.spanType == "fakeType" - context.toString() == "Span [ t_id=1, s_id=1, p_id=0] trace=fakeService/fakeOperation/fakeResource *errored* tags={thread.id=$thread.id, thread.name=$thread.name}" + context.toString() == "Span [ t_id=1, s_id=1, p_id=0] trace=fakeService/fakeOperation/fakeResource *errored* tags={${extra}thread.id=${Thread.currentThread().id}, thread.name=${Thread.currentThread().name}}" where: - name << [DDTags.SERVICE_NAME, DDTags.RESOURCE_NAME, DDTags.SPAN_TYPE, "some.tag"] + name | extra | tags + DDTags.SERVICE_NAME | "some.tag=asdf, " | ["some.tag": "asdf", (DDTags.THREAD_NAME): Thread.currentThread().name, (DDTags.THREAD_ID): Thread.currentThread().id] + DDTags.RESOURCE_NAME | "some.tag=asdf, " | ["some.tag": "asdf", (DDTags.THREAD_NAME): Thread.currentThread().name, (DDTags.THREAD_ID): Thread.currentThread().id] + DDTags.SPAN_TYPE | "some.tag=asdf, " | ["some.tag": "asdf", (DDTags.THREAD_NAME): Thread.currentThread().name, (DDTags.THREAD_ID): Thread.currentThread().id] + "some.tag" | "" | [(DDTags.THREAD_NAME): Thread.currentThread().name, (DDTags.THREAD_ID): Thread.currentThread().id] } def "special tags set certain values"() {