@@ -80,6 +80,7 @@ use deno_facade::Metadata;
8080use either:: Either ;
8181use either:: Either :: Left ;
8282use either:: Either :: Right ;
83+ use ext_event_worker:: events:: EventMetadata ;
8384use ext_event_worker:: events:: WorkerEventWithMetadata ;
8485use ext_runtime:: external_memory:: CustomAllocator ;
8586use ext_runtime:: MemCheckWaker ;
@@ -127,6 +128,7 @@ use crate::worker::Worker;
127128mod ops;
128129mod unsync;
129130
131+ pub mod otel;
130132pub mod permissions;
131133
132134const DEFAULT_ALLOC_CHECK_INT_MSEC : u64 = 1000 ;
@@ -1312,6 +1314,15 @@ where
13121314 } ;
13131315 }
13141316
1317+ let otel_attrs = {
1318+ let op_state = self . js_runtime . op_state ( ) ;
1319+ let op_state_ref = op_state. borrow ( ) ;
1320+ op_state_ref
1321+ . try_borrow :: < EventMetadata > ( )
1322+ . map ( otel:: WorkerSpanAttrs :: from_event_metadata)
1323+ . unwrap_or_default ( )
1324+ } ;
1325+
13151326 let inspector = self . inspector ( ) ;
13161327 let mod_fut_ret = unsafe {
13171328 if let Err ( err) = self . init_main_module ( ) . await {
@@ -1371,7 +1382,10 @@ where
13711382 op_state,
13721383 & maybe_cpu_usage_metrics_tx,
13731384 & mut accumulated_cpu_time_ns,
1374- || locker. js_runtime . mod_evaluate ( main_module_id) ,
1385+ || {
1386+ let _span = otel:: start_span ( "v8.mod_evaluate" , & otel_attrs) ;
1387+ locker. js_runtime . mod_evaluate ( main_module_id)
1388+ } ,
13751389 ) )
13761390 }
13771391 . instrument ( span) ,
@@ -1449,7 +1463,11 @@ where
14491463 locker. js_runtime . op_state ( ) ,
14501464 & maybe_cpu_usage_metrics_tx,
14511465 & mut accumulated_cpu_time_ns,
1452- || MaybeDenoRuntime :: DenoRuntime ( * locker) . dispatch_load_event ( ) ,
1466+ || {
1467+ let _span =
1468+ otel:: start_span ( "v8.dispatch_load_event" , & otel_attrs) ;
1469+ MaybeDenoRuntime :: DenoRuntime ( * locker) . dispatch_load_event ( )
1470+ } ,
14531471 ) {
14541472 return ( Err ( err) , get_accumulated_cpu_time_ms ! ( ) ) ;
14551473 }
@@ -1482,7 +1500,10 @@ where
14821500 locker. js_runtime . op_state ( ) ,
14831501 & maybe_cpu_usage_metrics_tx,
14841502 & mut accumulated_cpu_time_ns,
1485- || MaybeDenoRuntime :: DenoRuntime ( & mut locker) . dispatch_unload_event ( ) ,
1503+ || {
1504+ let _span = otel:: start_span ( "v8.dispatch_unload_event" , & otel_attrs) ;
1505+ MaybeDenoRuntime :: DenoRuntime ( & mut locker) . dispatch_unload_event ( )
1506+ } ,
14861507 ) {
14871508 return ( Err ( err) , get_accumulated_cpu_time_ms ! ( ) ) ;
14881509 }
@@ -1506,6 +1527,16 @@ where
15061527 let is_user_worker = self . conf . is_user_worker ( ) ;
15071528 let global_waker = self . waker . clone ( ) ;
15081529
1530+ // Collect worker identity for OTLP spans.
1531+ let otel_attrs = {
1532+ let op_state = self . js_runtime . op_state ( ) ;
1533+ let op_state_ref = op_state. borrow ( ) ;
1534+ op_state_ref
1535+ . try_borrow :: < EventMetadata > ( )
1536+ . map ( otel:: WorkerSpanAttrs :: from_event_metadata)
1537+ . unwrap_or_default ( )
1538+ } ;
1539+
15091540 let mut termination_request_fut = self
15101541 . termination_request_token
15111542 . clone ( )
@@ -1573,6 +1604,7 @@ where
15731604 Cow :: Borrowed ( waker)
15741605 } ;
15751606
1607+ let _poll_span = otel:: start_span ( "v8.poll_event_loop" , & otel_attrs) ;
15761608 js_runtime. poll_event_loop (
15771609 & mut std:: task:: Context :: from_waker ( waker. as_ref ( ) ) ,
15781610 PollEventLoopOptions {
0 commit comments