From 03b871478a1c883b346196df3bb07aa9904316b0 Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Fri, 18 Apr 2025 13:13:06 +0200 Subject: [PATCH 01/21] Introducing an internal instrumentation component name --- .../decorator/BaseDecorator.java | 4 ++- .../decorator/BaseDecoratorTest.groovy | 4 +++ .../decorator/ClientDecoratorTest.groovy | 4 +++ ...ocessingDatabaseClientDecoratorTest.groovy | 2 ++ .../DatabaseClientDecoratorTest.groovy | 4 +++ .../decorator/ServerDecoratorTest.groovy | 5 ++++ .../decorator/TestDecoratorImpl.java | 1 + .../decorator/TestDecoratorImplTest.groovy | 1 + .../opentelemetry/shim/trace/OtelSpan.java | 1 + .../instrumentation/jdbc/JDBCDecorator.java | 1 + .../karate/KarateTracingHook.java | 1 + .../opentelemetry/OtelTracer.java | 4 ++- .../src/test/groovy/OpenTelemetryTest.groovy | 1 + .../test/groovy/OpenTelemetry14Test.groovy | 1 + .../opentracing31/OTTracer.java | 5 +++- .../src/test/groovy/OpenTracing31Test.groovy | 1 + .../opentracing32/OTTracer.java | 5 +++- .../src/test/groovy/OpenTracing32Test.groovy | 1 + .../VertxSqlClientDecorator.java | 2 +- .../agent/test/asserts/TagsAssert.groovy | 4 +++ .../main/java/datadog/trace/api/DDTags.java | 1 + .../datadog/trace/core/DDSpanContext.java | 10 +++++++ .../InstrumentationComponentAdder.java | 23 ++++++++++++++++ .../TagsPostProcessorFactory.java | 1 + .../InstrumentationComponentAdderTest.groovy | 26 +++++++++++++++++++ .../instrumentation/api/AgentSpanContext.java | 2 ++ 26 files changed, 110 insertions(+), 5 deletions(-) create mode 100644 dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/InstrumentationComponentAdder.java create mode 100644 dd-trace-core/src/test/groovy/datadog/trace/core/tagprocessor/InstrumentationComponentAdderTest.groovy diff --git a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/BaseDecorator.java b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/BaseDecorator.java index 2c33d88bd3c..888b7d344f9 100644 --- a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/BaseDecorator.java +++ b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/BaseDecorator.java @@ -69,7 +69,9 @@ public AgentSpan afterStart(final AgentSpan span) { if (spanType() != null) { span.setSpanType(spanType()); } - span.setTag(Tags.COMPONENT, component()); + final CharSequence component = component(); + span.setTag(Tags.COMPONENT, component); + span.context().setInstrumentationComponentName(component); if (traceAnalyticsEnabled) { span.setMetric(DDTags.ANALYTICS_SAMPLE_RATE, traceAnalyticsSampleRate); } diff --git a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/BaseDecoratorTest.groovy b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/BaseDecoratorTest.groovy index 5cd64c11304..333799e24a9 100644 --- a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/BaseDecoratorTest.groovy +++ b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/BaseDecoratorTest.groovy @@ -2,6 +2,7 @@ package datadog.trace.bootstrap.instrumentation.decorator import datadog.trace.bootstrap.instrumentation.api.AgentSpan +import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext import datadog.trace.bootstrap.instrumentation.api.ErrorPriorities import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.test.util.DDSpecification @@ -16,6 +17,7 @@ class BaseDecoratorTest extends DDSpecification { def errorPriority = null as Byte def span = Mock(AgentSpan) + def spanContext = Mock(AgentSpanContext) def "test afterStart"() { when: @@ -24,6 +26,8 @@ class BaseDecoratorTest extends DDSpecification { then: 1 * span.setSpanType(decorator.spanType()) 1 * span.setTag(Tags.COMPONENT, "test-component") + 1 * span.context() >> spanContext + 1 * spanContext.setInstrumentationComponentName("test-component") _ * span.setTag(_, _) // Want to allow other calls from child implementations. _ * span.setMeasured(true) _ * span.setMetric(_, _) diff --git a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/ClientDecoratorTest.groovy b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/ClientDecoratorTest.groovy index 7276c6ce0c5..0af10960b15 100644 --- a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/ClientDecoratorTest.groovy +++ b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/ClientDecoratorTest.groovy @@ -2,6 +2,7 @@ package datadog.trace.bootstrap.instrumentation.decorator import datadog.trace.api.DDTags import datadog.trace.bootstrap.instrumentation.api.AgentSpan +import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext import datadog.trace.bootstrap.instrumentation.api.Tags class ClientDecoratorTest extends BaseDecoratorTest { @@ -11,6 +12,7 @@ class ClientDecoratorTest extends BaseDecoratorTest { def "test afterStart"() { setup: def decorator = newDecorator((String) serviceName) + def spanContext = Mock(AgentSpanContext) when: decorator.afterStart(span) @@ -21,6 +23,8 @@ class ClientDecoratorTest extends BaseDecoratorTest { } 1 * span.setMeasured(true) 1 * span.setTag(Tags.COMPONENT, "test-component") + 1 * span.context() >> spanContext + 1 * spanContext.setInstrumentationComponentName("test-component") 1 * span.setTag(Tags.SPAN_KIND, "client") 1 * span.setSpanType(decorator.spanType()) 1 * span.setMetric(DDTags.ANALYTICS_SAMPLE_RATE, 1.0) diff --git a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/DBTypeProcessingDatabaseClientDecoratorTest.groovy b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/DBTypeProcessingDatabaseClientDecoratorTest.groovy index e1181a31ddd..3b2584636a5 100644 --- a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/DBTypeProcessingDatabaseClientDecoratorTest.groovy +++ b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/DBTypeProcessingDatabaseClientDecoratorTest.groovy @@ -24,6 +24,8 @@ class DBTypeProcessingDatabaseClientDecoratorTest extends ClientDecoratorTest { } 1 * span.setMeasured(true) 1 * span.setTag(Tags.COMPONENT, "test-component") + 1 * span.context() >> spanContext + 1 * spanContext.setInstrumentationComponentName("test-component") 1 * span.setTag(Tags.SPAN_KIND, "client") 1 * span.setSpanType("test-type") 1 * span.setServiceName("test-db") diff --git a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/DatabaseClientDecoratorTest.groovy b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/DatabaseClientDecoratorTest.groovy index 30d6ff6fe94..c2290ac82a8 100644 --- a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/DatabaseClientDecoratorTest.groovy +++ b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/DatabaseClientDecoratorTest.groovy @@ -2,6 +2,7 @@ package datadog.trace.bootstrap.instrumentation.decorator import datadog.trace.api.DDTags import datadog.trace.bootstrap.instrumentation.api.AgentSpan +import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext import datadog.trace.bootstrap.instrumentation.api.Tags import static datadog.trace.api.config.TraceInstrumentationConfig.DB_CLIENT_HOST_SPLIT_BY_HOST @@ -15,6 +16,7 @@ class DatabaseClientDecoratorTest extends ClientDecoratorTest { def "test afterStart"() { setup: def decorator = newDecorator((String) serviceName) + def spanContext = Mock(AgentSpanContext) when: decorator.afterStart(span) @@ -25,6 +27,8 @@ class DatabaseClientDecoratorTest extends ClientDecoratorTest { } 1 * span.setMeasured(true) 1 * span.setTag(Tags.COMPONENT, "test-component") + 1 * span.context() >> spanContext + 1 * spanContext.setInstrumentationComponentName("test-component") 1 * span.setTag(Tags.SPAN_KIND, "client") 1 * span.setSpanType("test-type") 1 * span.setMetric(DDTags.ANALYTICS_SAMPLE_RATE, 1.0) diff --git a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/ServerDecoratorTest.groovy b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/ServerDecoratorTest.groovy index 049b2724d70..2373b1f7d05 100644 --- a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/ServerDecoratorTest.groovy +++ b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/ServerDecoratorTest.groovy @@ -2,6 +2,7 @@ package datadog.trace.bootstrap.instrumentation.decorator import datadog.trace.bootstrap.instrumentation.api.AgentSpan +import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext import static datadog.trace.api.DDTags.ANALYTICS_SAMPLE_RATE import static datadog.trace.api.DDTags.LANGUAGE_TAG_KEY @@ -15,12 +16,16 @@ class ServerDecoratorTest extends BaseDecoratorTest { def "test afterStart"() { def decorator = newDecorator() + def spanContext = Mock(AgentSpanContext) + when: decorator.afterStart(span) then: 1 * span.setTag(LANGUAGE_TAG_KEY, LANGUAGE_TAG_VALUE) 1 * span.setTag(COMPONENT, "test-component") + 1 * span.context() >> spanContext + 1 * spanContext.setInstrumentationComponentName("test-component") 1 * span.setTag(SPAN_KIND, "server") 1 * span.setSpanType(decorator.spanType()) if (decorator.traceAnalyticsEnabled) { diff --git a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/decorator/TestDecoratorImpl.java b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/decorator/TestDecoratorImpl.java index c75c85b3b9b..160a131e435 100644 --- a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/decorator/TestDecoratorImpl.java +++ b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/decorator/TestDecoratorImpl.java @@ -51,6 +51,7 @@ public AgentSpan afterStart(final AgentSpan span) { span.setTag(DDTags.HOST_VCPU_COUNT, cpuCount); span.setTag(Tags.TEST_TYPE, testType()); span.setTag(Tags.COMPONENT, component()); + span.context().setInstrumentationComponentName(component()); span.setTag(Tags.TEST_SESSION_NAME, sessionName); for (final Map.Entry ciTag : ciTags.entrySet()) { diff --git a/dd-java-agent/agent-ci-visibility/src/test/groovy/datadog/trace/civisibility/decorator/TestDecoratorImplTest.groovy b/dd-java-agent/agent-ci-visibility/src/test/groovy/datadog/trace/civisibility/decorator/TestDecoratorImplTest.groovy index 6cc4bc1ce6b..089bf8ea1c7 100644 --- a/dd-java-agent/agent-ci-visibility/src/test/groovy/datadog/trace/civisibility/decorator/TestDecoratorImplTest.groovy +++ b/dd-java-agent/agent-ci-visibility/src/test/groovy/datadog/trace/civisibility/decorator/TestDecoratorImplTest.groovy @@ -20,6 +20,7 @@ class TestDecoratorImplTest extends Specification { then: 1 * span.setTag(Tags.TEST_SESSION_NAME, "session-name") 1 * span.setTag(Tags.COMPONENT, "test-component") + 1 * span.context().setInstrumentationComponentName("test-component") 1 * span.setTag(Tags.TEST_TYPE, decorator.testType()) 1 * span.setSamplingPriority(PrioritySampling.SAMPLER_KEEP) 1 * span.setTag(DDTags.ORIGIN_KEY, decorator.origin()) diff --git a/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/trace/OtelSpan.java b/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/trace/OtelSpan.java index 095801ef95e..ce595919f6a 100644 --- a/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/trace/OtelSpan.java +++ b/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/trace/OtelSpan.java @@ -43,6 +43,7 @@ public OtelSpan(AgentSpan delegate) { } this.statusCode = UNSET; this.recording = true; + delegate.context().setInstrumentationComponentName("opentelemetry"); } public static Span invalid() { diff --git a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/JDBCDecorator.java b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/JDBCDecorator.java index 392d97836e5..cffb821208a 100644 --- a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/JDBCDecorator.java +++ b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/JDBCDecorator.java @@ -241,6 +241,7 @@ private AgentSpan withQueryInfo(AgentSpan span, DBQueryInfo info, CharSequence c } else { span.setResourceName(DB_QUERY); } + span.context().setInstrumentationComponentName(component); return span.setTag(Tags.COMPONENT, component); } diff --git a/dd-java-agent/instrumentation/karate/src/main/java/datadog/trace/instrumentation/karate/KarateTracingHook.java b/dd-java-agent/instrumentation/karate/src/main/java/datadog/trace/instrumentation/karate/KarateTracingHook.java index a3c91e1f6f1..c1c7fe05dcf 100644 --- a/dd-java-agent/instrumentation/karate/src/main/java/datadog/trace/instrumentation/karate/KarateTracingHook.java +++ b/dd-java-agent/instrumentation/karate/src/main/java/datadog/trace/instrumentation/karate/KarateTracingHook.java @@ -201,6 +201,7 @@ public boolean beforeStep(Step step, ScenarioRuntime sr) { String stepName = step.getPrefix() + " " + step.getText(); span.setResourceName(stepName); span.setTag(Tags.COMPONENT, "karate"); + span.context().setInstrumentationComponentName("karate"); span.setTag("step.name", stepName); span.setTag("step.startLine", step.getLine()); span.setTag("step.endLine", step.getEndLine()); diff --git a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/main/java/datadog/trace/instrumentation/opentelemetry/OtelTracer.java b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/main/java/datadog/trace/instrumentation/opentelemetry/OtelTracer.java index 0ba050f2ad3..b0dbf4b7c75 100644 --- a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/main/java/datadog/trace/instrumentation/opentelemetry/OtelTracer.java +++ b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/main/java/datadog/trace/instrumentation/opentelemetry/OtelTracer.java @@ -162,7 +162,9 @@ public Span.Builder setStartTimestamp(final long startTimestamp) { @Override public Span startSpan() { - return converter.toSpan(delegate.start()); + final AgentSpan agentSpan = delegate.start(); + agentSpan.context().setInstrumentationComponentName("opentelemetry"); + return converter.toSpan(agentSpan); } } } diff --git a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/test/groovy/OpenTelemetryTest.groovy b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/test/groovy/OpenTelemetryTest.groovy index 8e6e50527e8..c4329463b16 100644 --- a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/test/groovy/OpenTelemetryTest.groovy +++ b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/test/groovy/OpenTelemetryTest.groovy @@ -82,6 +82,7 @@ class OpenTelemetryTest extends AgentTestRunner { } defaultTags() } + assert span.context().instrumentationComponentName == "opentelemetry" } } } diff --git a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/OpenTelemetry14Test.groovy b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/OpenTelemetry14Test.groovy index 3f52a661c80..22b80cdb250 100644 --- a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/OpenTelemetry14Test.groovy +++ b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/OpenTelemetry14Test.groovy @@ -535,6 +535,7 @@ class OpenTelemetry14Test extends AgentTestRunner { "empty-array" "" } } + assert span.context().instrumentationComponentName == "opentelemetry" } } } diff --git a/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTTracer.java b/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTTracer.java index 7074a62b377..7dbd24cb56a 100644 --- a/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTTracer.java +++ b/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTTracer.java @@ -151,12 +151,15 @@ public Span startManual() { @Override public Span start() { final AgentSpan agentSpan = delegate.start(); + agentSpan.context().setInstrumentationComponentName("opentracing"); return converter.toSpan(agentSpan); } @Override public Scope startActive(final boolean finishSpanOnClose) { - return converter.toScope(tracer.activateManualSpan(delegate.start()), finishSpanOnClose); + final AgentSpan agentSpan = delegate.start(); + agentSpan.context().setInstrumentationComponentName("opentracing"); + return converter.toScope(tracer.activateManualSpan(agentSpan), finishSpanOnClose); } } } diff --git a/dd-java-agent/instrumentation/opentracing/api-0.31/src/test/groovy/OpenTracing31Test.groovy b/dd-java-agent/instrumentation/opentracing/api-0.31/src/test/groovy/OpenTracing31Test.groovy index 4671338e56f..ee1a9f786db 100644 --- a/dd-java-agent/instrumentation/opentracing/api-0.31/src/test/groovy/OpenTracing31Test.groovy +++ b/dd-java-agent/instrumentation/opentracing/api-0.31/src/test/groovy/OpenTracing31Test.groovy @@ -113,6 +113,7 @@ class OpenTracing31Test extends AgentTestRunner { } defaultTags(addReference != null) } + assert span.context().instrumentationComponentName == "opentracing" } } } diff --git a/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTTracer.java b/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTTracer.java index 83094d05722..4bec3c21cee 100644 --- a/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTTracer.java +++ b/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTTracer.java @@ -173,12 +173,15 @@ public Span startManual() { @Override public Span start() { final AgentSpan agentSpan = delegate.start(); + agentSpan.context().setInstrumentationComponentName("opentracing"); return converter.toSpan(agentSpan); } @Override public Scope startActive(final boolean finishSpanOnClose) { - return converter.toScope(tracer.activateManualSpan(delegate.start()), finishSpanOnClose); + final AgentSpan agentSpan = delegate.start(); + agentSpan.context().setInstrumentationComponentName("opentracing"); + return converter.toScope(tracer.activateManualSpan(agentSpan), finishSpanOnClose); } } } diff --git a/dd-java-agent/instrumentation/opentracing/api-0.32/src/test/groovy/OpenTracing32Test.groovy b/dd-java-agent/instrumentation/opentracing/api-0.32/src/test/groovy/OpenTracing32Test.groovy index bb815ca9153..1a7fd56abb2 100644 --- a/dd-java-agent/instrumentation/opentracing/api-0.32/src/test/groovy/OpenTracing32Test.groovy +++ b/dd-java-agent/instrumentation/opentracing/api-0.32/src/test/groovy/OpenTracing32Test.groovy @@ -118,6 +118,7 @@ class OpenTracing32Test extends AgentTestRunner { } defaultTags(addReference != null) } + assert span.context().instrumentationComponentName == "opentracing" } } } diff --git a/dd-java-agent/instrumentation/vertx-sql-client-3.9/src/main/java/datadog/trace/instrumentation/vertx_sql_client_39/VertxSqlClientDecorator.java b/dd-java-agent/instrumentation/vertx-sql-client-3.9/src/main/java/datadog/trace/instrumentation/vertx_sql_client_39/VertxSqlClientDecorator.java index 951fa69ebb5..310fb3c0552 100644 --- a/dd-java-agent/instrumentation/vertx-sql-client-3.9/src/main/java/datadog/trace/instrumentation/vertx_sql_client_39/VertxSqlClientDecorator.java +++ b/dd-java-agent/instrumentation/vertx-sql-client-3.9/src/main/java/datadog/trace/instrumentation/vertx_sql_client_39/VertxSqlClientDecorator.java @@ -100,7 +100,7 @@ public AgentSpan startAndDecorateSpanForStatement( span.setResourceName(DB_QUERY); } span.setTag(Tags.COMPONENT, component); - + span.context().setInstrumentationComponentName(component); return span; } diff --git a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/asserts/TagsAssert.groovy b/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/asserts/TagsAssert.groovy index 8db86d22f01..eb820d88b20 100644 --- a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/asserts/TagsAssert.groovy +++ b/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/asserts/TagsAssert.groovy @@ -93,6 +93,10 @@ class TagsAssert { DDTags.REQUIRED_CODE_ORIGIN_TAGS.each { assertedTags.add(it) } + assertedTags.add(DDTags.INTEGRATION_COMPONENT) + if (tags[Tags.COMPONENT] != null) { + assert tags[Tags.COMPONENT] == tags[DDTags.INTEGRATION_COMPONENT] + } assert tags["thread.name"] != null assert tags["thread.id"] != null diff --git a/dd-trace-api/src/main/java/datadog/trace/api/DDTags.java b/dd-trace-api/src/main/java/datadog/trace/api/DDTags.java index 1556fef030c..025b5e24314 100644 --- a/dd-trace-api/src/main/java/datadog/trace/api/DDTags.java +++ b/dd-trace-api/src/main/java/datadog/trace/api/DDTags.java @@ -99,4 +99,5 @@ public class DDTags { public static final String DECISION_MAKER_SERVICE = "_dd.dm.service"; public static final String DECISION_MAKER_RESOURCE = "_dd.dm.resource"; public static final String PROCESS_TAGS = "_dd.tags.process"; + public static final String INTEGRATION_COMPONENT = "_dd.integration_component"; } 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 783bc02bfd2..fe633f861fd 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 @@ -85,6 +85,7 @@ public class DDSpanContext private final UTF8BytesString threadName; private volatile short httpStatusCode; + private CharSequence instrumentationComponentName; /** * Tags are associated to the current span, they will not propagate to the children span. @@ -880,6 +881,15 @@ public void processTagsAndBaggage( } } + @Override + public void setInstrumentationComponentName(CharSequence componentName) { + this.instrumentationComponentName = componentName; + } + + public CharSequence getInstrumentationComponentName() { + return instrumentationComponentName; + } + @Override public String toString() { final StringBuilder s = diff --git a/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/InstrumentationComponentAdder.java b/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/InstrumentationComponentAdder.java new file mode 100644 index 00000000000..0e48b4daeef --- /dev/null +++ b/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/InstrumentationComponentAdder.java @@ -0,0 +1,23 @@ +package datadog.trace.core.tagprocessor; + +import static datadog.trace.api.DDTags.INTEGRATION_COMPONENT; + +import datadog.trace.bootstrap.instrumentation.api.AgentSpanLink; +import datadog.trace.core.DDSpanContext; +import java.util.List; +import java.util.Map; + +public class InstrumentationComponentAdder implements TagsPostProcessor { + + @Override + public Map processTags( + Map unsafeTags, DDSpanContext spanContext, List spanLinks) { + final CharSequence internalComponentName = spanContext.getInstrumentationComponentName(); + if (internalComponentName != null) { + unsafeTags.put(INTEGRATION_COMPONENT, internalComponentName); + } else { + unsafeTags.remove(INTEGRATION_COMPONENT); + } + return unsafeTags; + } +} diff --git a/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/TagsPostProcessorFactory.java b/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/TagsPostProcessorFactory.java index 2812bdb8479..4bc46f6644b 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/TagsPostProcessorFactory.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/TagsPostProcessorFactory.java @@ -32,6 +32,7 @@ private static TagsPostProcessor create() { if (Config.get().isAddSpanPointers("aws")) { processors.add(new SpanPointersProcessor()); } + processors.add(new InstrumentationComponentAdder()); return new PostProcessorChain( processors.toArray(processors.toArray(new TagsPostProcessor[0]))); } diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/tagprocessor/InstrumentationComponentAdderTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/tagprocessor/InstrumentationComponentAdderTest.groovy new file mode 100644 index 00000000000..1d0f2b9b8fa --- /dev/null +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/tagprocessor/InstrumentationComponentAdderTest.groovy @@ -0,0 +1,26 @@ +package datadog.trace.core.tagprocessor + + +import datadog.trace.core.DDSpanContext +import datadog.trace.test.util.DDSpecification + +class InstrumentationComponentAdderTest extends DDSpecification { + def "should add or remove _dd.integration_component when set (#isSet) on the span context"() { + setup: + def calculator = new InstrumentationComponentAdder() + def spanContext = Mock(DDSpanContext) + + when: + + def enrichedTags = calculator.processTags(["_dd.integration_component": "bad"], spanContext, []) + + then: + 1 * spanContext.getInstrumentationComponentName() >> (isSet ? "test" : null) + + and: + assert enrichedTags == (isSet ? ["_dd.integration_component": "test"] : [:]) + + where: + isSet << [true, false] + } +} diff --git a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentSpanContext.java b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentSpanContext.java index fd05ab149db..c40b0f6e336 100644 --- a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentSpanContext.java +++ b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentSpanContext.java @@ -53,6 +53,8 @@ public interface AgentSpanContext { default void mergePathwayContext(PathwayContext pathwayContext) {} + default void setInstrumentationComponentName(CharSequence componentName) {} + /** * Gets whether the span context used is part of the local trace or from another service * From 9582748d99e9d034fda4ff049ecbba9c49bf1bd8 Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Wed, 30 Apr 2025 09:37:46 +0200 Subject: [PATCH 02/21] fix tests --- .../decorator/TestDecoratorImplTest.groovy | 9 +++++++-- .../main/java/datadog/opentracing/DDTracer.java | 1 + .../datadog/opentracing/OpenTracingAPITest.groovy | 14 ++++++++++---- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/dd-java-agent/agent-ci-visibility/src/test/groovy/datadog/trace/civisibility/decorator/TestDecoratorImplTest.groovy b/dd-java-agent/agent-ci-visibility/src/test/groovy/datadog/trace/civisibility/decorator/TestDecoratorImplTest.groovy index 089bf8ea1c7..f464af1050a 100644 --- a/dd-java-agent/agent-ci-visibility/src/test/groovy/datadog/trace/civisibility/decorator/TestDecoratorImplTest.groovy +++ b/dd-java-agent/agent-ci-visibility/src/test/groovy/datadog/trace/civisibility/decorator/TestDecoratorImplTest.groovy @@ -3,24 +3,27 @@ package datadog.trace.civisibility.decorator import datadog.trace.api.DDTags import datadog.trace.api.sampling.PrioritySampling import datadog.trace.bootstrap.instrumentation.api.AgentSpan +import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext import datadog.trace.bootstrap.instrumentation.api.Tags import spock.lang.Specification class TestDecoratorImplTest extends Specification { def span = Mock(AgentSpan) + def context = Mock(AgentSpanContext) + def "test afterStart"() { setup: def decorator = new TestDecoratorImpl("test-component", "session-name", "test-command", ["ci-tag-1": "value", "ci-tag-2": "another value"]) - when: decorator.afterStart(span) then: 1 * span.setTag(Tags.TEST_SESSION_NAME, "session-name") 1 * span.setTag(Tags.COMPONENT, "test-component") - 1 * span.context().setInstrumentationComponentName("test-component") + 1 * span.context() >> context + 1 * context.setInstrumentationComponentName("test-component") 1 * span.setTag(Tags.TEST_TYPE, decorator.testType()) 1 * span.setSamplingPriority(PrioritySampling.SAMPLER_KEEP) 1 * span.setTag(DDTags.ORIGIN_KEY, decorator.origin()) @@ -45,6 +48,8 @@ class TestDecoratorImplTest extends Specification { decorator.afterStart(span) then: + 1 * span.context() >> context + 1 * context.setInstrumentationComponentName("test-component") 1 * span.setTag(Tags.TEST_SESSION_NAME, expectedSessionName) where: diff --git a/dd-trace-ot/src/main/java/datadog/opentracing/DDTracer.java b/dd-trace-ot/src/main/java/datadog/opentracing/DDTracer.java index fdea6629942..0213c97f644 100644 --- a/dd-trace-ot/src/main/java/datadog/opentracing/DDTracer.java +++ b/dd-trace-ot/src/main/java/datadog/opentracing/DDTracer.java @@ -656,6 +656,7 @@ public Span startManual() { @Override public Span start() { final AgentSpan agentSpan = delegate.start(); + agentSpan.context().setInstrumentationComponentName("opentracing"); return converter.toSpan(agentSpan); } diff --git a/dd-trace-ot/src/test/groovy/datadog/opentracing/OpenTracingAPITest.groovy b/dd-trace-ot/src/test/groovy/datadog/opentracing/OpenTracingAPITest.groovy index 7d4ccfb0761..1b604572de4 100644 --- a/dd-trace-ot/src/test/groovy/datadog/opentracing/OpenTracingAPITest.groovy +++ b/dd-trace-ot/src/test/groovy/datadog/opentracing/OpenTracingAPITest.groovy @@ -64,6 +64,7 @@ class OpenTracingAPITest extends DDSpecification { operationName "someOperation" resourceName "someOperation" tags { + "$DDTags.INTEGRATION_COMPONENT" "opentracing" defaultTags() } } @@ -74,7 +75,7 @@ class OpenTracingAPITest extends DDSpecification { def "span with builder"() { when: Span testSpan = tracer.buildSpan("someOperation") - .withTag(Tags.COMPONENT, "test-component") + .withTag(Tags.COMPONENT, "opentracing") .withTag("someBoolean", true) .withTag("someNumber", 1) .withTag(DDTags.SERVICE_NAME, "someService") @@ -100,7 +101,8 @@ class OpenTracingAPITest extends DDSpecification { operationName "someOperation" resourceName "someOperation" tags { - "$datadog.trace.bootstrap.instrumentation.api.Tags.COMPONENT" "test-component" + "$datadog.trace.bootstrap.instrumentation.api.Tags.COMPONENT" "opentracing" + "$DDTags.INTEGRATION_COMPONENT" "opentracing" "someBoolean" true "someNumber" 1 defaultTags() @@ -122,7 +124,7 @@ class OpenTracingAPITest extends DDSpecification { when: testSpan.setTag(DDTags.SERVICE_NAME, "someService") - testSpan.setTag(Tags.COMPONENT, "test-component") + testSpan.setTag(Tags.COMPONENT, "opentracing") testSpan.setTag("someBoolean", true) testSpan.setTag("someNumber", 1) testSpan.setOperationName("someOtherOperation") @@ -141,7 +143,8 @@ class OpenTracingAPITest extends DDSpecification { operationName("someOtherOperation") resourceName "someOtherOperation" tags { - "$datadog.trace.bootstrap.instrumentation.api.Tags.COMPONENT" "test-component" + "$datadog.trace.bootstrap.instrumentation.api.Tags.COMPONENT" "opentracing" + "$DDTags.INTEGRATION_COMPONENT" "opentracing" "someBoolean" true "someNumber" 1 defaultTags() @@ -205,6 +208,7 @@ class OpenTracingAPITest extends DDSpecification { operationName "someOperation" resourceName "someOperation" tags { + "$DDTags.INTEGRATION_COMPONENT" "opentracing" defaultTags() } } @@ -214,6 +218,7 @@ class OpenTracingAPITest extends DDSpecification { resourceName "someOperation2" childOf(span(0)) tags { + "$DDTags.INTEGRATION_COMPONENT" null defaultTags() } } @@ -258,6 +263,7 @@ class OpenTracingAPITest extends DDSpecification { operationName "someOperation" resourceName "someOperation" tags { + "$DDTags.INTEGRATION_COMPONENT" "opentracing" defaultTags() } } From c7f3405d817b937578d39af8ce9f43354fd8649d Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Wed, 30 Apr 2025 10:37:01 +0200 Subject: [PATCH 03/21] fix ci viz tests --- .../datadog/trace/civisibility/CiVisibilityTestUtils.groovy | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dd-java-agent/agent-ci-visibility/src/testFixtures/groovy/datadog/trace/civisibility/CiVisibilityTestUtils.groovy b/dd-java-agent/agent-ci-visibility/src/testFixtures/groovy/datadog/trace/civisibility/CiVisibilityTestUtils.groovy index 1a513d080e7..5a07f3f0386 100644 --- a/dd-java-agent/agent-ci-visibility/src/testFixtures/groovy/datadog/trace/civisibility/CiVisibilityTestUtils.groovy +++ b/dd-java-agent/agent-ci-visibility/src/testFixtures/groovy/datadog/trace/civisibility/CiVisibilityTestUtils.groovy @@ -55,7 +55,8 @@ abstract class CiVisibilityTestUtils { ] // ignored tags on assertion and fixture build - static final List IGNORED_TAGS = LibraryCapability.values().toList().stream().map(c -> "content.meta.['${c.asTag()}']").collect(Collectors.toList()) + static final List IGNORED_TAGS = LibraryCapability.values().toList().stream().map(c -> "content.meta.['${c.asTag()}']").collect(Collectors.toList()) + + ["content.meta.['_dd.integration_component']"] static final List COVERAGE_DYNAMIC_PATHS = [path("test_session_id"), path("test_suite_id"), path("span_id"),] From df41a18d6fbbcdd44c1eeb7eede7591ebafec5f1 Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Wed, 30 Apr 2025 12:28:00 +0200 Subject: [PATCH 04/21] Change tag name and use otel instead opentelemetry --- .../trace/civisibility/CiVisibilityTestUtils.groovy | 2 +- .../datadog/opentelemetry/shim/trace/OtelSpan.java | 2 +- .../instrumentation/opentelemetry/OtelTracer.java | 2 +- .../src/test/groovy/OpenTelemetryTest.groovy | 2 +- .../src/test/groovy/OpenTelemetry14Test.groovy | 2 +- .../trace/agent/test/asserts/TagsAssert.groovy | 4 ++-- .../src/main/java/datadog/trace/api/DDTags.java | 2 +- .../tagprocessor/InstrumentationComponentAdder.java | 6 +++--- .../InstrumentationComponentAdderTest.groovy | 6 +++--- .../datadog/opentracing/OpenTracingAPITest.groovy | 12 ++++++------ 10 files changed, 20 insertions(+), 20 deletions(-) diff --git a/dd-java-agent/agent-ci-visibility/src/testFixtures/groovy/datadog/trace/civisibility/CiVisibilityTestUtils.groovy b/dd-java-agent/agent-ci-visibility/src/testFixtures/groovy/datadog/trace/civisibility/CiVisibilityTestUtils.groovy index 5a07f3f0386..dea0be4fa61 100644 --- a/dd-java-agent/agent-ci-visibility/src/testFixtures/groovy/datadog/trace/civisibility/CiVisibilityTestUtils.groovy +++ b/dd-java-agent/agent-ci-visibility/src/testFixtures/groovy/datadog/trace/civisibility/CiVisibilityTestUtils.groovy @@ -56,7 +56,7 @@ abstract class CiVisibilityTestUtils { // ignored tags on assertion and fixture build static final List IGNORED_TAGS = LibraryCapability.values().toList().stream().map(c -> "content.meta.['${c.asTag()}']").collect(Collectors.toList()) + - ["content.meta.['_dd.integration_component']"] + ["content.meta.['_dd.integration']"] static final List COVERAGE_DYNAMIC_PATHS = [path("test_session_id"), path("test_suite_id"), path("span_id"),] diff --git a/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/trace/OtelSpan.java b/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/trace/OtelSpan.java index ce595919f6a..a96b79fb448 100644 --- a/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/trace/OtelSpan.java +++ b/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/trace/OtelSpan.java @@ -43,7 +43,7 @@ public OtelSpan(AgentSpan delegate) { } this.statusCode = UNSET; this.recording = true; - delegate.context().setInstrumentationComponentName("opentelemetry"); + delegate.context().setInstrumentationComponentName("otel"); } public static Span invalid() { diff --git a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/main/java/datadog/trace/instrumentation/opentelemetry/OtelTracer.java b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/main/java/datadog/trace/instrumentation/opentelemetry/OtelTracer.java index b0dbf4b7c75..7d5c07153ee 100644 --- a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/main/java/datadog/trace/instrumentation/opentelemetry/OtelTracer.java +++ b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/main/java/datadog/trace/instrumentation/opentelemetry/OtelTracer.java @@ -163,7 +163,7 @@ public Span.Builder setStartTimestamp(final long startTimestamp) { @Override public Span startSpan() { final AgentSpan agentSpan = delegate.start(); - agentSpan.context().setInstrumentationComponentName("opentelemetry"); + agentSpan.context().setInstrumentationComponentName("otel"); return converter.toSpan(agentSpan); } } diff --git a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/test/groovy/OpenTelemetryTest.groovy b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/test/groovy/OpenTelemetryTest.groovy index c4329463b16..08c598c4ad4 100644 --- a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/test/groovy/OpenTelemetryTest.groovy +++ b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/test/groovy/OpenTelemetryTest.groovy @@ -82,7 +82,7 @@ class OpenTelemetryTest extends AgentTestRunner { } defaultTags() } - assert span.context().instrumentationComponentName == "opentelemetry" + assert span.context().instrumentationComponentName == "otel" } } } diff --git a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/OpenTelemetry14Test.groovy b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/OpenTelemetry14Test.groovy index 22b80cdb250..e5924496da0 100644 --- a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/OpenTelemetry14Test.groovy +++ b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/OpenTelemetry14Test.groovy @@ -535,7 +535,7 @@ class OpenTelemetry14Test extends AgentTestRunner { "empty-array" "" } } - assert span.context().instrumentationComponentName == "opentelemetry" + assert span.context().instrumentationComponentName == "otel" } } } diff --git a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/asserts/TagsAssert.groovy b/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/asserts/TagsAssert.groovy index eb820d88b20..cfc6be20db8 100644 --- a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/asserts/TagsAssert.groovy +++ b/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/asserts/TagsAssert.groovy @@ -93,9 +93,9 @@ class TagsAssert { DDTags.REQUIRED_CODE_ORIGIN_TAGS.each { assertedTags.add(it) } - assertedTags.add(DDTags.INTEGRATION_COMPONENT) + assertedTags.add(DDTags.DD_INTEGRATION) if (tags[Tags.COMPONENT] != null) { - assert tags[Tags.COMPONENT] == tags[DDTags.INTEGRATION_COMPONENT] + assert tags[Tags.COMPONENT] == tags[DDTags.DD_INTEGRATION] } assert tags["thread.name"] != null diff --git a/dd-trace-api/src/main/java/datadog/trace/api/DDTags.java b/dd-trace-api/src/main/java/datadog/trace/api/DDTags.java index 025b5e24314..8df03a13011 100644 --- a/dd-trace-api/src/main/java/datadog/trace/api/DDTags.java +++ b/dd-trace-api/src/main/java/datadog/trace/api/DDTags.java @@ -99,5 +99,5 @@ public class DDTags { public static final String DECISION_MAKER_SERVICE = "_dd.dm.service"; public static final String DECISION_MAKER_RESOURCE = "_dd.dm.resource"; public static final String PROCESS_TAGS = "_dd.tags.process"; - public static final String INTEGRATION_COMPONENT = "_dd.integration_component"; + public static final String DD_INTEGRATION = "_dd.integration"; } diff --git a/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/InstrumentationComponentAdder.java b/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/InstrumentationComponentAdder.java index 0e48b4daeef..367f19f8538 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/InstrumentationComponentAdder.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/InstrumentationComponentAdder.java @@ -1,6 +1,6 @@ package datadog.trace.core.tagprocessor; -import static datadog.trace.api.DDTags.INTEGRATION_COMPONENT; +import static datadog.trace.api.DDTags.DD_INTEGRATION; import datadog.trace.bootstrap.instrumentation.api.AgentSpanLink; import datadog.trace.core.DDSpanContext; @@ -14,9 +14,9 @@ public Map processTags( Map unsafeTags, DDSpanContext spanContext, List spanLinks) { final CharSequence internalComponentName = spanContext.getInstrumentationComponentName(); if (internalComponentName != null) { - unsafeTags.put(INTEGRATION_COMPONENT, internalComponentName); + unsafeTags.put(DD_INTEGRATION, internalComponentName); } else { - unsafeTags.remove(INTEGRATION_COMPONENT); + unsafeTags.remove(DD_INTEGRATION); } return unsafeTags; } diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/tagprocessor/InstrumentationComponentAdderTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/tagprocessor/InstrumentationComponentAdderTest.groovy index 1d0f2b9b8fa..85080ef7414 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/tagprocessor/InstrumentationComponentAdderTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/tagprocessor/InstrumentationComponentAdderTest.groovy @@ -5,20 +5,20 @@ import datadog.trace.core.DDSpanContext import datadog.trace.test.util.DDSpecification class InstrumentationComponentAdderTest extends DDSpecification { - def "should add or remove _dd.integration_component when set (#isSet) on the span context"() { + def "should add or remove _dd.integration when set (#isSet) on the span context"() { setup: def calculator = new InstrumentationComponentAdder() def spanContext = Mock(DDSpanContext) when: - def enrichedTags = calculator.processTags(["_dd.integration_component": "bad"], spanContext, []) + def enrichedTags = calculator.processTags(["_dd.integration": "bad"], spanContext, []) then: 1 * spanContext.getInstrumentationComponentName() >> (isSet ? "test" : null) and: - assert enrichedTags == (isSet ? ["_dd.integration_component": "test"] : [:]) + assert enrichedTags == (isSet ? ["_dd.integration": "test"] : [:]) where: isSet << [true, false] diff --git a/dd-trace-ot/src/test/groovy/datadog/opentracing/OpenTracingAPITest.groovy b/dd-trace-ot/src/test/groovy/datadog/opentracing/OpenTracingAPITest.groovy index 1b604572de4..a102429011b 100644 --- a/dd-trace-ot/src/test/groovy/datadog/opentracing/OpenTracingAPITest.groovy +++ b/dd-trace-ot/src/test/groovy/datadog/opentracing/OpenTracingAPITest.groovy @@ -64,7 +64,7 @@ class OpenTracingAPITest extends DDSpecification { operationName "someOperation" resourceName "someOperation" tags { - "$DDTags.INTEGRATION_COMPONENT" "opentracing" + "$DDTags.DD_INTEGRATION" "opentracing" defaultTags() } } @@ -102,7 +102,7 @@ class OpenTracingAPITest extends DDSpecification { resourceName "someOperation" tags { "$datadog.trace.bootstrap.instrumentation.api.Tags.COMPONENT" "opentracing" - "$DDTags.INTEGRATION_COMPONENT" "opentracing" + "$DDTags.DD_INTEGRATION" "opentracing" "someBoolean" true "someNumber" 1 defaultTags() @@ -144,7 +144,7 @@ class OpenTracingAPITest extends DDSpecification { resourceName "someOtherOperation" tags { "$datadog.trace.bootstrap.instrumentation.api.Tags.COMPONENT" "opentracing" - "$DDTags.INTEGRATION_COMPONENT" "opentracing" + "$DDTags.DD_INTEGRATION" "opentracing" "someBoolean" true "someNumber" 1 defaultTags() @@ -208,7 +208,7 @@ class OpenTracingAPITest extends DDSpecification { operationName "someOperation" resourceName "someOperation" tags { - "$DDTags.INTEGRATION_COMPONENT" "opentracing" + "$DDTags.DD_INTEGRATION" "opentracing" defaultTags() } } @@ -218,7 +218,7 @@ class OpenTracingAPITest extends DDSpecification { resourceName "someOperation2" childOf(span(0)) tags { - "$DDTags.INTEGRATION_COMPONENT" null + "$DDTags.DD_INTEGRATION" null defaultTags() } } @@ -263,7 +263,7 @@ class OpenTracingAPITest extends DDSpecification { operationName "someOperation" resourceName "someOperation" tags { - "$DDTags.INTEGRATION_COMPONENT" "opentracing" + "$DDTags.DD_INTEGRATION" "opentracing" defaultTags() } } From a6543b1ef2ccc5e4f15b6d2a92298352bd09eee6 Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Wed, 30 Apr 2025 13:48:48 +0200 Subject: [PATCH 05/21] Add assertions for instrumentation which changes component tag --- .../src/test/groovy/FinatraServerTest.groovy | 5 +++++ ...akartaRsAnnotations3InstrumentationTest.groovy | 1 + .../java/lang/ProcessImplStartAdvice.java | 1 + .../JaxRsAnnotations1InstrumentationTest.groovy | 1 + .../src/test/groovy/JerseyTest.groovy | 2 ++ .../nestedTest/groovy/NestedResourcesTest.groovy | 1 + .../JaxRsAnnotations2InstrumentationTest.groovy | 1 + .../src/test/groovy/JaxRsFilterTest.groovy | 2 ++ .../trace/agent/test/asserts/TagsAssert.groovy | 8 ++++++-- .../trace/agent/test/base/HttpServerTest.groovy | 15 ++++++++++++++- 10 files changed, 34 insertions(+), 3 deletions(-) diff --git a/dd-java-agent/instrumentation/finatra-2.9/src/test/groovy/FinatraServerTest.groovy b/dd-java-agent/instrumentation/finatra-2.9/src/test/groovy/FinatraServerTest.groovy index c1a0cae0384..85a92c857c4 100644 --- a/dd-java-agent/instrumentation/finatra-2.9/src/test/groovy/FinatraServerTest.groovy +++ b/dd-java-agent/instrumentation/finatra-2.9/src/test/groovy/FinatraServerTest.groovy @@ -76,6 +76,11 @@ abstract class FinatraServerTest extends HttpServerTest { return false } + @Override + String expectedIntegrationName() { + "netty" + } + void handlerSpan(TraceAssert trace, ServerEndpoint endpoint = SUCCESS) { def errorEndpoint = endpoint == EXCEPTION || endpoint == ERROR trace.span { diff --git a/dd-java-agent/instrumentation/jakarta-rs-annotations-3/src/test/groovy/JakartaRsAnnotations3InstrumentationTest.groovy b/dd-java-agent/instrumentation/jakarta-rs-annotations-3/src/test/groovy/JakartaRsAnnotations3InstrumentationTest.groovy index 2e866d9e204..b9f7dfba8e6 100644 --- a/dd-java-agent/instrumentation/jakarta-rs-annotations-3/src/test/groovy/JakartaRsAnnotations3InstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/jakarta-rs-annotations-3/src/test/groovy/JakartaRsAnnotations3InstrumentationTest.groovy @@ -59,6 +59,7 @@ class JakartaRsAnnotations3InstrumentationTest extends AgentTestRunner { tags { "$Tags.COMPONENT" "jakarta-rs" "$Tags.HTTP_ROUTE" name.split(" ").last() + withCustomIntegrationName(null) defaultTags() } } diff --git a/dd-java-agent/instrumentation/java-lang/src/main/java/datadog/trace/instrumentation/java/lang/ProcessImplStartAdvice.java b/dd-java-agent/instrumentation/java-lang/src/main/java/datadog/trace/instrumentation/java/lang/ProcessImplStartAdvice.java index 028f4f22eea..3778b7a4e5d 100644 --- a/dd-java-agent/instrumentation/java-lang/src/main/java/datadog/trace/instrumentation/java/lang/ProcessImplStartAdvice.java +++ b/dd-java-agent/instrumentation/java-lang/src/main/java/datadog/trace/instrumentation/java/lang/ProcessImplStartAdvice.java @@ -22,6 +22,7 @@ public static AgentSpan startSpan(@Advice.Argument(0) final String[] command) th span.setSpanType("system"); span.setResourceName(ProcessImplInstrumentationHelpers.determineResource(command)); span.setTag("component", "subprocess"); + span.context().setInstrumentationComponentName("subprocess"); ProcessImplInstrumentationHelpers.setTags(span, command); ProcessImplInstrumentationHelpers.cmdiRaspCheck(command); return span; diff --git a/dd-java-agent/instrumentation/jax-rs-annotations-1/src/test/groovy/JaxRsAnnotations1InstrumentationTest.groovy b/dd-java-agent/instrumentation/jax-rs-annotations-1/src/test/groovy/JaxRsAnnotations1InstrumentationTest.groovy index 30854a300f2..bb594d64145 100644 --- a/dd-java-agent/instrumentation/jax-rs-annotations-1/src/test/groovy/JaxRsAnnotations1InstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/jax-rs-annotations-1/src/test/groovy/JaxRsAnnotations1InstrumentationTest.groovy @@ -59,6 +59,7 @@ class JaxRsAnnotations1InstrumentationTest extends AgentTestRunner { tags { "$Tags.COMPONENT" "jax-rs" "$Tags.HTTP_ROUTE" name.split(" ").last() + withCustomIntegrationName(null) defaultTags() } } diff --git a/dd-java-agent/instrumentation/jax-rs-annotations-1/src/test/groovy/JerseyTest.groovy b/dd-java-agent/instrumentation/jax-rs-annotations-1/src/test/groovy/JerseyTest.groovy index 522eb3dd420..8bedeff5232 100644 --- a/dd-java-agent/instrumentation/jax-rs-annotations-1/src/test/groovy/JerseyTest.groovy +++ b/dd-java-agent/instrumentation/jax-rs-annotations-1/src/test/groovy/JerseyTest.groovy @@ -35,6 +35,7 @@ class JerseyTest extends AgentTestRunner { tags { "$Tags.COMPONENT" "jax-rs" "$Tags.HTTP_ROUTE" expectedResourceName.split(" ").last() + withCustomIntegrationName(null) defaultTags() } } @@ -78,6 +79,7 @@ class JerseyTest extends AgentTestRunner { tags { "$Tags.COMPONENT" "jax-rs" "$Tags.HTTP_ROUTE" parentResourceName.split(" ").last() + withCustomIntegrationName(null) defaultTags() } } diff --git a/dd-java-agent/instrumentation/jax-rs-annotations-2/src/nestedTest/groovy/NestedResourcesTest.groovy b/dd-java-agent/instrumentation/jax-rs-annotations-2/src/nestedTest/groovy/NestedResourcesTest.groovy index 0edf9c3273f..c720d556c64 100644 --- a/dd-java-agent/instrumentation/jax-rs-annotations-2/src/nestedTest/groovy/NestedResourcesTest.groovy +++ b/dd-java-agent/instrumentation/jax-rs-annotations-2/src/nestedTest/groovy/NestedResourcesTest.groovy @@ -44,6 +44,7 @@ class NestedResourcesTest extends AgentTestRunner { tags { "$Tags.COMPONENT" "jax-rs" "$Tags.HTTP_ROUTE" "/admin/realms" + withCustomIntegrationName(null) defaultTags() } } diff --git a/dd-java-agent/instrumentation/jax-rs-annotations-2/src/test/groovy/JaxRsAnnotations2InstrumentationTest.groovy b/dd-java-agent/instrumentation/jax-rs-annotations-2/src/test/groovy/JaxRsAnnotations2InstrumentationTest.groovy index e51d641b356..4ee074d4c9e 100644 --- a/dd-java-agent/instrumentation/jax-rs-annotations-2/src/test/groovy/JaxRsAnnotations2InstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/jax-rs-annotations-2/src/test/groovy/JaxRsAnnotations2InstrumentationTest.groovy @@ -59,6 +59,7 @@ class JaxRsAnnotations2InstrumentationTest extends AgentTestRunner { tags { "$Tags.COMPONENT" "jax-rs" "$Tags.HTTP_ROUTE" name.split(" ").last() + withCustomIntegrationName(null) defaultTags() } } diff --git a/dd-java-agent/instrumentation/jax-rs-annotations-2/src/test/groovy/JaxRsFilterTest.groovy b/dd-java-agent/instrumentation/jax-rs-annotations-2/src/test/groovy/JaxRsFilterTest.groovy index 590acbde6b5..a2de27b8339 100644 --- a/dd-java-agent/instrumentation/jax-rs-annotations-2/src/test/groovy/JaxRsFilterTest.groovy +++ b/dd-java-agent/instrumentation/jax-rs-annotations-2/src/test/groovy/JaxRsFilterTest.groovy @@ -63,6 +63,7 @@ abstract class JaxRsFilterTest extends AgentTestRunner { if (httpRoute) { "$Tags.HTTP_ROUTE" httpRoute } + withCustomIntegrationName(null) defaultTags() } } @@ -123,6 +124,7 @@ abstract class JaxRsFilterTest extends AgentTestRunner { tags { "$Tags.COMPONENT" "jax-rs" "$Tags.HTTP_ROUTE" resource + withCustomIntegrationName(null) defaultTags() } } diff --git a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/asserts/TagsAssert.groovy b/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/asserts/TagsAssert.groovy index cfc6be20db8..6c4b11e1aab 100644 --- a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/asserts/TagsAssert.groovy +++ b/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/asserts/TagsAssert.groovy @@ -46,6 +46,11 @@ class TagsAssert { tag(DDTags.PEER_SERVICE_SOURCE, { SpanNaming.instance().namingSchema().peerService().supports() ? it == sourceTag : it == null }) } + def withCustomIntegrationName(String integrationName) { + assertedTags.add(DDTags.DD_INTEGRATION) + assert tags[DDTags.DD_INTEGRATION]?.toString() == integrationName + } + def defaultTagsNoPeerService(boolean distributedRootSpan = false) { defaultTags(distributedRootSpan, false) } @@ -93,8 +98,7 @@ class TagsAssert { DDTags.REQUIRED_CODE_ORIGIN_TAGS.each { assertedTags.add(it) } - assertedTags.add(DDTags.DD_INTEGRATION) - if (tags[Tags.COMPONENT] != null) { + if (assertedTags.add(DDTags.DD_INTEGRATION) && tags[Tags.COMPONENT] != null) { assert tags[Tags.COMPONENT] == tags[DDTags.DD_INTEGRATION] } diff --git a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/base/HttpServerTest.groovy b/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/base/HttpServerTest.groovy index 529a41510e7..ac37e179dae 100644 --- a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/base/HttpServerTest.groovy +++ b/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/base/HttpServerTest.groovy @@ -413,6 +413,15 @@ abstract class HttpServerTest extends WithHttpServer { false } + /** + * To be set if the integration name (_dd.integration) differs from the component. + * This happen when the controller integration modify the parent component name (i.e. jaxrs) + * @return + */ + String expectedIntegrationName() { + null + } + @Override int version() { return 0 @@ -2189,6 +2198,7 @@ abstract class HttpServerTest extends WithHttpServer { def expectedStatus = expectedStatus(endpoint) def expectedQueryTag = expectedQueryTag(endpoint) def expectedUrl = expectedUrl(endpoint, address) + def expectedIntegrationName = expectedIntegrationName() trace.span { serviceName expectedServiceName() operationName operation() @@ -2236,11 +2246,14 @@ abstract class HttpServerTest extends WithHttpServer { if ({ isDataStreamsEnabled() }) { "$DDTags.PATHWAY_HASH" { String } } + if (expectedIntegrationName != null) { + withCustomIntegrationName(expectedIntegrationName) + } // OkHttp never sends the fragment in the request. // if (endpoint.fragment) { // "$DDTags.HTTP_FRAGMENT" endpoint.fragment // } - defaultTags(true) + defaultTags(true, true) addTags(expectedExtraServerTags) if (extraTags) { it.addTags(extraTags) From 28d43aa43a4a7c3bda56f7a4c043fe000ff9f0d1 Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Wed, 30 Apr 2025 14:54:04 +0200 Subject: [PATCH 06/21] fix dropwizard tests --- .../dropwizard/src/test/groovy/DropwizardTest.groovy | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dd-java-agent/instrumentation/dropwizard/src/test/groovy/DropwizardTest.groovy b/dd-java-agent/instrumentation/dropwizard/src/test/groovy/DropwizardTest.groovy index e4b0d724808..9c41ac9a979 100644 --- a/dd-java-agent/instrumentation/dropwizard/src/test/groovy/DropwizardTest.groovy +++ b/dd-java-agent/instrumentation/dropwizard/src/test/groovy/DropwizardTest.groovy @@ -93,6 +93,11 @@ class DropwizardTest extends HttpServerTest { return "/${endpoint.relativeRawPath()}" } + @Override + String expectedIntegrationName() { + "java-web-servlet" + } + @Override boolean hasHandlerSpan() { true From 8cc698b18d7a315d399f618257417b54f5f380bd Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Wed, 30 Apr 2025 16:00:44 +0200 Subject: [PATCH 07/21] Fix latest finatra tests --- .../src/latestDepTest/groovy/FinatraServer270Test.groovy | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dd-java-agent/instrumentation/finatra-2.9/src/latestDepTest/groovy/FinatraServer270Test.groovy b/dd-java-agent/instrumentation/finatra-2.9/src/latestDepTest/groovy/FinatraServer270Test.groovy index 9142c9eacc9..f5294fe4b49 100644 --- a/dd-java-agent/instrumentation/finatra-2.9/src/latestDepTest/groovy/FinatraServer270Test.groovy +++ b/dd-java-agent/instrumentation/finatra-2.9/src/latestDepTest/groovy/FinatraServer270Test.groovy @@ -25,6 +25,11 @@ class FinatraServer270Test extends HttpServerTest { } } + @Override + String expectedIntegrationName() { + "netty" + } + @Override HttpServer startServer(int port) { HttpServer testServer = new FinatraServer() From 4e97f82ab435c09c4052282afafe9c0f5a7df8c5 Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Wed, 30 Apr 2025 16:12:54 +0200 Subject: [PATCH 08/21] Add instrumentation tag to netty connect spans --- .../netty38/ChannelFutureListenerInstrumentation.java | 2 ++ .../netty40/ChannelFutureListenerInstrumentation.java | 2 ++ .../netty41/ChannelFutureListenerInstrumentation.java | 2 ++ 3 files changed, 6 insertions(+) diff --git a/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/ChannelFutureListenerInstrumentation.java b/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/ChannelFutureListenerInstrumentation.java index 83d8be8db3e..a135f054bec 100644 --- a/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/ChannelFutureListenerInstrumentation.java +++ b/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/ChannelFutureListenerInstrumentation.java @@ -5,6 +5,7 @@ import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.instrumentation.netty38.server.NettyHttpServerDecorator.DECORATE; +import static datadog.trace.instrumentation.netty38.server.NettyHttpServerDecorator.NETTY; import static datadog.trace.instrumentation.netty38.server.NettyHttpServerDecorator.NETTY_CONNECT; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -107,6 +108,7 @@ public static AgentScope activateScope(@Advice.Argument(0) final ChannelFuture f final AgentScope parentScope = continuation.activate(); final AgentSpan errorSpan = startSpan(NETTY_CONNECT).setTag(Tags.COMPONENT, "netty"); + errorSpan.context().setInstrumentationComponentName(NETTY); try (final AgentScope scope = activateSpan(errorSpan)) { DECORATE.onError(errorSpan, cause); DECORATE.beforeFinish(errorSpan); diff --git a/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/ChannelFutureListenerInstrumentation.java b/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/ChannelFutureListenerInstrumentation.java index daa684df187..2f0bf8d79be 100644 --- a/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/ChannelFutureListenerInstrumentation.java +++ b/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/ChannelFutureListenerInstrumentation.java @@ -5,6 +5,7 @@ import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.instrumentation.netty40.AttributeKeys.CONNECT_PARENT_CONTINUATION_ATTRIBUTE_KEY; +import static datadog.trace.instrumentation.netty40.server.NettyHttpServerDecorator.NETTY; import static datadog.trace.instrumentation.netty40.server.NettyHttpServerDecorator.NETTY_CONNECT; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -92,6 +93,7 @@ public static AgentScope activateScope(@Advice.Argument(0) final ChannelFuture f final AgentScope parentScope = continuation.activate(); final AgentSpan errorSpan = startSpan(NETTY_CONNECT).setTag(Tags.COMPONENT, "netty"); + errorSpan.context().setInstrumentationComponentName(NETTY); try (final AgentScope scope = activateSpan(errorSpan)) { NettyHttpServerDecorator.DECORATE.onError(errorSpan, cause); NettyHttpServerDecorator.DECORATE.beforeFinish(errorSpan); diff --git a/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/ChannelFutureListenerInstrumentation.java b/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/ChannelFutureListenerInstrumentation.java index df528d3cf44..7e5ffcf9b02 100644 --- a/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/ChannelFutureListenerInstrumentation.java +++ b/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/ChannelFutureListenerInstrumentation.java @@ -5,6 +5,7 @@ import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; import static datadog.trace.instrumentation.netty41.AttributeKeys.CONNECT_PARENT_CONTINUATION_ATTRIBUTE_KEY; +import static datadog.trace.instrumentation.netty41.server.NettyHttpServerDecorator.NETTY; import static datadog.trace.instrumentation.netty41.server.NettyHttpServerDecorator.NETTY_CONNECT; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -92,6 +93,7 @@ public static AgentScope activateScope(@Advice.Argument(0) final ChannelFuture f final AgentScope parentScope = continuation.activate(); final AgentSpan errorSpan = startSpan(NETTY_CONNECT).setTag(Tags.COMPONENT, "netty"); + errorSpan.context().setInstrumentationComponentName(NETTY); try (final AgentScope scope = activateSpan(errorSpan)) { NettyHttpServerDecorator.DECORATE.onError(errorSpan, cause); NettyHttpServerDecorator.DECORATE.beforeFinish(errorSpan); From 0b4f1956ac66b4ccc67002e5bbd7d7f16747ff5e Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Wed, 30 Apr 2025 16:15:24 +0200 Subject: [PATCH 09/21] Add instrumentation tag to dropwizard view spans --- .../dropwizard/view/DropwizardViewInstrumentation.java | 1 + 1 file changed, 1 insertion(+) diff --git a/dd-java-agent/instrumentation/dropwizard/dropwizard-views/src/main/java/datadog/trace/instrumentation/dropwizard/view/DropwizardViewInstrumentation.java b/dd-java-agent/instrumentation/dropwizard/dropwizard-views/src/main/java/datadog/trace/instrumentation/dropwizard/view/DropwizardViewInstrumentation.java index 5e76a1427af..cbd660ee182 100644 --- a/dd-java-agent/instrumentation/dropwizard/dropwizard-views/src/main/java/datadog/trace/instrumentation/dropwizard/view/DropwizardViewInstrumentation.java +++ b/dd-java-agent/instrumentation/dropwizard/dropwizard-views/src/main/java/datadog/trace/instrumentation/dropwizard/view/DropwizardViewInstrumentation.java @@ -70,6 +70,7 @@ public static AgentScope onEnter( return null; } final AgentSpan span = startSpan("view.render").setTag(Tags.COMPONENT, "dropwizard-view"); + span.context().setInstrumentationComponentName("dropwizard-view"); span.setResourceName("View " + view.getTemplateName()); return activateSpan(span); } From 4498daf64f643bc77eba1aa1357585bc7b180652 Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Sun, 4 May 2025 07:25:39 +0200 Subject: [PATCH 10/21] fix tests --- .../src/latestDepTest/groovy/CxfContextPropagationTest.groovy | 1 + .../cxf-2.1/src/test/groovy/CxfContextPropagationTest.groovy | 1 + .../groovy/datadog/trace/agent/test/asserts/TagsAssert.groovy | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/dd-java-agent/instrumentation/cxf-2.1/src/latestDepTest/groovy/CxfContextPropagationTest.groovy b/dd-java-agent/instrumentation/cxf-2.1/src/latestDepTest/groovy/CxfContextPropagationTest.groovy index e944eb4f587..cdb32555132 100644 --- a/dd-java-agent/instrumentation/cxf-2.1/src/latestDepTest/groovy/CxfContextPropagationTest.groovy +++ b/dd-java-agent/instrumentation/cxf-2.1/src/latestDepTest/groovy/CxfContextPropagationTest.groovy @@ -75,6 +75,7 @@ class CxfContextPropagationTest extends AgentTestRunner { "$InstrumentationTags.SERVLET_PATH" "/test" "$Tags.HTTP_USER_AGENT" String "$Tags.HTTP_CLIENT_IP" "127.0.0.1" + withCustomIntegrationName("jetty-server") defaultTags() } } diff --git a/dd-java-agent/instrumentation/cxf-2.1/src/test/groovy/CxfContextPropagationTest.groovy b/dd-java-agent/instrumentation/cxf-2.1/src/test/groovy/CxfContextPropagationTest.groovy index 98eb0be56e6..9125854d559 100644 --- a/dd-java-agent/instrumentation/cxf-2.1/src/test/groovy/CxfContextPropagationTest.groovy +++ b/dd-java-agent/instrumentation/cxf-2.1/src/test/groovy/CxfContextPropagationTest.groovy @@ -73,6 +73,7 @@ class CxfContextPropagationTest extends AgentTestRunner { "servlet.path" { it == null || it == "/test" } "$Tags.HTTP_USER_AGENT" String "$Tags.HTTP_CLIENT_IP" "127.0.0.1" + withCustomIntegrationName("jetty-server") defaultTags() } } diff --git a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/asserts/TagsAssert.groovy b/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/asserts/TagsAssert.groovy index 6c4b11e1aab..b36e61fe784 100644 --- a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/asserts/TagsAssert.groovy +++ b/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/asserts/TagsAssert.groovy @@ -99,7 +99,7 @@ class TagsAssert { assertedTags.add(it) } if (assertedTags.add(DDTags.DD_INTEGRATION) && tags[Tags.COMPONENT] != null) { - assert tags[Tags.COMPONENT] == tags[DDTags.DD_INTEGRATION] + assert tags[Tags.COMPONENT].toString() == tags[DDTags.DD_INTEGRATION].toString() } assert tags["thread.name"] != null From f57e954f2112eac0bda4b840b8fba10786780ba9 Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Sun, 4 May 2025 07:32:48 +0200 Subject: [PATCH 11/21] fix ci viz smoke tests --- .../datadog/trace/civisibility/CiVisibilitySmokeTest.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dd-java-agent/agent-ci-visibility/src/testFixtures/groovy/datadog/trace/civisibility/CiVisibilitySmokeTest.groovy b/dd-java-agent/agent-ci-visibility/src/testFixtures/groovy/datadog/trace/civisibility/CiVisibilitySmokeTest.groovy index 9cfcc134d87..01ba099838d 100644 --- a/dd-java-agent/agent-ci-visibility/src/testFixtures/groovy/datadog/trace/civisibility/CiVisibilitySmokeTest.groovy +++ b/dd-java-agent/agent-ci-visibility/src/testFixtures/groovy/datadog/trace/civisibility/CiVisibilitySmokeTest.groovy @@ -12,7 +12,7 @@ abstract class CiVisibilitySmokeTest extends Specification { def baseTemplatesPath = CiVisibilitySmokeTest.classLoader.getResource(projectName).toURI().schemeSpecificPart.replace('build/resources/test', 'src/test/resources') CiVisibilityTestUtils.generateTemplates(baseTemplatesPath, events, coverages, additionalReplacements) } else { - CiVisibilityTestUtils.assertData(projectName, events, coverages, additionalReplacements, []) + CiVisibilityTestUtils.assertData(projectName, events, coverages, additionalReplacements,["content.meta.['_dd.integration']"]) } } From faec1e8b5a56ee70cc8ac2e173f6578056c979f8 Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Tue, 6 May 2025 10:29:09 +0200 Subject: [PATCH 12/21] Rename to instrumentationName --- .../instrumentation/decorator/BaseDecorator.java | 2 +- .../instrumentation/decorator/BaseDecoratorTest.groovy | 2 +- .../decorator/ClientDecoratorTest.groovy | 2 +- .../DBTypeProcessingDatabaseClientDecoratorTest.groovy | 2 +- .../decorator/DatabaseClientDecoratorTest.groovy | 2 +- .../decorator/ServerDecoratorTest.groovy | 2 +- .../civisibility/decorator/TestDecoratorImpl.java | 2 +- .../decorator/TestDecoratorImplTest.groovy | 4 ++-- .../datadog/opentelemetry/shim/trace/OtelSpan.java | 2 +- .../dropwizard/view/DropwizardViewInstrumentation.java | 2 +- .../java/lang/ProcessImplStartAdvice.java | 2 +- .../trace/instrumentation/jdbc/JDBCDecorator.java | 2 +- .../instrumentation/karate/KarateTracingHook.java | 2 +- .../netty38/ChannelFutureListenerInstrumentation.java | 2 +- .../netty40/ChannelFutureListenerInstrumentation.java | 2 +- .../netty41/ChannelFutureListenerInstrumentation.java | 2 +- .../instrumentation/opentelemetry/OtelTracer.java | 2 +- .../src/test/groovy/OpenTelemetryTest.groovy | 2 +- .../src/test/groovy/OpenTelemetry14Test.groovy | 2 +- .../trace/instrumentation/opentracing31/OTTracer.java | 4 ++-- .../api-0.31/src/test/groovy/OpenTracing31Test.groovy | 3 +-- .../trace/instrumentation/opentracing32/OTTracer.java | 4 ++-- .../api-0.32/src/test/groovy/OpenTracing32Test.groovy | 3 +-- .../vertx_sql_client_39/VertxSqlClientDecorator.java | 2 +- .../main/java/datadog/trace/core/DDSpanContext.java | 10 +++++----- .../tagprocessor/InstrumentationComponentAdder.java | 2 +- .../InstrumentationComponentAdderTest.groovy | 2 +- .../src/main/java/datadog/opentracing/DDTracer.java | 2 +- .../instrumentation/api/AgentSpanContext.java | 2 +- 29 files changed, 36 insertions(+), 38 deletions(-) diff --git a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/BaseDecorator.java b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/BaseDecorator.java index 888b7d344f9..817c2810d36 100644 --- a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/BaseDecorator.java +++ b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/BaseDecorator.java @@ -71,7 +71,7 @@ public AgentSpan afterStart(final AgentSpan span) { } final CharSequence component = component(); span.setTag(Tags.COMPONENT, component); - span.context().setInstrumentationComponentName(component); + span.context().setInstrumentationName(component); if (traceAnalyticsEnabled) { span.setMetric(DDTags.ANALYTICS_SAMPLE_RATE, traceAnalyticsSampleRate); } diff --git a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/BaseDecoratorTest.groovy b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/BaseDecoratorTest.groovy index 333799e24a9..1adb4a5d8c1 100644 --- a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/BaseDecoratorTest.groovy +++ b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/BaseDecoratorTest.groovy @@ -27,7 +27,7 @@ class BaseDecoratorTest extends DDSpecification { 1 * span.setSpanType(decorator.spanType()) 1 * span.setTag(Tags.COMPONENT, "test-component") 1 * span.context() >> spanContext - 1 * spanContext.setInstrumentationComponentName("test-component") + 1 * spanContext.setInstrumentationName("test-component") _ * span.setTag(_, _) // Want to allow other calls from child implementations. _ * span.setMeasured(true) _ * span.setMetric(_, _) diff --git a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/ClientDecoratorTest.groovy b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/ClientDecoratorTest.groovy index 0af10960b15..b4c81c7e0aa 100644 --- a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/ClientDecoratorTest.groovy +++ b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/ClientDecoratorTest.groovy @@ -24,7 +24,7 @@ class ClientDecoratorTest extends BaseDecoratorTest { 1 * span.setMeasured(true) 1 * span.setTag(Tags.COMPONENT, "test-component") 1 * span.context() >> spanContext - 1 * spanContext.setInstrumentationComponentName("test-component") + 1 * spanContext.setInstrumentationName("test-component") 1 * span.setTag(Tags.SPAN_KIND, "client") 1 * span.setSpanType(decorator.spanType()) 1 * span.setMetric(DDTags.ANALYTICS_SAMPLE_RATE, 1.0) diff --git a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/DBTypeProcessingDatabaseClientDecoratorTest.groovy b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/DBTypeProcessingDatabaseClientDecoratorTest.groovy index 3b2584636a5..3dce64c9c7d 100644 --- a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/DBTypeProcessingDatabaseClientDecoratorTest.groovy +++ b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/DBTypeProcessingDatabaseClientDecoratorTest.groovy @@ -25,7 +25,7 @@ class DBTypeProcessingDatabaseClientDecoratorTest extends ClientDecoratorTest { 1 * span.setMeasured(true) 1 * span.setTag(Tags.COMPONENT, "test-component") 1 * span.context() >> spanContext - 1 * spanContext.setInstrumentationComponentName("test-component") + 1 * spanContext.setInstrumentationName("test-component") 1 * span.setTag(Tags.SPAN_KIND, "client") 1 * span.setSpanType("test-type") 1 * span.setServiceName("test-db") diff --git a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/DatabaseClientDecoratorTest.groovy b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/DatabaseClientDecoratorTest.groovy index c2290ac82a8..c21d0bb4333 100644 --- a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/DatabaseClientDecoratorTest.groovy +++ b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/DatabaseClientDecoratorTest.groovy @@ -28,7 +28,7 @@ class DatabaseClientDecoratorTest extends ClientDecoratorTest { 1 * span.setMeasured(true) 1 * span.setTag(Tags.COMPONENT, "test-component") 1 * span.context() >> spanContext - 1 * spanContext.setInstrumentationComponentName("test-component") + 1 * spanContext.setInstrumentationName("test-component") 1 * span.setTag(Tags.SPAN_KIND, "client") 1 * span.setSpanType("test-type") 1 * span.setMetric(DDTags.ANALYTICS_SAMPLE_RATE, 1.0) diff --git a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/ServerDecoratorTest.groovy b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/ServerDecoratorTest.groovy index 2373b1f7d05..348c431025f 100644 --- a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/ServerDecoratorTest.groovy +++ b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/ServerDecoratorTest.groovy @@ -25,7 +25,7 @@ class ServerDecoratorTest extends BaseDecoratorTest { 1 * span.setTag(LANGUAGE_TAG_KEY, LANGUAGE_TAG_VALUE) 1 * span.setTag(COMPONENT, "test-component") 1 * span.context() >> spanContext - 1 * spanContext.setInstrumentationComponentName("test-component") + 1 * spanContext.setInstrumentationName("test-component") 1 * span.setTag(SPAN_KIND, "server") 1 * span.setSpanType(decorator.spanType()) if (decorator.traceAnalyticsEnabled) { diff --git a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/decorator/TestDecoratorImpl.java b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/decorator/TestDecoratorImpl.java index 160a131e435..77242516f39 100644 --- a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/decorator/TestDecoratorImpl.java +++ b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/decorator/TestDecoratorImpl.java @@ -51,7 +51,7 @@ public AgentSpan afterStart(final AgentSpan span) { span.setTag(DDTags.HOST_VCPU_COUNT, cpuCount); span.setTag(Tags.TEST_TYPE, testType()); span.setTag(Tags.COMPONENT, component()); - span.context().setInstrumentationComponentName(component()); + span.context().setInstrumentationName(component()); span.setTag(Tags.TEST_SESSION_NAME, sessionName); for (final Map.Entry ciTag : ciTags.entrySet()) { diff --git a/dd-java-agent/agent-ci-visibility/src/test/groovy/datadog/trace/civisibility/decorator/TestDecoratorImplTest.groovy b/dd-java-agent/agent-ci-visibility/src/test/groovy/datadog/trace/civisibility/decorator/TestDecoratorImplTest.groovy index f464af1050a..1367d348d5b 100644 --- a/dd-java-agent/agent-ci-visibility/src/test/groovy/datadog/trace/civisibility/decorator/TestDecoratorImplTest.groovy +++ b/dd-java-agent/agent-ci-visibility/src/test/groovy/datadog/trace/civisibility/decorator/TestDecoratorImplTest.groovy @@ -23,7 +23,7 @@ class TestDecoratorImplTest extends Specification { 1 * span.setTag(Tags.TEST_SESSION_NAME, "session-name") 1 * span.setTag(Tags.COMPONENT, "test-component") 1 * span.context() >> context - 1 * context.setInstrumentationComponentName("test-component") + 1 * context.setInstrumentationName("test-component") 1 * span.setTag(Tags.TEST_TYPE, decorator.testType()) 1 * span.setSamplingPriority(PrioritySampling.SAMPLER_KEEP) 1 * span.setTag(DDTags.ORIGIN_KEY, decorator.origin()) @@ -49,7 +49,7 @@ class TestDecoratorImplTest extends Specification { then: 1 * span.context() >> context - 1 * context.setInstrumentationComponentName("test-component") + 1 * context.setInstrumentationName("test-component") 1 * span.setTag(Tags.TEST_SESSION_NAME, expectedSessionName) where: diff --git a/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/trace/OtelSpan.java b/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/trace/OtelSpan.java index a96b79fb448..cee0b9ce332 100644 --- a/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/trace/OtelSpan.java +++ b/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/trace/OtelSpan.java @@ -43,7 +43,7 @@ public OtelSpan(AgentSpan delegate) { } this.statusCode = UNSET; this.recording = true; - delegate.context().setInstrumentationComponentName("otel"); + delegate.context().setInstrumentationName("otel"); } public static Span invalid() { diff --git a/dd-java-agent/instrumentation/dropwizard/dropwizard-views/src/main/java/datadog/trace/instrumentation/dropwizard/view/DropwizardViewInstrumentation.java b/dd-java-agent/instrumentation/dropwizard/dropwizard-views/src/main/java/datadog/trace/instrumentation/dropwizard/view/DropwizardViewInstrumentation.java index cbd660ee182..ed328549283 100644 --- a/dd-java-agent/instrumentation/dropwizard/dropwizard-views/src/main/java/datadog/trace/instrumentation/dropwizard/view/DropwizardViewInstrumentation.java +++ b/dd-java-agent/instrumentation/dropwizard/dropwizard-views/src/main/java/datadog/trace/instrumentation/dropwizard/view/DropwizardViewInstrumentation.java @@ -70,7 +70,7 @@ public static AgentScope onEnter( return null; } final AgentSpan span = startSpan("view.render").setTag(Tags.COMPONENT, "dropwizard-view"); - span.context().setInstrumentationComponentName("dropwizard-view"); + span.context().setInstrumentationName("dropwizard-view"); span.setResourceName("View " + view.getTemplateName()); return activateSpan(span); } diff --git a/dd-java-agent/instrumentation/java-lang/src/main/java/datadog/trace/instrumentation/java/lang/ProcessImplStartAdvice.java b/dd-java-agent/instrumentation/java-lang/src/main/java/datadog/trace/instrumentation/java/lang/ProcessImplStartAdvice.java index 3778b7a4e5d..615f35168aa 100644 --- a/dd-java-agent/instrumentation/java-lang/src/main/java/datadog/trace/instrumentation/java/lang/ProcessImplStartAdvice.java +++ b/dd-java-agent/instrumentation/java-lang/src/main/java/datadog/trace/instrumentation/java/lang/ProcessImplStartAdvice.java @@ -22,7 +22,7 @@ public static AgentSpan startSpan(@Advice.Argument(0) final String[] command) th span.setSpanType("system"); span.setResourceName(ProcessImplInstrumentationHelpers.determineResource(command)); span.setTag("component", "subprocess"); - span.context().setInstrumentationComponentName("subprocess"); + span.context().setInstrumentationName("subprocess"); ProcessImplInstrumentationHelpers.setTags(span, command); ProcessImplInstrumentationHelpers.cmdiRaspCheck(command); return span; diff --git a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/JDBCDecorator.java b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/JDBCDecorator.java index cffb821208a..a47c5885095 100644 --- a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/JDBCDecorator.java +++ b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/JDBCDecorator.java @@ -241,7 +241,7 @@ private AgentSpan withQueryInfo(AgentSpan span, DBQueryInfo info, CharSequence c } else { span.setResourceName(DB_QUERY); } - span.context().setInstrumentationComponentName(component); + span.context().setInstrumentationName(component); return span.setTag(Tags.COMPONENT, component); } diff --git a/dd-java-agent/instrumentation/karate/src/main/java/datadog/trace/instrumentation/karate/KarateTracingHook.java b/dd-java-agent/instrumentation/karate/src/main/java/datadog/trace/instrumentation/karate/KarateTracingHook.java index c1c7fe05dcf..9b0688d035c 100644 --- a/dd-java-agent/instrumentation/karate/src/main/java/datadog/trace/instrumentation/karate/KarateTracingHook.java +++ b/dd-java-agent/instrumentation/karate/src/main/java/datadog/trace/instrumentation/karate/KarateTracingHook.java @@ -201,7 +201,7 @@ public boolean beforeStep(Step step, ScenarioRuntime sr) { String stepName = step.getPrefix() + " " + step.getText(); span.setResourceName(stepName); span.setTag(Tags.COMPONENT, "karate"); - span.context().setInstrumentationComponentName("karate"); + span.context().setInstrumentationName("karate"); span.setTag("step.name", stepName); span.setTag("step.startLine", step.getLine()); span.setTag("step.endLine", step.getEndLine()); diff --git a/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/ChannelFutureListenerInstrumentation.java b/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/ChannelFutureListenerInstrumentation.java index a135f054bec..d9e5cfa5d9e 100644 --- a/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/ChannelFutureListenerInstrumentation.java +++ b/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/ChannelFutureListenerInstrumentation.java @@ -108,7 +108,7 @@ public static AgentScope activateScope(@Advice.Argument(0) final ChannelFuture f final AgentScope parentScope = continuation.activate(); final AgentSpan errorSpan = startSpan(NETTY_CONNECT).setTag(Tags.COMPONENT, "netty"); - errorSpan.context().setInstrumentationComponentName(NETTY); + errorSpan.context().setInstrumentationName(NETTY); try (final AgentScope scope = activateSpan(errorSpan)) { DECORATE.onError(errorSpan, cause); DECORATE.beforeFinish(errorSpan); diff --git a/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/ChannelFutureListenerInstrumentation.java b/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/ChannelFutureListenerInstrumentation.java index 2f0bf8d79be..4fb5f9d05c4 100644 --- a/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/ChannelFutureListenerInstrumentation.java +++ b/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/ChannelFutureListenerInstrumentation.java @@ -93,7 +93,7 @@ public static AgentScope activateScope(@Advice.Argument(0) final ChannelFuture f final AgentScope parentScope = continuation.activate(); final AgentSpan errorSpan = startSpan(NETTY_CONNECT).setTag(Tags.COMPONENT, "netty"); - errorSpan.context().setInstrumentationComponentName(NETTY); + errorSpan.context().setInstrumentationName(NETTY); try (final AgentScope scope = activateSpan(errorSpan)) { NettyHttpServerDecorator.DECORATE.onError(errorSpan, cause); NettyHttpServerDecorator.DECORATE.beforeFinish(errorSpan); diff --git a/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/ChannelFutureListenerInstrumentation.java b/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/ChannelFutureListenerInstrumentation.java index 7e5ffcf9b02..834e68646f6 100644 --- a/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/ChannelFutureListenerInstrumentation.java +++ b/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/ChannelFutureListenerInstrumentation.java @@ -93,7 +93,7 @@ public static AgentScope activateScope(@Advice.Argument(0) final ChannelFuture f final AgentScope parentScope = continuation.activate(); final AgentSpan errorSpan = startSpan(NETTY_CONNECT).setTag(Tags.COMPONENT, "netty"); - errorSpan.context().setInstrumentationComponentName(NETTY); + errorSpan.context().setInstrumentationName(NETTY); try (final AgentScope scope = activateSpan(errorSpan)) { NettyHttpServerDecorator.DECORATE.onError(errorSpan, cause); NettyHttpServerDecorator.DECORATE.beforeFinish(errorSpan); diff --git a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/main/java/datadog/trace/instrumentation/opentelemetry/OtelTracer.java b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/main/java/datadog/trace/instrumentation/opentelemetry/OtelTracer.java index 7d5c07153ee..1e664e03aaf 100644 --- a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/main/java/datadog/trace/instrumentation/opentelemetry/OtelTracer.java +++ b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/main/java/datadog/trace/instrumentation/opentelemetry/OtelTracer.java @@ -163,7 +163,7 @@ public Span.Builder setStartTimestamp(final long startTimestamp) { @Override public Span startSpan() { final AgentSpan agentSpan = delegate.start(); - agentSpan.context().setInstrumentationComponentName("otel"); + agentSpan.context().setInstrumentationName("otel"); return converter.toSpan(agentSpan); } } diff --git a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/test/groovy/OpenTelemetryTest.groovy b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/test/groovy/OpenTelemetryTest.groovy index 08c598c4ad4..a070d3ff860 100644 --- a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/test/groovy/OpenTelemetryTest.groovy +++ b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/test/groovy/OpenTelemetryTest.groovy @@ -82,7 +82,7 @@ class OpenTelemetryTest extends AgentTestRunner { } defaultTags() } - assert span.context().instrumentationComponentName == "otel" + assert span.context().instrumentationName == "otel" } } } diff --git a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/OpenTelemetry14Test.groovy b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/OpenTelemetry14Test.groovy index e5924496da0..e2d81cd21f6 100644 --- a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/OpenTelemetry14Test.groovy +++ b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/OpenTelemetry14Test.groovy @@ -535,7 +535,7 @@ class OpenTelemetry14Test extends AgentTestRunner { "empty-array" "" } } - assert span.context().instrumentationComponentName == "otel" + assert span.context().instrumentationName == "otel" } } } diff --git a/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTTracer.java b/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTTracer.java index 7dbd24cb56a..df8cd0b0f97 100644 --- a/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTTracer.java +++ b/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTTracer.java @@ -151,14 +151,14 @@ public Span startManual() { @Override public Span start() { final AgentSpan agentSpan = delegate.start(); - agentSpan.context().setInstrumentationComponentName("opentracing"); + agentSpan.context().setInstrumentationName("opentracing"); return converter.toSpan(agentSpan); } @Override public Scope startActive(final boolean finishSpanOnClose) { final AgentSpan agentSpan = delegate.start(); - agentSpan.context().setInstrumentationComponentName("opentracing"); + agentSpan.context().setInstrumentationName("opentracing"); return converter.toScope(tracer.activateManualSpan(agentSpan), finishSpanOnClose); } } diff --git a/dd-java-agent/instrumentation/opentracing/api-0.31/src/test/groovy/OpenTracing31Test.groovy b/dd-java-agent/instrumentation/opentracing/api-0.31/src/test/groovy/OpenTracing31Test.groovy index ee1a9f786db..923ad2f289d 100644 --- a/dd-java-agent/instrumentation/opentracing/api-0.31/src/test/groovy/OpenTracing31Test.groovy +++ b/dd-java-agent/instrumentation/opentracing/api-0.31/src/test/groovy/OpenTracing31Test.groovy @@ -29,7 +29,6 @@ import spock.lang.Subject import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopContinuation -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.setAsyncPropagationEnabled class OpenTracing31Test extends AgentTestRunner { @@ -113,7 +112,7 @@ class OpenTracing31Test extends AgentTestRunner { } defaultTags(addReference != null) } - assert span.context().instrumentationComponentName == "opentracing" + assert span.context().instrumentationName == "opentracing" } } } diff --git a/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTTracer.java b/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTTracer.java index 4bec3c21cee..1230b406dc1 100644 --- a/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTTracer.java +++ b/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTTracer.java @@ -173,14 +173,14 @@ public Span startManual() { @Override public Span start() { final AgentSpan agentSpan = delegate.start(); - agentSpan.context().setInstrumentationComponentName("opentracing"); + agentSpan.context().setInstrumentationName("opentracing"); return converter.toSpan(agentSpan); } @Override public Scope startActive(final boolean finishSpanOnClose) { final AgentSpan agentSpan = delegate.start(); - agentSpan.context().setInstrumentationComponentName("opentracing"); + agentSpan.context().setInstrumentationName("opentracing"); return converter.toScope(tracer.activateManualSpan(agentSpan), finishSpanOnClose); } } diff --git a/dd-java-agent/instrumentation/opentracing/api-0.32/src/test/groovy/OpenTracing32Test.groovy b/dd-java-agent/instrumentation/opentracing/api-0.32/src/test/groovy/OpenTracing32Test.groovy index 1a7fd56abb2..324f64918ec 100644 --- a/dd-java-agent/instrumentation/opentracing/api-0.32/src/test/groovy/OpenTracing32Test.groovy +++ b/dd-java-agent/instrumentation/opentracing/api-0.32/src/test/groovy/OpenTracing32Test.groovy @@ -34,7 +34,6 @@ import static datadog.trace.api.sampling.SamplingMechanism.AGENT_RATE import static datadog.trace.api.sampling.SamplingMechanism.DEFAULT import static datadog.trace.api.sampling.SamplingMechanism.MANUAL import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.noopContinuation -import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.setAsyncPropagationEnabled class OpenTracing32Test extends AgentTestRunner { @@ -118,7 +117,7 @@ class OpenTracing32Test extends AgentTestRunner { } defaultTags(addReference != null) } - assert span.context().instrumentationComponentName == "opentracing" + assert span.context().instrumentationName == "opentracing" } } } diff --git a/dd-java-agent/instrumentation/vertx-sql-client-3.9/src/main/java/datadog/trace/instrumentation/vertx_sql_client_39/VertxSqlClientDecorator.java b/dd-java-agent/instrumentation/vertx-sql-client-3.9/src/main/java/datadog/trace/instrumentation/vertx_sql_client_39/VertxSqlClientDecorator.java index 310fb3c0552..45b98984c24 100644 --- a/dd-java-agent/instrumentation/vertx-sql-client-3.9/src/main/java/datadog/trace/instrumentation/vertx_sql_client_39/VertxSqlClientDecorator.java +++ b/dd-java-agent/instrumentation/vertx-sql-client-3.9/src/main/java/datadog/trace/instrumentation/vertx_sql_client_39/VertxSqlClientDecorator.java @@ -100,7 +100,7 @@ public AgentSpan startAndDecorateSpanForStatement( span.setResourceName(DB_QUERY); } span.setTag(Tags.COMPONENT, component); - span.context().setInstrumentationComponentName(component); + span.context().setInstrumentationName(component); return span; } 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 fe633f861fd..0a27dfcfc74 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 @@ -85,7 +85,7 @@ public class DDSpanContext private final UTF8BytesString threadName; private volatile short httpStatusCode; - private CharSequence instrumentationComponentName; + private CharSequence instrumentationName; /** * Tags are associated to the current span, they will not propagate to the children span. @@ -882,12 +882,12 @@ public void processTagsAndBaggage( } @Override - public void setInstrumentationComponentName(CharSequence componentName) { - this.instrumentationComponentName = componentName; + public void setInstrumentationName(CharSequence componentName) { + this.instrumentationName = componentName; } - public CharSequence getInstrumentationComponentName() { - return instrumentationComponentName; + public CharSequence getInstrumentationName() { + return instrumentationName; } @Override diff --git a/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/InstrumentationComponentAdder.java b/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/InstrumentationComponentAdder.java index 367f19f8538..e1c2f664e94 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/InstrumentationComponentAdder.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/InstrumentationComponentAdder.java @@ -12,7 +12,7 @@ public class InstrumentationComponentAdder implements TagsPostProcessor { @Override public Map processTags( Map unsafeTags, DDSpanContext spanContext, List spanLinks) { - final CharSequence internalComponentName = spanContext.getInstrumentationComponentName(); + final CharSequence internalComponentName = spanContext.getInstrumentationName(); if (internalComponentName != null) { unsafeTags.put(DD_INTEGRATION, internalComponentName); } else { diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/tagprocessor/InstrumentationComponentAdderTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/tagprocessor/InstrumentationComponentAdderTest.groovy index 85080ef7414..f0f3a7c4e24 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/tagprocessor/InstrumentationComponentAdderTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/tagprocessor/InstrumentationComponentAdderTest.groovy @@ -15,7 +15,7 @@ class InstrumentationComponentAdderTest extends DDSpecification { def enrichedTags = calculator.processTags(["_dd.integration": "bad"], spanContext, []) then: - 1 * spanContext.getInstrumentationComponentName() >> (isSet ? "test" : null) + 1 * spanContext.getInstrumentationName() >> (isSet ? "test" : null) and: assert enrichedTags == (isSet ? ["_dd.integration": "test"] : [:]) diff --git a/dd-trace-ot/src/main/java/datadog/opentracing/DDTracer.java b/dd-trace-ot/src/main/java/datadog/opentracing/DDTracer.java index 0213c97f644..037cc514bcc 100644 --- a/dd-trace-ot/src/main/java/datadog/opentracing/DDTracer.java +++ b/dd-trace-ot/src/main/java/datadog/opentracing/DDTracer.java @@ -656,7 +656,7 @@ public Span startManual() { @Override public Span start() { final AgentSpan agentSpan = delegate.start(); - agentSpan.context().setInstrumentationComponentName("opentracing"); + agentSpan.context().setInstrumentationName("opentracing"); return converter.toSpan(agentSpan); } diff --git a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentSpanContext.java b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentSpanContext.java index c40b0f6e336..6b558eaa9de 100644 --- a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentSpanContext.java +++ b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentSpanContext.java @@ -53,7 +53,7 @@ public interface AgentSpanContext { default void mergePathwayContext(PathwayContext pathwayContext) {} - default void setInstrumentationComponentName(CharSequence componentName) {} + default void setInstrumentationName(CharSequence componentName) {} /** * Gets whether the span context used is part of the local trace or from another service From c3fea3424c3e21c5ba8302a5106191f388992402 Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Tue, 6 May 2025 10:41:30 +0200 Subject: [PATCH 13/21] Update dd-trace-core/src/test/groovy/datadog/trace/core/tagprocessor/InstrumentationComponentAdderTest.groovy Co-authored-by: Stuart McCulloch --- .../core/tagprocessor/InstrumentationComponentAdderTest.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/tagprocessor/InstrumentationComponentAdderTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/tagprocessor/InstrumentationComponentAdderTest.groovy index f0f3a7c4e24..2d535fbccaf 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/tagprocessor/InstrumentationComponentAdderTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/tagprocessor/InstrumentationComponentAdderTest.groovy @@ -4,7 +4,7 @@ package datadog.trace.core.tagprocessor import datadog.trace.core.DDSpanContext import datadog.trace.test.util.DDSpecification -class InstrumentationComponentAdderTest extends DDSpecification { +class InstrumentationAdderTest extends DDSpecification { def "should add or remove _dd.integration when set (#isSet) on the span context"() { setup: def calculator = new InstrumentationComponentAdder() From 78d86dcfb0569bdf37b8d94011a050e13923eb6a Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Tue, 6 May 2025 10:41:53 +0200 Subject: [PATCH 14/21] Update dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/InstrumentationComponentAdder.java Co-authored-by: Stuart McCulloch --- .../core/tagprocessor/InstrumentationComponentAdder.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/InstrumentationComponentAdder.java b/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/InstrumentationComponentAdder.java index e1c2f664e94..07bf35e961d 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/InstrumentationComponentAdder.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/InstrumentationComponentAdder.java @@ -12,9 +12,9 @@ public class InstrumentationComponentAdder implements TagsPostProcessor { @Override public Map processTags( Map unsafeTags, DDSpanContext spanContext, List spanLinks) { - final CharSequence internalComponentName = spanContext.getInstrumentationName(); - if (internalComponentName != null) { - unsafeTags.put(DD_INTEGRATION, internalComponentName); + final CharSequence instrumentationName = spanContext.getInstrumentationName(); + if (instrumentationName != null) { + unsafeTags.put(DD_INTEGRATION, instrumentationName); } else { unsafeTags.remove(DD_INTEGRATION); } From a1ebfae391ca345b12a5fa2a35b5ad8426de0a2b Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Tue, 6 May 2025 10:42:01 +0200 Subject: [PATCH 15/21] Update dd-trace-core/src/main/java/datadog/trace/core/DDSpanContext.java Co-authored-by: Stuart McCulloch --- .../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 0a27dfcfc74..572adaed13f 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 @@ -882,8 +882,8 @@ public void processTagsAndBaggage( } @Override - public void setInstrumentationName(CharSequence componentName) { - this.instrumentationName = componentName; + public void setInstrumentationName(CharSequence instrumentationName) { + this.instrumentationName = instrumentationName; } public CharSequence getInstrumentationName() { From 7282922e5f361959438d6d8e30e84dc6b69ab8d0 Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Tue, 6 May 2025 10:43:36 +0200 Subject: [PATCH 16/21] codenarc --- ...nComponentAdderTest.groovy => InstrumentationAdderTest.groovy} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename dd-trace-core/src/test/groovy/datadog/trace/core/tagprocessor/{InstrumentationComponentAdderTest.groovy => InstrumentationAdderTest.groovy} (100%) diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/tagprocessor/InstrumentationComponentAdderTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/tagprocessor/InstrumentationAdderTest.groovy similarity index 100% rename from dd-trace-core/src/test/groovy/datadog/trace/core/tagprocessor/InstrumentationComponentAdderTest.groovy rename to dd-trace-core/src/test/groovy/datadog/trace/core/tagprocessor/InstrumentationAdderTest.groovy From 6efd8c435bcef69add3d12b0b327f35c96139b00 Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Tue, 6 May 2025 10:45:32 +0200 Subject: [PATCH 17/21] cleanup httpservertest --- .../groovy/datadog/trace/agent/test/base/HttpServerTest.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/base/HttpServerTest.groovy b/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/base/HttpServerTest.groovy index ac37e179dae..d13e9cc2544 100644 --- a/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/base/HttpServerTest.groovy +++ b/dd-java-agent/testing/src/main/groovy/datadog/trace/agent/test/base/HttpServerTest.groovy @@ -2253,7 +2253,7 @@ abstract class HttpServerTest extends WithHttpServer { // if (endpoint.fragment) { // "$DDTags.HTTP_FRAGMENT" endpoint.fragment // } - defaultTags(true, true) + defaultTags(true) addTags(expectedExtraServerTags) if (extraTags) { it.addTags(extraTags) From e072b5ffbc9751c13d54a20658e8fca5df6867c6 Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Tue, 6 May 2025 10:46:43 +0200 Subject: [PATCH 18/21] Update dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/InstrumentationComponentAdder.java Co-authored-by: Stuart McCulloch --- .../trace/core/tagprocessor/InstrumentationComponentAdder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/InstrumentationComponentAdder.java b/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/InstrumentationComponentAdder.java index 07bf35e961d..cb11a954a58 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/InstrumentationComponentAdder.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/InstrumentationComponentAdder.java @@ -7,7 +7,7 @@ import java.util.List; import java.util.Map; -public class InstrumentationComponentAdder implements TagsPostProcessor { +public class InstrumentationAdder implements TagsPostProcessor { @Override public Map processTags( From 9c8574369c1e9b63d1875514d348181390eebba1 Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Tue, 6 May 2025 11:17:53 +0200 Subject: [PATCH 19/21] change system test commit --- .circleci/config.continue.yml.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.continue.yml.j2 b/.circleci/config.continue.yml.j2 index d26930f2cca..ac23e650dd7 100644 --- a/.circleci/config.continue.yml.j2 +++ b/.circleci/config.continue.yml.j2 @@ -36,7 +36,7 @@ instrumentation_modules: &instrumentation_modules "dd-java-agent/instrumentation debugger_modules: &debugger_modules "dd-java-agent/agent-debugger|dd-java-agent/agent-bootstrap|dd-java-agent/agent-builder|internal-api|communication|dd-trace-core" profiling_modules: &profiling_modules "dd-java-agent/agent-profiling" -default_system_tests_commit: &default_system_tests_commit 380d8deb4dd86369e30827ae3d908400c91d2d3e +default_system_tests_commit: &default_system_tests_commit 57424458dbb9c6cca6740929efaa7edbe3b02b56 parameters: nightly: From 4edb5dde17b5357ea9f45f328f7a34fb38b6e28b Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Tue, 6 May 2025 11:24:11 +0200 Subject: [PATCH 20/21] rename --- .../instrumentation/decorator/BaseDecorator.java | 2 +- .../instrumentation/decorator/BaseDecoratorTest.groovy | 2 +- .../decorator/ClientDecoratorTest.groovy | 2 +- .../DBTypeProcessingDatabaseClientDecoratorTest.groovy | 2 +- .../decorator/DatabaseClientDecoratorTest.groovy | 2 +- .../decorator/ServerDecoratorTest.groovy | 2 +- .../civisibility/decorator/TestDecoratorImpl.java | 2 +- .../decorator/TestDecoratorImplTest.groovy | 4 ++-- .../datadog/opentelemetry/shim/trace/OtelSpan.java | 2 +- .../dropwizard/view/DropwizardViewInstrumentation.java | 2 +- .../java/lang/ProcessImplStartAdvice.java | 2 +- .../trace/instrumentation/jdbc/JDBCDecorator.java | 2 +- .../instrumentation/karate/KarateTracingHook.java | 2 +- .../netty38/ChannelFutureListenerInstrumentation.java | 2 +- .../netty40/ChannelFutureListenerInstrumentation.java | 2 +- .../netty41/ChannelFutureListenerInstrumentation.java | 2 +- .../instrumentation/opentelemetry/OtelTracer.java | 2 +- .../src/test/groovy/OpenTelemetryTest.groovy | 2 +- .../src/test/groovy/OpenTelemetry14Test.groovy | 2 +- .../trace/instrumentation/opentracing31/OTTracer.java | 4 ++-- .../api-0.31/src/test/groovy/OpenTracing31Test.groovy | 2 +- .../trace/instrumentation/opentracing32/OTTracer.java | 4 ++-- .../api-0.32/src/test/groovy/OpenTracing32Test.groovy | 2 +- .../vertx_sql_client_39/VertxSqlClientDecorator.java | 2 +- .../main/java/datadog/trace/core/DDSpanContext.java | 10 +++++----- ...tationComponentAdder.java => IntegrationAdder.java} | 4 ++-- .../core/tagprocessor/TagsPostProcessorFactory.java | 2 +- ...ionAdderTest.groovy => IntegrationAdderTest.groovy} | 6 +++--- .../src/main/java/datadog/opentracing/DDTracer.java | 2 +- .../instrumentation/api/AgentSpanContext.java | 2 +- 30 files changed, 40 insertions(+), 40 deletions(-) rename dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/{InstrumentationComponentAdder.java => IntegrationAdder.java} (79%) rename dd-trace-core/src/test/groovy/datadog/trace/core/tagprocessor/{InstrumentationAdderTest.groovy => IntegrationAdderTest.groovy} (73%) diff --git a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/BaseDecorator.java b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/BaseDecorator.java index 817c2810d36..9bcec9e8aec 100644 --- a/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/BaseDecorator.java +++ b/dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/instrumentation/decorator/BaseDecorator.java @@ -71,7 +71,7 @@ public AgentSpan afterStart(final AgentSpan span) { } final CharSequence component = component(); span.setTag(Tags.COMPONENT, component); - span.context().setInstrumentationName(component); + span.context().setIntegrationName(component); if (traceAnalyticsEnabled) { span.setMetric(DDTags.ANALYTICS_SAMPLE_RATE, traceAnalyticsSampleRate); } diff --git a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/BaseDecoratorTest.groovy b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/BaseDecoratorTest.groovy index 1adb4a5d8c1..b94b7013f39 100644 --- a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/BaseDecoratorTest.groovy +++ b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/BaseDecoratorTest.groovy @@ -27,7 +27,7 @@ class BaseDecoratorTest extends DDSpecification { 1 * span.setSpanType(decorator.spanType()) 1 * span.setTag(Tags.COMPONENT, "test-component") 1 * span.context() >> spanContext - 1 * spanContext.setInstrumentationName("test-component") + 1 * spanContext.setIntegrationName("test-component") _ * span.setTag(_, _) // Want to allow other calls from child implementations. _ * span.setMeasured(true) _ * span.setMetric(_, _) diff --git a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/ClientDecoratorTest.groovy b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/ClientDecoratorTest.groovy index b4c81c7e0aa..5153eeb09e0 100644 --- a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/ClientDecoratorTest.groovy +++ b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/ClientDecoratorTest.groovy @@ -24,7 +24,7 @@ class ClientDecoratorTest extends BaseDecoratorTest { 1 * span.setMeasured(true) 1 * span.setTag(Tags.COMPONENT, "test-component") 1 * span.context() >> spanContext - 1 * spanContext.setInstrumentationName("test-component") + 1 * spanContext.setIntegrationName("test-component") 1 * span.setTag(Tags.SPAN_KIND, "client") 1 * span.setSpanType(decorator.spanType()) 1 * span.setMetric(DDTags.ANALYTICS_SAMPLE_RATE, 1.0) diff --git a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/DBTypeProcessingDatabaseClientDecoratorTest.groovy b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/DBTypeProcessingDatabaseClientDecoratorTest.groovy index 3dce64c9c7d..5e4e3d7d33f 100644 --- a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/DBTypeProcessingDatabaseClientDecoratorTest.groovy +++ b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/DBTypeProcessingDatabaseClientDecoratorTest.groovy @@ -25,7 +25,7 @@ class DBTypeProcessingDatabaseClientDecoratorTest extends ClientDecoratorTest { 1 * span.setMeasured(true) 1 * span.setTag(Tags.COMPONENT, "test-component") 1 * span.context() >> spanContext - 1 * spanContext.setInstrumentationName("test-component") + 1 * spanContext.setIntegrationName("test-component") 1 * span.setTag(Tags.SPAN_KIND, "client") 1 * span.setSpanType("test-type") 1 * span.setServiceName("test-db") diff --git a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/DatabaseClientDecoratorTest.groovy b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/DatabaseClientDecoratorTest.groovy index c21d0bb4333..e0ecce67b8e 100644 --- a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/DatabaseClientDecoratorTest.groovy +++ b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/DatabaseClientDecoratorTest.groovy @@ -28,7 +28,7 @@ class DatabaseClientDecoratorTest extends ClientDecoratorTest { 1 * span.setMeasured(true) 1 * span.setTag(Tags.COMPONENT, "test-component") 1 * span.context() >> spanContext - 1 * spanContext.setInstrumentationName("test-component") + 1 * spanContext.setIntegrationName("test-component") 1 * span.setTag(Tags.SPAN_KIND, "client") 1 * span.setSpanType("test-type") 1 * span.setMetric(DDTags.ANALYTICS_SAMPLE_RATE, 1.0) diff --git a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/ServerDecoratorTest.groovy b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/ServerDecoratorTest.groovy index 348c431025f..9eeb1b19e77 100644 --- a/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/ServerDecoratorTest.groovy +++ b/dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/ServerDecoratorTest.groovy @@ -25,7 +25,7 @@ class ServerDecoratorTest extends BaseDecoratorTest { 1 * span.setTag(LANGUAGE_TAG_KEY, LANGUAGE_TAG_VALUE) 1 * span.setTag(COMPONENT, "test-component") 1 * span.context() >> spanContext - 1 * spanContext.setInstrumentationName("test-component") + 1 * spanContext.setIntegrationName("test-component") 1 * span.setTag(SPAN_KIND, "server") 1 * span.setSpanType(decorator.spanType()) if (decorator.traceAnalyticsEnabled) { diff --git a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/decorator/TestDecoratorImpl.java b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/decorator/TestDecoratorImpl.java index 77242516f39..de2ab526728 100644 --- a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/decorator/TestDecoratorImpl.java +++ b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/decorator/TestDecoratorImpl.java @@ -51,7 +51,7 @@ public AgentSpan afterStart(final AgentSpan span) { span.setTag(DDTags.HOST_VCPU_COUNT, cpuCount); span.setTag(Tags.TEST_TYPE, testType()); span.setTag(Tags.COMPONENT, component()); - span.context().setInstrumentationName(component()); + span.context().setIntegrationName(component()); span.setTag(Tags.TEST_SESSION_NAME, sessionName); for (final Map.Entry ciTag : ciTags.entrySet()) { diff --git a/dd-java-agent/agent-ci-visibility/src/test/groovy/datadog/trace/civisibility/decorator/TestDecoratorImplTest.groovy b/dd-java-agent/agent-ci-visibility/src/test/groovy/datadog/trace/civisibility/decorator/TestDecoratorImplTest.groovy index 1367d348d5b..d1d415428df 100644 --- a/dd-java-agent/agent-ci-visibility/src/test/groovy/datadog/trace/civisibility/decorator/TestDecoratorImplTest.groovy +++ b/dd-java-agent/agent-ci-visibility/src/test/groovy/datadog/trace/civisibility/decorator/TestDecoratorImplTest.groovy @@ -23,7 +23,7 @@ class TestDecoratorImplTest extends Specification { 1 * span.setTag(Tags.TEST_SESSION_NAME, "session-name") 1 * span.setTag(Tags.COMPONENT, "test-component") 1 * span.context() >> context - 1 * context.setInstrumentationName("test-component") + 1 * context.setIntegrationName("test-component") 1 * span.setTag(Tags.TEST_TYPE, decorator.testType()) 1 * span.setSamplingPriority(PrioritySampling.SAMPLER_KEEP) 1 * span.setTag(DDTags.ORIGIN_KEY, decorator.origin()) @@ -49,7 +49,7 @@ class TestDecoratorImplTest extends Specification { then: 1 * span.context() >> context - 1 * context.setInstrumentationName("test-component") + 1 * context.setIntegrationName("test-component") 1 * span.setTag(Tags.TEST_SESSION_NAME, expectedSessionName) where: diff --git a/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/trace/OtelSpan.java b/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/trace/OtelSpan.java index cee0b9ce332..01b8dca7115 100644 --- a/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/trace/OtelSpan.java +++ b/dd-java-agent/agent-otel/otel-shim/src/main/java/datadog/opentelemetry/shim/trace/OtelSpan.java @@ -43,7 +43,7 @@ public OtelSpan(AgentSpan delegate) { } this.statusCode = UNSET; this.recording = true; - delegate.context().setInstrumentationName("otel"); + delegate.context().setIntegrationName("otel"); } public static Span invalid() { diff --git a/dd-java-agent/instrumentation/dropwizard/dropwizard-views/src/main/java/datadog/trace/instrumentation/dropwizard/view/DropwizardViewInstrumentation.java b/dd-java-agent/instrumentation/dropwizard/dropwizard-views/src/main/java/datadog/trace/instrumentation/dropwizard/view/DropwizardViewInstrumentation.java index ed328549283..e185ba86d60 100644 --- a/dd-java-agent/instrumentation/dropwizard/dropwizard-views/src/main/java/datadog/trace/instrumentation/dropwizard/view/DropwizardViewInstrumentation.java +++ b/dd-java-agent/instrumentation/dropwizard/dropwizard-views/src/main/java/datadog/trace/instrumentation/dropwizard/view/DropwizardViewInstrumentation.java @@ -70,7 +70,7 @@ public static AgentScope onEnter( return null; } final AgentSpan span = startSpan("view.render").setTag(Tags.COMPONENT, "dropwizard-view"); - span.context().setInstrumentationName("dropwizard-view"); + span.context().setIntegrationName("dropwizard-view"); span.setResourceName("View " + view.getTemplateName()); return activateSpan(span); } diff --git a/dd-java-agent/instrumentation/java-lang/src/main/java/datadog/trace/instrumentation/java/lang/ProcessImplStartAdvice.java b/dd-java-agent/instrumentation/java-lang/src/main/java/datadog/trace/instrumentation/java/lang/ProcessImplStartAdvice.java index 615f35168aa..70feb96924d 100644 --- a/dd-java-agent/instrumentation/java-lang/src/main/java/datadog/trace/instrumentation/java/lang/ProcessImplStartAdvice.java +++ b/dd-java-agent/instrumentation/java-lang/src/main/java/datadog/trace/instrumentation/java/lang/ProcessImplStartAdvice.java @@ -22,7 +22,7 @@ public static AgentSpan startSpan(@Advice.Argument(0) final String[] command) th span.setSpanType("system"); span.setResourceName(ProcessImplInstrumentationHelpers.determineResource(command)); span.setTag("component", "subprocess"); - span.context().setInstrumentationName("subprocess"); + span.context().setIntegrationName("subprocess"); ProcessImplInstrumentationHelpers.setTags(span, command); ProcessImplInstrumentationHelpers.cmdiRaspCheck(command); return span; diff --git a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/JDBCDecorator.java b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/JDBCDecorator.java index a47c5885095..1df3ab2d359 100644 --- a/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/JDBCDecorator.java +++ b/dd-java-agent/instrumentation/jdbc/src/main/java/datadog/trace/instrumentation/jdbc/JDBCDecorator.java @@ -241,7 +241,7 @@ private AgentSpan withQueryInfo(AgentSpan span, DBQueryInfo info, CharSequence c } else { span.setResourceName(DB_QUERY); } - span.context().setInstrumentationName(component); + span.context().setIntegrationName(component); return span.setTag(Tags.COMPONENT, component); } diff --git a/dd-java-agent/instrumentation/karate/src/main/java/datadog/trace/instrumentation/karate/KarateTracingHook.java b/dd-java-agent/instrumentation/karate/src/main/java/datadog/trace/instrumentation/karate/KarateTracingHook.java index 9b0688d035c..d0bbfec9372 100644 --- a/dd-java-agent/instrumentation/karate/src/main/java/datadog/trace/instrumentation/karate/KarateTracingHook.java +++ b/dd-java-agent/instrumentation/karate/src/main/java/datadog/trace/instrumentation/karate/KarateTracingHook.java @@ -201,7 +201,7 @@ public boolean beforeStep(Step step, ScenarioRuntime sr) { String stepName = step.getPrefix() + " " + step.getText(); span.setResourceName(stepName); span.setTag(Tags.COMPONENT, "karate"); - span.context().setInstrumentationName("karate"); + span.context().setIntegrationName("karate"); span.setTag("step.name", stepName); span.setTag("step.startLine", step.getLine()); span.setTag("step.endLine", step.getEndLine()); diff --git a/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/ChannelFutureListenerInstrumentation.java b/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/ChannelFutureListenerInstrumentation.java index d9e5cfa5d9e..4a211023143 100644 --- a/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/ChannelFutureListenerInstrumentation.java +++ b/dd-java-agent/instrumentation/netty-3.8/src/main/java/datadog/trace/instrumentation/netty38/ChannelFutureListenerInstrumentation.java @@ -108,7 +108,7 @@ public static AgentScope activateScope(@Advice.Argument(0) final ChannelFuture f final AgentScope parentScope = continuation.activate(); final AgentSpan errorSpan = startSpan(NETTY_CONNECT).setTag(Tags.COMPONENT, "netty"); - errorSpan.context().setInstrumentationName(NETTY); + errorSpan.context().setIntegrationName(NETTY); try (final AgentScope scope = activateSpan(errorSpan)) { DECORATE.onError(errorSpan, cause); DECORATE.beforeFinish(errorSpan); diff --git a/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/ChannelFutureListenerInstrumentation.java b/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/ChannelFutureListenerInstrumentation.java index 4fb5f9d05c4..e0b426f7697 100644 --- a/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/ChannelFutureListenerInstrumentation.java +++ b/dd-java-agent/instrumentation/netty-4.0/src/main/java/datadog/trace/instrumentation/netty40/ChannelFutureListenerInstrumentation.java @@ -93,7 +93,7 @@ public static AgentScope activateScope(@Advice.Argument(0) final ChannelFuture f final AgentScope parentScope = continuation.activate(); final AgentSpan errorSpan = startSpan(NETTY_CONNECT).setTag(Tags.COMPONENT, "netty"); - errorSpan.context().setInstrumentationName(NETTY); + errorSpan.context().setIntegrationName(NETTY); try (final AgentScope scope = activateSpan(errorSpan)) { NettyHttpServerDecorator.DECORATE.onError(errorSpan, cause); NettyHttpServerDecorator.DECORATE.beforeFinish(errorSpan); diff --git a/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/ChannelFutureListenerInstrumentation.java b/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/ChannelFutureListenerInstrumentation.java index 834e68646f6..c810b6ac96b 100644 --- a/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/ChannelFutureListenerInstrumentation.java +++ b/dd-java-agent/instrumentation/netty-4.1/src/main/java/datadog/trace/instrumentation/netty41/ChannelFutureListenerInstrumentation.java @@ -93,7 +93,7 @@ public static AgentScope activateScope(@Advice.Argument(0) final ChannelFuture f final AgentScope parentScope = continuation.activate(); final AgentSpan errorSpan = startSpan(NETTY_CONNECT).setTag(Tags.COMPONENT, "netty"); - errorSpan.context().setInstrumentationName(NETTY); + errorSpan.context().setIntegrationName(NETTY); try (final AgentScope scope = activateSpan(errorSpan)) { NettyHttpServerDecorator.DECORATE.onError(errorSpan, cause); NettyHttpServerDecorator.DECORATE.beforeFinish(errorSpan); diff --git a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/main/java/datadog/trace/instrumentation/opentelemetry/OtelTracer.java b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/main/java/datadog/trace/instrumentation/opentelemetry/OtelTracer.java index 1e664e03aaf..5d4bccb6244 100644 --- a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/main/java/datadog/trace/instrumentation/opentelemetry/OtelTracer.java +++ b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/main/java/datadog/trace/instrumentation/opentelemetry/OtelTracer.java @@ -163,7 +163,7 @@ public Span.Builder setStartTimestamp(final long startTimestamp) { @Override public Span startSpan() { final AgentSpan agentSpan = delegate.start(); - agentSpan.context().setInstrumentationName("otel"); + agentSpan.context().setIntegrationName("otel"); return converter.toSpan(agentSpan); } } diff --git a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/test/groovy/OpenTelemetryTest.groovy b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/test/groovy/OpenTelemetryTest.groovy index a070d3ff860..e577e503658 100644 --- a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/test/groovy/OpenTelemetryTest.groovy +++ b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-0.3/src/test/groovy/OpenTelemetryTest.groovy @@ -82,7 +82,7 @@ class OpenTelemetryTest extends AgentTestRunner { } defaultTags() } - assert span.context().instrumentationName == "otel" + assert span.context().integrationName == "otel" } } } diff --git a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/OpenTelemetry14Test.groovy b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/OpenTelemetry14Test.groovy index e2d81cd21f6..170d679885e 100644 --- a/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/OpenTelemetry14Test.groovy +++ b/dd-java-agent/instrumentation/opentelemetry/opentelemetry-1.4/src/test/groovy/OpenTelemetry14Test.groovy @@ -535,7 +535,7 @@ class OpenTelemetry14Test extends AgentTestRunner { "empty-array" "" } } - assert span.context().instrumentationName == "otel" + assert span.context().integrationName == "otel" } } } diff --git a/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTTracer.java b/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTTracer.java index df8cd0b0f97..1a121799024 100644 --- a/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTTracer.java +++ b/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTTracer.java @@ -151,14 +151,14 @@ public Span startManual() { @Override public Span start() { final AgentSpan agentSpan = delegate.start(); - agentSpan.context().setInstrumentationName("opentracing"); + agentSpan.context().setIntegrationName("opentracing"); return converter.toSpan(agentSpan); } @Override public Scope startActive(final boolean finishSpanOnClose) { final AgentSpan agentSpan = delegate.start(); - agentSpan.context().setInstrumentationName("opentracing"); + agentSpan.context().setIntegrationName("opentracing"); return converter.toScope(tracer.activateManualSpan(agentSpan), finishSpanOnClose); } } diff --git a/dd-java-agent/instrumentation/opentracing/api-0.31/src/test/groovy/OpenTracing31Test.groovy b/dd-java-agent/instrumentation/opentracing/api-0.31/src/test/groovy/OpenTracing31Test.groovy index 923ad2f289d..5f3293d9033 100644 --- a/dd-java-agent/instrumentation/opentracing/api-0.31/src/test/groovy/OpenTracing31Test.groovy +++ b/dd-java-agent/instrumentation/opentracing/api-0.31/src/test/groovy/OpenTracing31Test.groovy @@ -112,7 +112,7 @@ class OpenTracing31Test extends AgentTestRunner { } defaultTags(addReference != null) } - assert span.context().instrumentationName == "opentracing" + assert span.context().integrationName == "opentracing" } } } diff --git a/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTTracer.java b/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTTracer.java index 1230b406dc1..ab4e2ebea92 100644 --- a/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTTracer.java +++ b/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTTracer.java @@ -173,14 +173,14 @@ public Span startManual() { @Override public Span start() { final AgentSpan agentSpan = delegate.start(); - agentSpan.context().setInstrumentationName("opentracing"); + agentSpan.context().setIntegrationName("opentracing"); return converter.toSpan(agentSpan); } @Override public Scope startActive(final boolean finishSpanOnClose) { final AgentSpan agentSpan = delegate.start(); - agentSpan.context().setInstrumentationName("opentracing"); + agentSpan.context().setIntegrationName("opentracing"); return converter.toScope(tracer.activateManualSpan(agentSpan), finishSpanOnClose); } } diff --git a/dd-java-agent/instrumentation/opentracing/api-0.32/src/test/groovy/OpenTracing32Test.groovy b/dd-java-agent/instrumentation/opentracing/api-0.32/src/test/groovy/OpenTracing32Test.groovy index 324f64918ec..dabe3865275 100644 --- a/dd-java-agent/instrumentation/opentracing/api-0.32/src/test/groovy/OpenTracing32Test.groovy +++ b/dd-java-agent/instrumentation/opentracing/api-0.32/src/test/groovy/OpenTracing32Test.groovy @@ -117,7 +117,7 @@ class OpenTracing32Test extends AgentTestRunner { } defaultTags(addReference != null) } - assert span.context().instrumentationName == "opentracing" + assert span.context().integrationName == "opentracing" } } } diff --git a/dd-java-agent/instrumentation/vertx-sql-client-3.9/src/main/java/datadog/trace/instrumentation/vertx_sql_client_39/VertxSqlClientDecorator.java b/dd-java-agent/instrumentation/vertx-sql-client-3.9/src/main/java/datadog/trace/instrumentation/vertx_sql_client_39/VertxSqlClientDecorator.java index 45b98984c24..f583033e647 100644 --- a/dd-java-agent/instrumentation/vertx-sql-client-3.9/src/main/java/datadog/trace/instrumentation/vertx_sql_client_39/VertxSqlClientDecorator.java +++ b/dd-java-agent/instrumentation/vertx-sql-client-3.9/src/main/java/datadog/trace/instrumentation/vertx_sql_client_39/VertxSqlClientDecorator.java @@ -100,7 +100,7 @@ public AgentSpan startAndDecorateSpanForStatement( span.setResourceName(DB_QUERY); } span.setTag(Tags.COMPONENT, component); - span.context().setInstrumentationName(component); + span.context().setIntegrationName(component); return span; } 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 572adaed13f..1277b16aa7b 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 @@ -85,7 +85,7 @@ public class DDSpanContext private final UTF8BytesString threadName; private volatile short httpStatusCode; - private CharSequence instrumentationName; + private CharSequence integrationName; /** * Tags are associated to the current span, they will not propagate to the children span. @@ -882,12 +882,12 @@ public void processTagsAndBaggage( } @Override - public void setInstrumentationName(CharSequence instrumentationName) { - this.instrumentationName = instrumentationName; + public void setIntegrationName(CharSequence integrationName) { + this.integrationName = integrationName; } - public CharSequence getInstrumentationName() { - return instrumentationName; + public CharSequence getIntegrationName() { + return integrationName; } @Override diff --git a/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/InstrumentationComponentAdder.java b/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/IntegrationAdder.java similarity index 79% rename from dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/InstrumentationComponentAdder.java rename to dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/IntegrationAdder.java index cb11a954a58..79db1f22998 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/InstrumentationComponentAdder.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/IntegrationAdder.java @@ -7,12 +7,12 @@ import java.util.List; import java.util.Map; -public class InstrumentationAdder implements TagsPostProcessor { +public class IntegrationAdder implements TagsPostProcessor { @Override public Map processTags( Map unsafeTags, DDSpanContext spanContext, List spanLinks) { - final CharSequence instrumentationName = spanContext.getInstrumentationName(); + final CharSequence instrumentationName = spanContext.getIntegrationName(); if (instrumentationName != null) { unsafeTags.put(DD_INTEGRATION, instrumentationName); } else { diff --git a/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/TagsPostProcessorFactory.java b/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/TagsPostProcessorFactory.java index 4bc46f6644b..1753a52af4a 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/TagsPostProcessorFactory.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/tagprocessor/TagsPostProcessorFactory.java @@ -32,7 +32,7 @@ private static TagsPostProcessor create() { if (Config.get().isAddSpanPointers("aws")) { processors.add(new SpanPointersProcessor()); } - processors.add(new InstrumentationComponentAdder()); + processors.add(new IntegrationAdder()); return new PostProcessorChain( processors.toArray(processors.toArray(new TagsPostProcessor[0]))); } diff --git a/dd-trace-core/src/test/groovy/datadog/trace/core/tagprocessor/InstrumentationAdderTest.groovy b/dd-trace-core/src/test/groovy/datadog/trace/core/tagprocessor/IntegrationAdderTest.groovy similarity index 73% rename from dd-trace-core/src/test/groovy/datadog/trace/core/tagprocessor/InstrumentationAdderTest.groovy rename to dd-trace-core/src/test/groovy/datadog/trace/core/tagprocessor/IntegrationAdderTest.groovy index 2d535fbccaf..1e044aebfec 100644 --- a/dd-trace-core/src/test/groovy/datadog/trace/core/tagprocessor/InstrumentationAdderTest.groovy +++ b/dd-trace-core/src/test/groovy/datadog/trace/core/tagprocessor/IntegrationAdderTest.groovy @@ -4,10 +4,10 @@ package datadog.trace.core.tagprocessor import datadog.trace.core.DDSpanContext import datadog.trace.test.util.DDSpecification -class InstrumentationAdderTest extends DDSpecification { +class IntegrationAdderTest extends DDSpecification { def "should add or remove _dd.integration when set (#isSet) on the span context"() { setup: - def calculator = new InstrumentationComponentAdder() + def calculator = new IntegrationAdder() def spanContext = Mock(DDSpanContext) when: @@ -15,7 +15,7 @@ class InstrumentationAdderTest extends DDSpecification { def enrichedTags = calculator.processTags(["_dd.integration": "bad"], spanContext, []) then: - 1 * spanContext.getInstrumentationName() >> (isSet ? "test" : null) + 1 * spanContext.getIntegrationName() >> (isSet ? "test" : null) and: assert enrichedTags == (isSet ? ["_dd.integration": "test"] : [:]) diff --git a/dd-trace-ot/src/main/java/datadog/opentracing/DDTracer.java b/dd-trace-ot/src/main/java/datadog/opentracing/DDTracer.java index 037cc514bcc..31d1a279a2c 100644 --- a/dd-trace-ot/src/main/java/datadog/opentracing/DDTracer.java +++ b/dd-trace-ot/src/main/java/datadog/opentracing/DDTracer.java @@ -656,7 +656,7 @@ public Span startManual() { @Override public Span start() { final AgentSpan agentSpan = delegate.start(); - agentSpan.context().setInstrumentationName("opentracing"); + agentSpan.context().setIntegrationName("opentracing"); return converter.toSpan(agentSpan); } diff --git a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentSpanContext.java b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentSpanContext.java index 6b558eaa9de..9b993077444 100644 --- a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentSpanContext.java +++ b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/AgentSpanContext.java @@ -53,7 +53,7 @@ public interface AgentSpanContext { default void mergePathwayContext(PathwayContext pathwayContext) {} - default void setInstrumentationName(CharSequence componentName) {} + default void setIntegrationName(CharSequence componentName) {} /** * Gets whether the span context used is part of the local trace or from another service From 73ecd4a8709639ed58dff5d1fbed79c89c42d811 Mon Sep 17 00:00:00 2001 From: Andrea Marziali Date: Tue, 6 May 2025 13:06:58 +0200 Subject: [PATCH 21/21] update system test commit --- .circleci/config.continue.yml.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.continue.yml.j2 b/.circleci/config.continue.yml.j2 index ac23e650dd7..a3faffeafd0 100644 --- a/.circleci/config.continue.yml.j2 +++ b/.circleci/config.continue.yml.j2 @@ -36,7 +36,7 @@ instrumentation_modules: &instrumentation_modules "dd-java-agent/instrumentation debugger_modules: &debugger_modules "dd-java-agent/agent-debugger|dd-java-agent/agent-bootstrap|dd-java-agent/agent-builder|internal-api|communication|dd-trace-core" profiling_modules: &profiling_modules "dd-java-agent/agent-profiling" -default_system_tests_commit: &default_system_tests_commit 57424458dbb9c6cca6740929efaa7edbe3b02b56 +default_system_tests_commit: &default_system_tests_commit 121787cbd6b3e5bc2840a0d5df17ecfb45566837 parameters: nightly: