Skip to content

Commit 5f3cbc2

Browse files
Nikolay Lagutkodyladan
andauthored
fix(propagator-jaeger): 0-pad span-id to match 16-symbol validation (#2694)
Co-authored-by: Daniel Dyla <dyladan@users.noreply.github.com>
1 parent fb2031b commit 5f3cbc2

2 files changed

Lines changed: 17 additions & 1 deletion

File tree

packages/opentelemetry-propagator-jaeger/src/JaegerPropagator.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,9 +141,10 @@ function deserializeSpanContext(serializedString: string): SpanContext | null {
141141
return null;
142142
}
143143

144-
const [_traceId, spanId, , flags] = headers;
144+
const [_traceId, _spanId, , flags] = headers;
145145

146146
const traceId = _traceId.padStart(32, '0');
147+
const spanId = _spanId.padStart(16, '0');
147148
const traceFlags = flags.match(/^[0-9a-f]{2}$/i) ? parseInt(flags) & 1 : 1;
148149

149150
return { traceId, spanId, isRemote: true, traceFlags };

packages/opentelemetry-propagator-jaeger/test/JaegerPropagator.test.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,21 @@ describe('JaegerPropagator', () => {
299299
assert(typeof firstEntry !== 'undefined');
300300
assert(firstEntry.value === 'one');
301301
});
302+
303+
it('should 0-pad span and trace id from header', () => {
304+
carrier[UBER_TRACE_ID_HEADER] = '4cda95b652f4a1592b449d5929fda1b:e0c63257de34c92:0:01';
305+
const extractedSpanContext = trace.getSpanContext(
306+
jaegerPropagator.extract(
307+
ROOT_CONTEXT,
308+
carrier,
309+
defaultTextMapGetter
310+
)
311+
);
312+
313+
assert.ok(extractedSpanContext);
314+
assert.equal(extractedSpanContext.spanId, '0e0c63257de34c92');
315+
assert.equal(extractedSpanContext.traceId, '04cda95b652f4a1592b449d5929fda1b');
316+
});
302317
});
303318

304319
describe('.fields()', () => {

0 commit comments

Comments
 (0)