Skip to content

Commit 584d2fc

Browse files
committed
fix: LockSupportTaskBlock _dd.trace.operation
1 parent 5b35daf commit 584d2fc

1 file changed

Lines changed: 21 additions & 0 deletions

File tree

dd-smoke-tests/profiling-integration-tests/src/test/java/datadog/smoketest/LockSupportTaskBlockProfilingTest.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import static org.junit.jupiter.api.Assertions.assertTrue;
99
import static org.openjdk.jmc.common.item.Attribute.attr;
1010
import static org.openjdk.jmc.common.unit.UnitLookup.NUMBER;
11+
import static org.openjdk.jmc.common.unit.UnitLookup.PLAIN_TEXT;
1112

1213
import datadog.trace.api.config.ProfilingConfig;
1314
import io.opentracing.Scope;
@@ -41,6 +42,7 @@
4142
import org.openjdk.jmc.common.item.ItemFilters;
4243
import org.openjdk.jmc.common.unit.IQuantity;
4344
import org.openjdk.jmc.flightrecorder.JfrLoaderToolkit;
45+
import org.openjdk.jmc.flightrecorder.jdk.JdkAttributes;
4446

4547
@DisabledOnJ9
4648
final class LockSupportTaskBlockProfilingTest {
@@ -66,6 +68,8 @@ final class LockSupportTaskBlockProfilingTest {
6668
"numTaskBlockSkippedTooShort",
6769
"numTaskBlockSkippedTooShort",
6870
NUMBER);
71+
private static final IAttribute<String> OPERATION =
72+
attr("_dd.trace.operation", "_dd.trace.operation", "_dd.trace.operation", PLAIN_TEXT);
6973
private static final Path LOG_FILE_BASE =
7074
Paths.get(
7175
buildDirectory(),
@@ -109,6 +113,10 @@ void lockSupportParksEmitTaskBlockEvents() throws Exception {
109113
assertFalse(stats.hasZeroSpanId, "TaskBlock events must have non-zero spanId");
110114
assertFalse(
111115
stats.hasZeroLocalRootSpanId, "TaskBlock events must have non-zero localRootSpanId");
116+
assertFalse(stats.hasMissingEventThread, "TaskBlock events must resolve Event Thread");
117+
assertTrue(
118+
stats.hasExpectedOperation,
119+
"Expected TaskBlock events to include LockSupport span operation names");
112120
assertFalse(logHasLockSupportInstrumentationError(), "LockSupport instrumentation failed");
113121
}
114122

@@ -139,6 +147,7 @@ private ProcessBuilder createProcessBuilder() {
139147
"-Ddd." + ProfilingConfig.PROFILING_START_FORCE_FIRST + "=true",
140148
"-Ddd.profiling.upload.period=1",
141149
"-Ddd.profiling.hotspots.enabled=true",
150+
"-Ddd." + ProfilingConfig.PROFILING_CONTEXT_ATTRIBUTES_SPAN_NAME_ENABLED + "=true",
142151
"-Ddd.profiling.debug.dump_path=" + dumpDir,
143152
"-Ddatadog.slf4j.simpleLogger.defaultLogLevel=debug",
144153
"-Dorg.slf4j.simpleLogger.defaultLogLevel=debug",
@@ -318,6 +327,8 @@ private static final class JfrStats {
318327
private long taskBlocksWithUnblockingSpan;
319328
private boolean hasZeroSpanId;
320329
private boolean hasZeroLocalRootSpanId;
330+
private boolean hasMissingEventThread;
331+
private boolean hasExpectedOperation;
321332

322333
private void add(IItemCollection events) {
323334
addTaskBlocks(events);
@@ -333,14 +344,24 @@ private void addTaskBlocks(IItemCollection events) {
333344
IMemberAccessor<IQuantity, IItem> blockerAccessor = BLOCKER.getAccessor(items.getType());
334345
IMemberAccessor<IQuantity, IItem> unblockingSpanIdAccessor =
335346
UNBLOCKING_SPAN_ID.getAccessor(items.getType());
347+
IMemberAccessor<String, IItem> eventThreadAccessor =
348+
JdkAttributes.EVENT_THREAD_NAME.getAccessor(items.getType());
349+
IMemberAccessor<String, IItem> operationAccessor = OPERATION.getAccessor(items.getType());
336350
for (IItem item : items) {
337351
taskBlockCount++;
338352
long spanId = spanIdAccessor.getMember(item).longValue();
339353
long localRootSpanId = localRootSpanIdAccessor.getMember(item).longValue();
340354
long blocker = blockerAccessor.getMember(item).longValue();
341355
long unblockingSpanId = unblockingSpanIdAccessor.getMember(item).longValue();
356+
String eventThread =
357+
eventThreadAccessor == null ? null : eventThreadAccessor.getMember(item);
358+
String operation = operationAccessor == null ? null : operationAccessor.getMember(item);
342359
hasZeroSpanId |= spanId == 0;
343360
hasZeroLocalRootSpanId |= localRootSpanId == 0;
361+
hasMissingEventThread |= eventThread == null || eventThread.isEmpty();
362+
hasExpectedOperation |=
363+
"locksupport.active".equals(operation)
364+
|| "locksupport.unpark.parked".equals(operation);
344365
if (blocker != 0) {
345366
taskBlocksWithNonZeroBlocker++;
346367
}

0 commit comments

Comments
 (0)