Skip to content

Commit 0efadc0

Browse files
committed
fix(otel): Prevent baggage from being overwritten
1 parent e26e835 commit 0efadc0

File tree

2 files changed

+19
-20
lines changed

2 files changed

+19
-20
lines changed

packages/opentelemetry-node/src/propagator.ts

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
import {
2+
Baggage,
23
Context,
34
isSpanContextValid,
5+
propagation,
46
TextMapGetter,
5-
TextMapPropagator,
67
TextMapSetter,
78
trace,
89
TraceFlags,
910
} from '@opentelemetry/api';
10-
import { isTracingSuppressed } from '@opentelemetry/core';
11+
import { isTracingSuppressed, W3CBaggagePropagator } from '@opentelemetry/core';
1112
import {
1213
baggageHeaderToDynamicSamplingContext,
13-
dynamicSamplingContextToSentryBaggageHeader,
1414
extractTraceparentData,
15+
SENTRY_BAGGAGE_KEY_PREFIX,
1516
} from '@sentry/utils';
1617

1718
import {
@@ -25,7 +26,7 @@ import { SENTRY_SPAN_PROCESSOR_MAP } from './spanprocessor';
2526
/**
2627
* Injects and extracts `sentry-trace` and `baggage` headers from carriers.
2728
*/
28-
export class SentryPropagator implements TextMapPropagator {
29+
export class SentryPropagator extends W3CBaggagePropagator {
2930
/**
3031
* @inheritDoc
3132
*/
@@ -41,10 +42,18 @@ export class SentryPropagator implements TextMapPropagator {
4142

4243
if (span.transaction) {
4344
const dynamicSamplingContext = span.transaction.getDynamicSamplingContext();
44-
const sentryBaggageHeader = dynamicSamplingContextToSentryBaggageHeader(dynamicSamplingContext);
45-
if (sentryBaggageHeader) {
46-
setter.set(carrier, SENTRY_BAGGAGE_HEADER, sentryBaggageHeader);
47-
}
45+
46+
const baggage = propagation.getBaggage(context) || propagation.createBaggage({});
47+
const baggageWithSentryInfo = Object.entries(dynamicSamplingContext).reduce<Baggage>(
48+
(b, [dscKey, dscValue]) => {
49+
if (dscValue) {
50+
return b.setEntry(`${SENTRY_BAGGAGE_KEY_PREFIX}${dscKey}`, { value: dscValue });
51+
}
52+
return b;
53+
},
54+
baggage,
55+
);
56+
super.inject(propagation.setBaggage(context, baggageWithSentryInfo), carrier, setter);
4857
}
4958
}
5059
}

yarn.lock

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4480,16 +4480,11 @@
44804480
resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.1.tgz#18845205e86ff0038517aab7a18a62a6b9f71275"
44814481
integrity sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA==
44824482

4483-
"@types/semver@^7.3.12":
4483+
"@types/semver@^7.3.12", "@types/semver@^7.3.9":
44844484
version "7.3.13"
44854485
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91"
44864486
integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==
44874487

4488-
"@types/semver@^7.3.9":
4489-
version "7.3.9"
4490-
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.9.tgz#152c6c20a7688c30b967ec1841d31ace569863fc"
4491-
integrity sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ==
4492-
44934488
"@types/serve-static@*":
44944489
version "1.13.9"
44954490
resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.9.tgz#aacf28a85a05ee29a11fb7c3ead935ac56f33e4e"
@@ -20584,12 +20579,7 @@ regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.3:
2058420579
define-properties "^1.1.3"
2058520580
functions-have-names "^1.2.2"
2058620581

20587-
regexpp@^3.0.0, regexpp@^3.1.0:
20588-
version "3.1.0"
20589-
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2"
20590-
integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==
20591-
20592-
regexpp@^3.2.0:
20582+
regexpp@^3.0.0, regexpp@^3.1.0, regexpp@^3.2.0:
2059320583
version "3.2.0"
2059420584
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
2059520585
integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==

0 commit comments

Comments
 (0)