Skip to content

Commit 8f2209f

Browse files
fix(propagator-b3): update extract to check for array (#2285)
* fix(propagator-b3): update extract to check for array * fix(propagator-b3): normalize header value Co-authored-by: Daniel Dyla <[email protected]>
1 parent b442048 commit 8f2209f

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

packages/opentelemetry-propagator-b3/src/B3Propagator.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff 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);

packages/opentelemetry-propagator-b3/test/B3Propagator.test.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff 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,

0 commit comments

Comments
 (0)