Skip to content

Commit 96c39d1

Browse files
authored
Merge pull request #153 from DataDog/tyler/fix-tags
Null tags are intended for “deletion”
2 parents 01e7134 + 9e53841 commit 96c39d1

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

dd-trace/src/main/java/com/datadoghq/trace/DDSpanContext.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ public DDTracer getTracer() {
181181
*/
182182
public synchronized void setTag(final String tag, final Object value) {
183183
if (value == null) {
184+
tags.remove(tag);
184185
return;
185186
}
186187

dd-trace/src/test/groovy/com/datadoghq/trace/DDSpanContextTest.groovy

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,26 @@ import spock.lang.Specification
44

55
class DDSpanContextTest extends Specification {
66

7-
def "null values for tags are ignored"() {
7+
def "null values for tags delete existing tags"() {
88
setup:
99
def context = SpanFactory.newSpanOf(0).context
10+
context.setTag("some.tag", "asdf")
1011
context.setTag(name, null)
1112
context.setErrorFlag(true)
12-
def thread = Thread.currentThread()
1313

1414
expect:
15-
context.getTags() == [(DDTags.THREAD_NAME): thread.name, (DDTags.THREAD_ID): thread.id]
15+
context.getTags() == tags
1616
context.serviceName == "fakeService"
1717
context.resourceName == "fakeResource"
1818
context.spanType == "fakeType"
19-
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}"
19+
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}}"
2020

2121
where:
22-
name << [DDTags.SERVICE_NAME, DDTags.RESOURCE_NAME, DDTags.SPAN_TYPE, "some.tag"]
22+
name | extra | tags
23+
DDTags.SERVICE_NAME | "some.tag=asdf, " | ["some.tag": "asdf", (DDTags.THREAD_NAME): Thread.currentThread().name, (DDTags.THREAD_ID): Thread.currentThread().id]
24+
DDTags.RESOURCE_NAME | "some.tag=asdf, " | ["some.tag": "asdf", (DDTags.THREAD_NAME): Thread.currentThread().name, (DDTags.THREAD_ID): Thread.currentThread().id]
25+
DDTags.SPAN_TYPE | "some.tag=asdf, " | ["some.tag": "asdf", (DDTags.THREAD_NAME): Thread.currentThread().name, (DDTags.THREAD_ID): Thread.currentThread().id]
26+
"some.tag" | "" | [(DDTags.THREAD_NAME): Thread.currentThread().name, (DDTags.THREAD_ID): Thread.currentThread().id]
2327
}
2428

2529
def "special tags set certain values"() {

0 commit comments

Comments
 (0)