88import static org .junit .jupiter .api .Assertions .assertTrue ;
99import static org .openjdk .jmc .common .item .Attribute .attr ;
1010import static org .openjdk .jmc .common .unit .UnitLookup .NUMBER ;
11+ import static org .openjdk .jmc .common .unit .UnitLookup .PLAIN_TEXT ;
1112
1213import datadog .trace .api .config .ProfilingConfig ;
1314import io .opentracing .Scope ;
4142import org .openjdk .jmc .common .item .ItemFilters ;
4243import org .openjdk .jmc .common .unit .IQuantity ;
4344import org .openjdk .jmc .flightrecorder .JfrLoaderToolkit ;
45+ import org .openjdk .jmc .flightrecorder .jdk .JdkAttributes ;
4446
4547@ DisabledOnJ9
4648final 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