From bf7540185427352414ad5a7ad87b75c132d48da1 Mon Sep 17 00:00:00 2001 From: Idan Shatz Date: Wed, 25 Sep 2024 07:21:52 -0600 Subject: [PATCH 1/2] change tags to match Code Origin RFC updated spec --- .../debugger/probe/CodeOriginProbe.java | 24 +++---------------- .../debugger/origin/CodeOriginTest.java | 14 +---------- .../agent/test/asserts/TagsAssert.groovy | 4 ---- .../main/java/datadog/trace/api/DDTags.java | 12 ++-------- 4 files changed, 6 insertions(+), 48 deletions(-) diff --git a/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/probe/CodeOriginProbe.java b/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/probe/CodeOriginProbe.java index 6c6eeba5233..1f0c774a11b 100644 --- a/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/probe/CodeOriginProbe.java +++ b/dd-java-agent/agent-debugger/src/main/java/com/datadog/debugger/probe/CodeOriginProbe.java @@ -1,7 +1,6 @@ package com.datadog.debugger.probe; import static com.datadog.debugger.codeorigin.DebuggerConfiguration.isDebuggerEnabled; -import static datadog.trace.api.DDTags.DD_CODE_ORIGIN_SNAPSHOT_ID; import static datadog.trace.api.DDTags.DD_STACK_CODE_ORIGIN_FRAME; import static datadog.trace.api.DDTags.DD_STACK_CODE_ORIGIN_TYPE; import static java.lang.String.format; @@ -13,7 +12,6 @@ import com.datadog.debugger.instrumentation.InstrumentationResult; import com.datadog.debugger.sink.Snapshot; import com.datadog.debugger.util.ClassNameFiltering; -import datadog.trace.api.DDTags; import datadog.trace.bootstrap.debugger.CapturedContext; import datadog.trace.bootstrap.debugger.MethodLocation; import datadog.trace.bootstrap.debugger.ProbeId; @@ -91,28 +89,9 @@ public void commit( private void applySpanOriginTags(AgentSpan span, String snapshotId) { List entries = getUserStackFrames(); - recordCodeOrigin(span, entries, snapshotId); recordStackFrames(span, entries, snapshotId); } - private void recordCodeOrigin( - AgentSpan span, List entries, String snapshotId) { - if (entrySpanProbe && !entries.isEmpty()) { - StackTraceElement entry = entries.get(0); - List list = asList(span, span.getLocalRootSpan()); - for (AgentSpan s : list) { - s.setTag(DDTags.DD_CODE_ORIGIN_FILE, toFileName(entry.getClassName())); - s.setTag(DDTags.DD_CODE_ORIGIN_METHOD, entry.getMethodName()); - s.setTag(DDTags.DD_CODE_ORIGIN_LINE, entry.getLineNumber()); - s.setTag(DDTags.DD_CODE_ORIGIN_TYPE, entry.getClassName()); - s.setTag(DDTags.DD_CODE_ORIGIN_METHOD_SIGNATURE, signature); - if (snapshotId != null) { - s.setTag(DD_CODE_ORIGIN_SNAPSHOT_ID, snapshotId); - } - } - } - } - private void recordStackFrames( AgentSpan span, List entries, String snapshotId) { List agentSpans = @@ -127,6 +106,9 @@ private void recordStackFrames( s.setTag(format(DD_STACK_CODE_ORIGIN_FRAME, i, "method"), info.getMethodName()); s.setTag(format(DD_STACK_CODE_ORIGIN_FRAME, i, "line"), info.getLineNumber()); s.setTag(format(DD_STACK_CODE_ORIGIN_FRAME, i, "type"), info.getClassName()); + if (i == 0 && signature != null) { + s.setTag(format(DD_STACK_CODE_ORIGIN_FRAME, i, "signature"), signature); + } if (i == 0 && snapshotId != null) { s.setTag(format(DD_STACK_CODE_ORIGIN_FRAME, i, "snapshot_id"), snapshotId); } diff --git a/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/origin/CodeOriginTest.java b/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/origin/CodeOriginTest.java index 76d2ab934fa..4ed122314c1 100644 --- a/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/origin/CodeOriginTest.java +++ b/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/origin/CodeOriginTest.java @@ -32,7 +32,6 @@ import com.datadog.debugger.util.TestTraceInterceptor; import datadog.trace.agent.tooling.TracerInstaller; import datadog.trace.api.Config; -import datadog.trace.api.DDTags; import datadog.trace.api.InstrumenterConfig; import datadog.trace.api.interceptor.MutableSpan; import datadog.trace.bootstrap.debugger.DebuggerContext; @@ -191,10 +190,6 @@ private void waitForInstrumentation() { private static void checkEntrySpanTags(MutableSpan span, boolean includeSnapshot) { String keys = format("Existing keys for %s: %s", span.getOperationName(), ldKeys(span)); - assertKeyPresent(span, DDTags.DD_CODE_ORIGIN_FILE); - assertKeyPresent(span, DDTags.DD_CODE_ORIGIN_LINE); - assertKeyPresent(span, DDTags.DD_CODE_ORIGIN_METHOD); - assertKeyPresent(span, DDTags.DD_CODE_ORIGIN_METHOD_SIGNATURE); assertEquals(span.getTag(DD_STACK_CODE_ORIGIN_TYPE), "entry", keys); assertKeyPresent(span, DD_STACK_CODE_ORIGIN_TYPE); @@ -204,7 +199,6 @@ private static void checkEntrySpanTags(MutableSpan span, boolean includeSnapshot assertKeyPresent(span, format(DD_STACK_CODE_ORIGIN_FRAME, 0, "type")); if (includeSnapshot) { - assertKeyPresent(span, DDTags.DD_CODE_ORIGIN_SNAPSHOT_ID); assertKeyPresent(span, format(DD_STACK_CODE_ORIGIN_FRAME, 0, "snapshot_id")); } } @@ -229,14 +223,8 @@ private static void checkExitSpanTags(MutableSpan span, boolean includeSnapshot) String keys = format("Existing keys for %s: %s", span.getOperationName(), new TreeSet<>(ldKeys(span))); - assertKeyNotPresent(span, DDTags.DD_CODE_ORIGIN_FILE); - assertKeyNotPresent(span, DDTags.DD_CODE_ORIGIN_LINE); - assertKeyNotPresent(span, DDTags.DD_CODE_ORIGIN_METHOD); - assertKeyNotPresent(span, DDTags.DD_CODE_ORIGIN_METHOD_SIGNATURE); - assertKeyNotPresent(span, DDTags.DD_CODE_ORIGIN_SNAPSHOT_ID); - assertKeyPresent(span, DD_STACK_CODE_ORIGIN_TYPE); - assertKeyPresent(span, format(DD_STACK_CODE_ORIGIN_FRAME, 0, "file")); + assertKeyPresent(span, format(DD_STACK_CODE_ORIGIN_FRAME, 3, "file")); assertKeyPresent(span, format(DD_STACK_CODE_ORIGIN_FRAME, 0, "line")); assertKeyPresent(span, format(DD_STACK_CODE_ORIGIN_FRAME, 0, "method")); assertKeyPresent(span, format(DD_STACK_CODE_ORIGIN_FRAME, 0, "type")); 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 b66fcd730bc..0693ddfda56 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 @@ -62,10 +62,6 @@ class TagsAssert { assertedTags.add(DDTags.PROFILING_ENABLED) assertedTags.add(DDTags.PROFILING_CONTEXT_ENGINE) assertedTags.add(DDTags.BASE_SERVICE) - assertedTags.add(DDTags.DD_CODE_ORIGIN_FILE) - assertedTags.add(DDTags.DD_CODE_ORIGIN_METHOD) - assertedTags.add(DDTags.DD_CODE_ORIGIN_LINE) - assertedTags.add(DDTags.DD_CODE_ORIGIN_METHOD_SIGNATURE) assertedTags.add(DDTags.DSM_ENABLED) assertedTags.add(DDTags.DJM_ENABLED) assertedTags.add(DDTags.PARENT_ID) 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 58506822388..f456eeb02fe 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 @@ -3,20 +3,12 @@ public class DDTags { private static final String DD_LD_PREFIX = "_dd.ld."; - public static final String DD_STACK_CODE_ORIGIN_PREFIX = "_dd.stack.code_origin."; + public static final String DD_STACK_CODE_ORIGIN_PREFIX = DD_LD_PREFIX + "code_origin."; public static final String DD_STACK_CODE_ORIGIN_TYPE = DD_STACK_CODE_ORIGIN_PREFIX + "type"; // _dd.stack.code_origin.frame.%d.file|line|method|type|snapshot_id public static final String DD_STACK_CODE_ORIGIN_FRAME = - DD_STACK_CODE_ORIGIN_PREFIX + "frame.%d.%s"; - - public static final String DD_CODE_ORIGIN_FILE = DD_LD_PREFIX + "code_origin.file"; - public static final String DD_CODE_ORIGIN_METHOD = DD_LD_PREFIX + "code_origin.method"; - public static final String DD_CODE_ORIGIN_METHOD_SIGNATURE = - DD_LD_PREFIX + "code_origin.signature"; - public static final String DD_CODE_ORIGIN_LINE = DD_LD_PREFIX + "code_origin.line"; - public static final String DD_CODE_ORIGIN_SNAPSHOT_ID = DD_LD_PREFIX + "code_origin.snapshot_id"; - public static final String DD_CODE_ORIGIN_TYPE = DD_LD_PREFIX + "code_origin.type"; + DD_STACK_CODE_ORIGIN_PREFIX + "frames.%d.%s"; public static final String SPAN_TYPE = "span.type"; public static final String SERVICE_NAME = "service.name"; From 0f8251aee9bd7bfc979fddd2e8b93a89b4c9fb8a Mon Sep 17 00:00:00 2001 From: Idan Shatz Date: Wed, 25 Sep 2024 10:51:52 -0600 Subject: [PATCH 2/2] address PR comments --- .../test/java/com/datadog/debugger/origin/CodeOriginTest.java | 3 ++- dd-trace-api/src/main/java/datadog/trace/api/DDTags.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/origin/CodeOriginTest.java b/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/origin/CodeOriginTest.java index 4ed122314c1..a76a202644b 100644 --- a/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/origin/CodeOriginTest.java +++ b/dd-java-agent/agent-debugger/src/test/java/com/datadog/debugger/origin/CodeOriginTest.java @@ -196,6 +196,7 @@ private static void checkEntrySpanTags(MutableSpan span, boolean includeSnapshot assertKeyPresent(span, format(DD_STACK_CODE_ORIGIN_FRAME, 0, "file")); assertKeyPresent(span, format(DD_STACK_CODE_ORIGIN_FRAME, 0, "line")); assertKeyPresent(span, format(DD_STACK_CODE_ORIGIN_FRAME, 0, "method")); + assertKeyPresent(span, format(DD_STACK_CODE_ORIGIN_FRAME, 0, "signature")); assertKeyPresent(span, format(DD_STACK_CODE_ORIGIN_FRAME, 0, "type")); if (includeSnapshot) { @@ -224,7 +225,7 @@ private static void checkExitSpanTags(MutableSpan span, boolean includeSnapshot) format("Existing keys for %s: %s", span.getOperationName(), new TreeSet<>(ldKeys(span))); assertKeyPresent(span, DD_STACK_CODE_ORIGIN_TYPE); - assertKeyPresent(span, format(DD_STACK_CODE_ORIGIN_FRAME, 3, "file")); + assertKeyPresent(span, format(DD_STACK_CODE_ORIGIN_FRAME, 0, "file")); assertKeyPresent(span, format(DD_STACK_CODE_ORIGIN_FRAME, 0, "line")); assertKeyPresent(span, format(DD_STACK_CODE_ORIGIN_FRAME, 0, "method")); assertKeyPresent(span, format(DD_STACK_CODE_ORIGIN_FRAME, 0, "type")); 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 f456eeb02fe..bafad0a3f6f 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 @@ -6,7 +6,7 @@ public class DDTags { public static final String DD_STACK_CODE_ORIGIN_PREFIX = DD_LD_PREFIX + "code_origin."; public static final String DD_STACK_CODE_ORIGIN_TYPE = DD_STACK_CODE_ORIGIN_PREFIX + "type"; - // _dd.stack.code_origin.frame.%d.file|line|method|type|snapshot_id + // _dd.ld.code_origin.frames.%d.file|line|method|type|snapshot_id public static final String DD_STACK_CODE_ORIGIN_FRAME = DD_STACK_CODE_ORIGIN_PREFIX + "frames.%d.%s";