Skip to content

Commit

Permalink
fix(auto-instrumenations-node): ensure that empty values, all space v…
Browse files Browse the repository at this point in the history
…alue, and 'none' is handled
  • Loading branch information
pichlermarc committed Jun 11, 2024
1 parent f8b4480 commit cf3bb0d
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 1 deletion.
9 changes: 8 additions & 1 deletion metapackages/auto-instrumentations-node/src/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,7 @@ const propagatorMap = new Map<string, PropagatorFactoryFunction>([
* Get a propagator based on the OTEL_PROPAGATORS env var.
*/
export function getPropagator(): TextMapPropagator {
if (process.env.OTEL_PROPAGATORS == null) {
if (process.env.OTEL_PROPAGATORS == null || process.env.OTEL_PROPAGATORS.trim() === '') {
return new CompositePropagator({
propagators: [
new W3CTraceContextPropagator(),
Expand All @@ -303,6 +303,13 @@ export function getPropagator(): TextMapPropagator {
);

const propagators = propagatorsFromEnv.flatMap(propagatorName => {
if (propagatorName === 'none'){
diag.info(
`Not selecting any propagator for value "none" specified in the environment variable OTEL_PROPAGATORS`
);
return [];
}

const propagatorFactoryFunction = propagatorMap.get(propagatorName);
if (propagatorFactoryFunction == null) {
diag.error(
Expand Down
23 changes: 23 additions & 0 deletions metapackages/auto-instrumentations-node/test/utils.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,24 @@ describe('utils', () => {
]);
});

it('should return default when env var is empty', () => {
process.env.OTEL_PROPAGATORS = '';
assert.deepStrictEqual(getPropagator().fields(), [
'traceparent',
'tracestate',
'baggage',
]);
});

it('should return default when env var is all spaces', () => {
process.env.OTEL_PROPAGATORS = ' ';
assert.deepStrictEqual(getPropagator().fields(), [
'traceparent',
'tracestate',
'baggage',
]);
});

it('should return the selected propagator when one is in the list', () => {
process.env.OTEL_PROPAGATORS = 'tracecontext';
assert.deepStrictEqual(getPropagator().fields(), [
Expand All @@ -192,5 +210,10 @@ describe('utils', () => {
process.env.OTEL_PROPAGATORS = 'my, unknown, propagators';
assert.deepStrictEqual(getPropagator().fields(), []);
});

it('should return no-op propagator if "none" is selected', () => {
process.env.OTEL_PROPAGATORS = 'none';
assert.deepStrictEqual(getPropagator().fields(), []);
});
});
});

0 comments on commit cf3bb0d

Please sign in to comment.