@@ -12,6 +12,7 @@ use serde_json::{json, Value};
1212use tokio:: sync:: { mpsc:: Sender , watch} ;
1313use tracing:: debug;
1414
15+ use crate :: traces:: propagation:: extract_composite;
1516use crate :: {
1617 config:: { self , AwsConfig } ,
1718 lifecycle:: invocation:: {
@@ -28,16 +29,10 @@ use crate::{
2829 telemetry:: events:: { ReportMetrics , RuntimeDoneMetrics , Status } ,
2930 traces:: {
3031 context:: SpanContext ,
31- propagation:: {
32- text_map_propagator:: {
33- DatadogHeaderPropagator , DATADOG_PARENT_ID_KEY , DATADOG_SAMPLING_PRIORITY_KEY ,
34- DATADOG_SPAN_ID_KEY , DATADOG_TRACE_ID_KEY ,
35- } ,
36- DatadogCompositePropagator , Propagator ,
37- } ,
3832 trace_processor,
3933 } ,
4034} ;
35+ use crate :: traces:: propagation:: datadog_propagation:: { extract_tags_datadog_context, DATADOG_PARENT_ID_KEY , DATADOG_SAMPLING_PRIORITY_KEY , DATADOG_SPAN_ID_KEY , DATADOG_TRACE_ID_KEY } ;
4136
4237pub const MS_TO_NS : f64 = 1_000_000.0 ;
4338pub const S_TO_NS : f64 = 1_000_000_000.0 ;
@@ -61,7 +56,6 @@ pub struct Processor {
6156 // Extracted span context from inferred span, headers, or payload
6257 pub extracted_span_context : Option < SpanContext > ,
6358 // Used to extract the trace context from inferred span, headers, or payload
64- propagator : DatadogCompositePropagator ,
6559 // Helper to send enhanced metrics
6660 enhanced_metrics : EnhancedMetrics ,
6761 // AWS configuration from the Lambda environment
@@ -85,15 +79,12 @@ impl Processor {
8579 . get_canonical_resource_name ( )
8680 . unwrap_or ( String :: from ( "aws.lambda" ) ) ;
8781
88- let propagator = DatadogCompositePropagator :: new ( Arc :: clone ( & config) ) ;
89-
9082 Processor {
9183 context_buffer : ContextBuffer :: default ( ) ,
9284 inferrer : SpanInferrer :: new ( config. service_mapping . clone ( ) ) ,
9385 span : create_empty_span ( String :: from ( "aws.lambda" ) , resource, service) ,
9486 cold_start_span : None ,
9587 extracted_span_context : None ,
96- propagator,
9788 enhanced_metrics : EnhancedMetrics :: new ( metrics_aggregator, Arc :: clone ( & config) ) ,
9889 aws_config : aws_config. clone ( ) ,
9990 tracer_detected : false ,
@@ -463,18 +454,18 @@ impl Processor {
463454 headers : & HashMap < String , String > ,
464455 payload_value : & Value ,
465456 ) -> Option < SpanContext > {
466- if let Some ( sc) = self . inferrer . get_span_context ( & self . propagator ) {
457+ if let Some ( sc) = self . inferrer . get_span_context ( & self . config ) {
467458 return Some ( sc) ;
468459 }
469460
470461 if let Some ( payload_headers) = payload_value. get ( "headers" ) {
471- if let Some ( sc) = self . propagator . extract ( payload_headers) {
462+ if let Some ( sc) = extract_composite ( & self . config , payload_headers) {
472463 debug ! ( "Extracted trace context from event headers" ) ;
473464 return Some ( sc) ;
474465 }
475466 }
476467
477- if let Some ( sc) = self . propagator . extract ( headers) {
468+ if let Some ( sc) = extract_composite ( & self . config , headers) {
478469 debug ! ( "Extracted trace context from headers" ) ;
479470 return Some ( sc) ;
480471 }
@@ -564,7 +555,7 @@ impl Processor {
564555
565556 // Extract tags from headers
566557 // Used for 128 bit trace ids
567- tags = DatadogHeaderPropagator :: extract_tags ( headers) ;
558+ tags = extract_tags_datadog_context ( headers) ;
568559 }
569560
570561 // We should always use the generated trace id from the tracer
@@ -648,6 +639,7 @@ mod tests {
648639 use base64:: { engine:: general_purpose:: STANDARD , Engine } ;
649640 use dogstatsd:: aggregator:: Aggregator ;
650641 use dogstatsd:: metric:: EMPTY_TAGS ;
642+ use crate :: traces:: propagation:: datadog_propagation:: DATADOG_TRACE_ID_KEY ;
651643
652644 fn setup ( ) -> Processor {
653645 let aws_config = AwsConfig {
0 commit comments