Skip to content

Commit 81c70f9

Browse files
committed
fix(otel): Prevent baggage from being overwritten
1 parent 0adaff4 commit 81c70f9

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
@@ -4459,16 +4459,11 @@
44594459
resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.1.tgz#18845205e86ff0038517aab7a18a62a6b9f71275"
44604460
integrity sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA==
44614461

4462-
"@types/semver@^7.3.12":
4462+
"@types/semver@^7.3.12", "@types/semver@^7.3.9":
44634463
version "7.3.13"
44644464
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.13.tgz#da4bfd73f49bd541d28920ab0e2bf0ee80f71c91"
44654465
integrity sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==
44664466

4467-
"@types/semver@^7.3.9":
4468-
version "7.3.9"
4469-
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.3.9.tgz#152c6c20a7688c30b967ec1841d31ace569863fc"
4470-
integrity sha512-L/TMpyURfBkf+o/526Zb6kd/tchUP3iBDEPjqjb+U2MAJhVRxxrmr2fwpe08E7QsV7YLcpq0tUaQ9O9x97ZIxQ==
4471-
44724467
"@types/serve-static@*":
44734468
version "1.13.9"
44744469
resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.13.9.tgz#aacf28a85a05ee29a11fb7c3ead935ac56f33e4e"
@@ -20551,12 +20546,7 @@ regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.3:
2055120546
define-properties "^1.1.3"
2055220547
functions-have-names "^1.2.2"
2055320548

20554-
regexpp@^3.0.0, regexpp@^3.1.0:
20555-
version "3.1.0"
20556-
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2"
20557-
integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==
20558-
20559-
regexpp@^3.2.0:
20549+
regexpp@^3.0.0, regexpp@^3.1.0, regexpp@^3.2.0:
2056020550
version "3.2.0"
2056120551
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
2056220552
integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==

0 commit comments

Comments
 (0)