Skip to content

Commit 08ddcfb

Browse files
authored
ref(sveltekit): Extract propagation context (#8428)
Use the `tracingContextFromHeaders` helper to simplify how trace context is generated by the Sveltekit SDK . Then set the propagation context accordingly.
1 parent 2cf8a6a commit 08ddcfb

File tree

3 files changed

+12
-21
lines changed

3 files changed

+12
-21
lines changed

packages/sveltekit/src/server/handle.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,8 @@ function instrumentHandle({ event, resolve }: Parameters<Handle>[0], options: Se
112112
return resolve(event);
113113
}
114114

115-
const { traceparentData, dynamicSamplingContext } = getTracePropagationData(event);
115+
const { dynamicSamplingContext, traceparentData, propagationContext } = getTracePropagationData(event);
116+
getCurrentHub().getScope().setPropagationContext(propagationContext);
116117

117118
return trace(
118119
{

packages/sveltekit/src/server/load.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* eslint-disable @sentry-internal/sdk/no-optional-chaining */
2-
import { trace } from '@sentry/core';
2+
import { getCurrentHub, trace } from '@sentry/core';
33
import { captureException } from '@sentry/node';
44
import type { TransactionContext } from '@sentry/types';
55
import { addExceptionMechanism, addNonEnumerableProperty, objectify } from '@sentry/utils';
@@ -121,7 +121,8 @@ export function wrapServerLoadWithSentry<T extends (...args: any) => any>(origSe
121121

122122
const routeId = event.route && event.route.id;
123123

124-
const { dynamicSamplingContext, traceparentData } = getTracePropagationData(event);
124+
const { dynamicSamplingContext, traceparentData, propagationContext } = getTracePropagationData(event);
125+
getCurrentHub().getScope().setPropagationContext(propagationContext);
125126

126127
const traceLoadContext: TransactionContext = {
127128
op: 'function.sveltekit.server.load',

packages/sveltekit/src/server/utils.ts

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,5 @@
1-
import type { DynamicSamplingContext, StackFrame, TraceparentData } from '@sentry/types';
2-
import {
3-
baggageHeaderToDynamicSamplingContext,
4-
basename,
5-
escapeStringForRegex,
6-
extractTraceparentData,
7-
GLOBAL_OBJ,
8-
join,
9-
} from '@sentry/utils';
1+
import type { StackFrame } from '@sentry/types';
2+
import { basename, escapeStringForRegex, GLOBAL_OBJ, join, tracingContextFromHeaders } from '@sentry/utils';
103
import type { RequestEvent } from '@sveltejs/kit';
114

125
import { WRAPPED_MODULE_SUFFIX } from '../vite/autoInstrument';
@@ -15,17 +8,13 @@ import type { GlobalWithSentryValues } from '../vite/injectGlobalValues';
158
/**
169
* Takes a request event and extracts traceparent and DSC data
1710
* from the `sentry-trace` and `baggage` DSC headers.
11+
*
12+
* Sets propagation context as a side effect.
1813
*/
19-
export function getTracePropagationData(event: RequestEvent): {
20-
traceparentData?: TraceparentData;
21-
dynamicSamplingContext?: Partial<DynamicSamplingContext>;
22-
} {
23-
const sentryTraceHeader = event.request.headers.get('sentry-trace');
14+
export function getTracePropagationData(event: RequestEvent): ReturnType<typeof tracingContextFromHeaders> {
15+
const sentryTraceHeader = event.request.headers.get('sentry-trace') || '';
2416
const baggageHeader = event.request.headers.get('baggage');
25-
const traceparentData = sentryTraceHeader ? extractTraceparentData(sentryTraceHeader) : undefined;
26-
const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext(baggageHeader);
27-
28-
return { traceparentData, dynamicSamplingContext };
17+
return tracingContextFromHeaders(sentryTraceHeader, baggageHeader);
2918
}
3019

3120
/**

0 commit comments

Comments
 (0)