File tree Expand file tree Collapse file tree 2 files changed +21
-1
lines changed
packages/opentelemetry-core Expand file tree Collapse file tree 2 files changed +21
-1
lines changed Original file line number Diff line number Diff line change 1717import {
1818 Context ,
1919 getSpanContext ,
20+ isSpanContextValid ,
2021 setSpanContext ,
2122 SpanContext ,
2223 TextMapGetter ,
@@ -73,7 +74,7 @@ export function parseTraceParent(traceParent: string): SpanContext | null {
7374export 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
Original file line number Diff line number Diff line change @@ -21,6 +21,8 @@ import {
2121 TraceFlags ,
2222 getSpanContext ,
2323 setSpanContext ,
24+ INVALID_TRACEID ,
25+ INVALID_SPANID ,
2426} from '@opentelemetry/api' ;
2527import { ROOT_CONTEXT } from '@opentelemetry/api' ;
2628import * 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()' , ( ) => {
You can’t perform that action at this time.
0 commit comments