Skip to content

Commit 80ff5e2

Browse files
authored
fix: do not inject invalid span context (#2080)
* fix: do not inject invalid span context * chore: review comments
1 parent a457776 commit 80ff5e2

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

packages/opentelemetry-core/src/context/propagation/HttpTraceContext.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import {
1818
Context,
1919
getSpanContext,
20+
isSpanContextValid,
2021
setSpanContext,
2122
SpanContext,
2223
TextMapGetter,
@@ -73,7 +74,7 @@ export function parseTraceParent(traceParent: string): SpanContext | null {
7374
export class HttpTraceContext implements TextMapPropagator {
7475
inject(context: Context, carrier: unknown, setter: TextMapSetter) {
7576
const spanContext = getSpanContext(context);
76-
if (!spanContext) return;
77+
if (!spanContext || !isSpanContextValid(spanContext)) return;
7778

7879
const traceParent = `${VERSION}-${spanContext.traceId}-${
7980
spanContext.spanId

packages/opentelemetry-core/test/context/HttpTraceContext.test.ts

+19
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ import {
2121
TraceFlags,
2222
getSpanContext,
2323
setSpanContext,
24+
INVALID_TRACEID,
25+
INVALID_SPANID,
2426
} from '@opentelemetry/api';
2527
import { ROOT_CONTEXT } from '@opentelemetry/api';
2628
import * as assert from 'assert';
@@ -78,6 +80,23 @@ describe('HttpTraceContext', () => {
7880
);
7981
assert.deepStrictEqual(carrier[TRACE_STATE_HEADER], 'foo=bar,baz=qux');
8082
});
83+
84+
it('should ignore invalid span context', () => {
85+
const spanContext: SpanContext = {
86+
traceId: INVALID_TRACEID,
87+
spanId: INVALID_SPANID,
88+
traceFlags: TraceFlags.NONE,
89+
traceState: new TraceState('foo=bar,baz=qux'),
90+
};
91+
92+
httpTraceContext.inject(
93+
setSpanContext(ROOT_CONTEXT, spanContext),
94+
carrier,
95+
defaultTextMapSetter
96+
);
97+
assert.strictEqual(carrier[TRACE_PARENT_HEADER], undefined);
98+
assert.strictEqual(carrier[TRACE_STATE_HEADER], undefined);
99+
});
81100
});
82101

83102
describe('.extract()', () => {

0 commit comments

Comments
 (0)