File tree Expand file tree Collapse file tree 2 files changed +32
-2
lines changed
propagators/propagator-aws-xray Expand file tree Collapse file tree 2 files changed +32
-2
lines changed Original file line number Diff line number Diff line change @@ -99,8 +99,10 @@ export class AWSXRayPropagator implements TextMapPropagator {
9999 if ( ! relevantHeaderKey ) {
100100 return INVALID_SPAN_CONTEXT ;
101101 }
102- let traceHeader = getter . get ( carrier , relevantHeaderKey ) ;
103- traceHeader = Array . isArray ( traceHeader ) ? traceHeader [ 0 ] : traceHeader ;
102+ const rawTraceHeader = getter . get ( carrier , relevantHeaderKey ) ;
103+ const traceHeader = Array . isArray ( rawTraceHeader )
104+ ? rawTraceHeader [ 0 ]
105+ : rawTraceHeader ;
104106
105107 if ( ! traceHeader || typeof traceHeader !== 'string' ) {
106108 return INVALID_SPAN_CONTEXT ;
Original file line number Diff line number Diff line change @@ -23,6 +23,7 @@ import {
2323 SpanContext ,
2424 TraceFlags ,
2525 trace ,
26+ TextMapGetter ,
2627} from '@opentelemetry/api' ;
2728import { TraceState } from '@opentelemetry/core' ;
2829
@@ -317,6 +318,33 @@ describe('AWSXRayPropagator', () => {
317318 } ) ;
318319 } ) ;
319320
321+ it ( 'should extract multi header using array getter' , ( ) => {
322+ carrier [ AWSXRAY_TRACE_ID_HEADER ] =
323+ 'Root=1-8a3c60f7-d188f8fa79d48a391a778fa6;Parent=53995c3f42cd8ad8;Sampled=1' ;
324+ const multiGetter : TextMapGetter = {
325+ get ( carrier , key ) {
326+ if ( carrier == null || carrier [ key ] === undefined ) {
327+ return undefined ;
328+ }
329+ return [ carrier [ key ] ] ;
330+ } ,
331+ keys : function ( carrier : any ) : string [ ] {
332+ return defaultTextMapGetter . keys ( carrier ) ;
333+ } ,
334+ } ;
335+
336+ const extractedSpanContext = trace
337+ . getSpan ( xrayPropagator . extract ( ROOT_CONTEXT , carrier , multiGetter ) )
338+ ?. spanContext ( ) ;
339+
340+ assert . deepStrictEqual ( extractedSpanContext , {
341+ traceId : TRACE_ID ,
342+ spanId : SPAN_ID ,
343+ isRemote : true ,
344+ traceFlags : TraceFlags . SAMPLED ,
345+ } ) ;
346+ } ) ;
347+
320348 describe ( '.fields()' , ( ) => {
321349 it ( 'should return a field with AWS X-Ray Trace ID header' , ( ) => {
322350 const expectedField = xrayPropagator . fields ( ) ;
You can’t perform that action at this time.
0 commit comments