From 31f6544c1d8284ff709ec4541d56acb2bc3269f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Vandon?= Date: Wed, 28 May 2025 17:13:25 +0200 Subject: [PATCH 1/6] fix printing format of span IDs --- .../src/main/java/datadog/trace/core/DDSpanContext.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java b/dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java index b28247c6914..4e5b67d7ec1 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java @@ -892,9 +892,9 @@ public String toString() { .append("DDSpan [ t_id=") .append(traceId) .append(", s_id=") - .append(spanId) + .append(Long.toUnsignedString(spanId)) .append(", p_id=") - .append(parentId) + .append(Long.toUnsignedString(parentId)) .append(" ] trace=") .append(getServiceName()) .append('/') From b687fe8372366187855def0171cab142f77d67c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Vandon?= Date: Fri, 30 May 2025 10:33:12 +0200 Subject: [PATCH 2/6] use DDSpanID.toString Co-authored-by: Bruce Bujon --- .../src/main/java/datadog/trace/core/DDSpanContext.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java b/dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java index 4e5b67d7ec1..a884ff06049 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java @@ -892,7 +892,7 @@ public String toString() { .append("DDSpan [ t_id=") .append(traceId) .append(", s_id=") - .append(Long.toUnsignedString(spanId)) + .append(DDSpanID.toString(spanId)) .append(", p_id=") .append(Long.toUnsignedString(parentId)) .append(" ] trace=") From d6f19c4b4172b1d44a35cd823ca702d44a6c9c85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Vandon?= Date: Fri, 30 May 2025 10:33:20 +0200 Subject: [PATCH 3/6] use DDSpanID.toString Co-authored-by: Bruce Bujon --- .../src/main/java/datadog/trace/core/DDSpanContext.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java b/dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java index a884ff06049..618a83627b2 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java @@ -894,7 +894,7 @@ public String toString() { .append(", s_id=") .append(DDSpanID.toString(spanId)) .append(", p_id=") - .append(Long.toUnsignedString(parentId)) + .append(DDSpanID.toString(parentId)) .append(" ] trace=") .append(getServiceName()) .append('/') From c652cc0bf3bcca17b2ef1b97240d8be1c442a3d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Vandon?= Date: Fri, 30 May 2025 11:17:26 +0200 Subject: [PATCH 4/6] add test --- .../trace/core/DDSpanContextTest.groovy | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/DDSpanContextTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/DDSpanContextTest.groovy index c880c17d94c..457a497a252 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/DDSpanContextTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/DDSpanContextTest.groovy @@ -19,7 +19,7 @@ import static datadog.trace.core.DDSpanContext.SPAN_SAMPLING_MAX_PER_SECOND_TAG class DDSpanContextTest extends DDCoreSpecification { def writer - def tracer + CoreTracer tracer def profilingContextIntegration def setup() { @@ -289,6 +289,29 @@ class DDSpanContextTest extends DDCoreSpecification { "_dd.${tag}.json" } + def "setting resource name to null is ignored"() { + setup: + def parent = tracer.buildSpan("fakeOperation") + .withServiceName("fakeService") + .withResourceName("fakeResource") + .withSpanId(-987654321) + .start() + + def span = tracer.buildSpan("fakeOperation") + .withServiceName("fakeService") + .withResourceName("fakeResource") + .withSpanId(-123456789) + .asChildOf(parent.context()) + .start() + + def context = span.context() as DDSpanContext + + expect: + // even though span ID and parent ID are setup as negative numbers, they should be printed as their unsigned value + // asserting there is no negative sign after ids is the best I can do. + context.toString().contains("id=-") == false + } + static void assertTagmap(Map source, Map comparison, boolean removeThread = false) { def sourceWithoutCommonTags = new HashMap(source) sourceWithoutCommonTags.remove("runtime-id") From 7e14f7bacf6a88ad1c98b403d161cd7707c023f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Vandon?= Date: Fri, 30 May 2025 11:43:10 +0200 Subject: [PATCH 5/6] fix build --- .../src/main/java/datadog/trace/core/DDSpanContext.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java b/dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java index 618a83627b2..5b534dff790 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java @@ -5,6 +5,7 @@ import static datadog.trace.api.cache.RadixTreeCache.HTTP_STATUSES; import static datadog.trace.bootstrap.instrumentation.api.ErrorPriorities.UNSET; +import datadog.trace.api.DDSpanId; import datadog.trace.api.DDTags; import datadog.trace.api.DDTraceId; import datadog.trace.api.Functions; @@ -892,9 +893,9 @@ public String toString() { .append("DDSpan [ t_id=") .append(traceId) .append(", s_id=") - .append(DDSpanID.toString(spanId)) + .append(DDSpanId.toString(spanId)) .append(", p_id=") - .append(DDSpanID.toString(parentId)) + .append(DDSpanId.toString(parentId)) .append(" ] trace=") .append(getServiceName()) .append('/') From 633691499ad3bd1434933aeac2ecbf5bfa7e1d28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Vandon?= Date: Fri, 30 May 2025 14:04:09 +0200 Subject: [PATCH 6/6] fix test name --- .../src/test/groovy/datadog/trace/core/DDSpanContextTest.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/DDSpanContextTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/DDSpanContextTest.groovy index 457a497a252..1cdaa33d668 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/DDSpanContextTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/DDSpanContextTest.groovy @@ -289,7 +289,7 @@ class DDSpanContextTest extends DDCoreSpecification { "_dd.${tag}.json" } - def "setting resource name to null is ignored"() { + def "Span IDs printed as unsigned long"() { setup: def parent = tracer.buildSpan("fakeOperation") .withServiceName("fakeService")