File tree Expand file tree Collapse file tree 2 files changed +29
-1
lines changed
packages/opentelemetry-propagator-b3 Expand file tree Collapse file tree 2 files changed +29
-1
lines changed Original file line number Diff line number Diff line change @@ -61,7 +61,10 @@ export class B3Propagator implements TextMapPropagator {
6161 }
6262
6363 extract ( context : Context , carrier : unknown , getter : TextMapGetter ) : Context {
64- if ( getter . get ( carrier , B3_CONTEXT_HEADER ) ) {
64+ const header = getter . get ( carrier , B3_CONTEXT_HEADER ) ;
65+ const b3Context = Array . isArray ( header ) ? header [ 0 ] : header ;
66+
67+ if ( b3Context ) {
6568 return this . _b3SinglePropagator . extract ( context , carrier , getter ) ;
6669 } else {
6770 return this . _b3MultiPropagator . extract ( context , carrier , getter ) ;
Original file line number Diff line number Diff line change @@ -152,6 +152,31 @@ describe('B3Propagator', () => {
152152 } ) ;
153153 } ) ;
154154
155+ it ( 'extracts multi header b3 using array getter' , ( ) => {
156+ const context = propagator . extract (
157+ ROOT_CONTEXT ,
158+ b3MultiCarrier ,
159+ {
160+ get ( carrier , key ) {
161+ if ( carrier == null || carrier [ key ] === undefined ) {
162+ return [ ] ;
163+ }
164+ return [ carrier [ key ] ] ;
165+ } ,
166+
167+ keys : defaultTextMapGetter . keys
168+ }
169+ ) ;
170+
171+ const extractedSpanContext = trace . getSpanContext ( context ) ;
172+ assert . deepStrictEqual ( extractedSpanContext , {
173+ spanId : '6e0c63257de34c92' ,
174+ traceId : 'd4cda95b652f4a1592b449d5929fda1b' ,
175+ isRemote : true ,
176+ traceFlags : TraceFlags . SAMPLED ,
177+ } ) ;
178+ } ) ;
179+
155180 it ( 'extracts single header over multi' , ( ) => {
156181 const context = propagator . extract (
157182 ROOT_CONTEXT ,
You can’t perform that action at this time.
0 commit comments