From 3ab5e7e76d34ee0fa9c3e8c0cd481ab148c1d34a Mon Sep 17 00:00:00 2001 From: DJ Gregor Date: Thu, 3 Jul 2025 14:00:48 -0700 Subject: [PATCH 1/2] Add ErrorPriorities for manual instrumentation and tag interceptor --- .../datadog/trace/instrumentation/opentracing31/OTSpan.java | 3 ++- .../datadog/trace/instrumentation/opentracing32/OTSpan.java | 3 ++- .../java/datadog/trace/core/taginterceptor/TagInterceptor.java | 2 +- dd-trace-ot/src/main/java/datadog/opentracing/OTSpan.java | 3 ++- .../trace/bootstrap/instrumentation/api/ErrorPriorities.java | 2 ++ 5 files changed, 9 insertions(+), 4 deletions(-) diff --git a/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTSpan.java b/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTSpan.java index a00893ffd73..1e4b296ff9f 100644 --- a/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTSpan.java +++ b/dd-java-agent/instrumentation/opentracing/api-0.31/src/main/java/datadog/trace/instrumentation/opentracing31/OTSpan.java @@ -2,6 +2,7 @@ import datadog.trace.api.interceptor.MutableSpan; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; +import datadog.trace.bootstrap.instrumentation.api.ErrorPriorities; import datadog.trace.bootstrap.instrumentation.api.ResourceNamePriorities; import datadog.trace.bootstrap.instrumentation.api.UTF8BytesString; import datadog.trace.bootstrap.instrumentation.api.WithAgentSpan; @@ -73,7 +74,7 @@ public boolean isError() { @Override public OTSpan setError(final boolean value) { - delegate.setError(value); + delegate.setError(value, ErrorPriorities.MANUAL_INSTRUMENTATION); return this; } diff --git a/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTSpan.java b/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTSpan.java index a6f3d15e049..541ec92a28b 100644 --- a/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTSpan.java +++ b/dd-java-agent/instrumentation/opentracing/api-0.32/src/main/java/datadog/trace/instrumentation/opentracing32/OTSpan.java @@ -2,6 +2,7 @@ import datadog.trace.api.interceptor.MutableSpan; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; +import datadog.trace.bootstrap.instrumentation.api.ErrorPriorities; import datadog.trace.bootstrap.instrumentation.api.ResourceNamePriorities; import datadog.trace.bootstrap.instrumentation.api.UTF8BytesString; import datadog.trace.bootstrap.instrumentation.api.WithAgentSpan; @@ -74,7 +75,7 @@ public boolean isError() { @Override public OTSpan setError(final boolean value) { - delegate.setError(value); + delegate.setError(value, ErrorPriorities.MANUAL_INSTRUMENTATION); return this; } diff --git a/dd-trace-core/src/main/java/datadog/trace/core/taginterceptor/TagInterceptor.java b/dd-trace-core/src/main/java/datadog/trace/core/taginterceptor/TagInterceptor.java index 931eca80721..7dbabc46c69 100644 --- a/dd-trace-core/src/main/java/datadog/trace/core/taginterceptor/TagInterceptor.java +++ b/dd-trace-core/src/main/java/datadog/trace/core/taginterceptor/TagInterceptor.java @@ -217,7 +217,7 @@ private boolean interceptDbStatement(DDSpanContext span, Object value) { } private boolean interceptError(DDSpanContext span, Object value) { - span.setErrorFlag(asBoolean(value), ErrorPriorities.DEFAULT); + span.setErrorFlag(asBoolean(value), ErrorPriorities.TAG_INTERCEPTOR); return true; } diff --git a/dd-trace-ot/src/main/java/datadog/opentracing/OTSpan.java b/dd-trace-ot/src/main/java/datadog/opentracing/OTSpan.java index ddafafb877c..6fadce63f59 100644 --- a/dd-trace-ot/src/main/java/datadog/opentracing/OTSpan.java +++ b/dd-trace-ot/src/main/java/datadog/opentracing/OTSpan.java @@ -2,6 +2,7 @@ import datadog.trace.api.interceptor.MutableSpan; import datadog.trace.bootstrap.instrumentation.api.AgentSpan; +import datadog.trace.bootstrap.instrumentation.api.ErrorPriorities; import datadog.trace.bootstrap.instrumentation.api.ResourceNamePriorities; import datadog.trace.bootstrap.instrumentation.api.UTF8BytesString; import datadog.trace.bootstrap.instrumentation.api.WithAgentSpan; @@ -73,7 +74,7 @@ public boolean isError() { @Override public OTSpan setError(final boolean value) { - delegate.setError(value); + delegate.setError(value, ErrorPriorities.MANUAL_INSTRUMENTATION); return this; } diff --git a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/ErrorPriorities.java b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/ErrorPriorities.java index 3e48582a1c5..24e7857436f 100644 --- a/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/ErrorPriorities.java +++ b/internal-api/src/main/java/datadog/trace/bootstrap/instrumentation/api/ErrorPriorities.java @@ -5,4 +5,6 @@ public class ErrorPriorities { public static final byte HTTP_SERVER_DECORATOR = -1; public static final byte DEFAULT = 0; + public static final byte TAG_INTERCEPTOR = 1; + public static final byte MANUAL_INSTRUMENTATION = 2; } From d616ce3dfea0b513f38dbce206367149fa1a0750 Mon Sep 17 00:00:00 2001 From: DJ Gregor Date: Thu, 3 Jul 2025 14:05:59 -0700 Subject: [PATCH 2/2] Set resource name and error priority to manual instrumentation for otel spans --- .../java/datadog/opentelemetry/shim/trace/OtelSpan.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) 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 01b8dca7115..cbef49e3463 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 @@ -15,6 +15,8 @@ import datadog.trace.bootstrap.instrumentation.api.AgentSpan; import datadog.trace.bootstrap.instrumentation.api.AgentSpanContext; import datadog.trace.bootstrap.instrumentation.api.AttachableWrapper; +import datadog.trace.bootstrap.instrumentation.api.ErrorPriorities; +import datadog.trace.bootstrap.instrumentation.api.ResourceNamePriorities; import datadog.trace.bootstrap.instrumentation.api.WithAgentSpan; import io.opentelemetry.api.common.AttributeKey; import io.opentelemetry.api.common.Attributes; @@ -105,11 +107,11 @@ public Span setStatus(StatusCode statusCode, String description) { if (this.recording) { if (this.statusCode == UNSET) { this.statusCode = statusCode; - this.delegate.setError(statusCode == ERROR); + this.delegate.setError(statusCode == ERROR, ErrorPriorities.MANUAL_INSTRUMENTATION); this.delegate.setErrorMessage(statusCode == ERROR ? description : null); } else if (this.statusCode == ERROR && statusCode == OK) { this.statusCode = statusCode; - this.delegate.setError(false); + this.delegate.setError(false, ErrorPriorities.MANUAL_INSTRUMENTATION); this.delegate.setErrorMessage(null); } } @@ -132,7 +134,7 @@ public Span recordException(Throwable exception, Attributes additionalAttributes @Override public Span updateName(String name) { if (this.recording) { - this.delegate.setResourceName(name); + this.delegate.setResourceName(name, ResourceNamePriorities.MANUAL_INSTRUMENTATION); } return this; }