Skip to content

Commit 8558275

Browse files
committed
fix(sveltekit): Check for active domains in sentryHandle
1 parent f033ede commit 8558275

File tree

1 file changed

+34
-26
lines changed

1 file changed

+34
-26
lines changed

packages/sveltekit/src/server/handle.ts

Lines changed: 34 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -64,32 +64,40 @@ export const transformPageChunk: NonNullable<ResolveOptions['transformPageChunk'
6464
* // export const handle = sequence(sentryHandle, yourCustomHandle);
6565
* ```
6666
*/
67-
export const sentryHandle: Handle = ({ event, resolve }) => {
67+
export const sentryHandle: Handle = input => {
68+
// @ts-ignore domain.active exists if there is an active domain, TS just doesn't know
69+
if (domain.active) {
70+
return handleInDomain(input);
71+
}
6872
return domain.create().bind(() => {
69-
const sentryTraceHeader = event.request.headers.get('sentry-trace');
70-
const baggageHeader = event.request.headers.get('baggage');
71-
const traceparentData = sentryTraceHeader ? extractTraceparentData(sentryTraceHeader) : undefined;
72-
const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext(baggageHeader);
73-
74-
return trace(
75-
{
76-
op: 'http.server',
77-
name: `${event.request.method} ${event.route.id}`,
78-
status: 'ok',
79-
...traceparentData,
80-
metadata: {
81-
source: 'route',
82-
dynamicSamplingContext: traceparentData && !dynamicSamplingContext ? {} : dynamicSamplingContext,
83-
},
84-
},
85-
async (span?: Span) => {
86-
const res = await resolve(event, { transformPageChunk });
87-
if (span) {
88-
span.setHttpStatus(res.status);
89-
}
90-
return res;
91-
},
92-
sendErrorToSentry,
93-
);
73+
return handleInDomain(input);
9474
})();
9575
};
76+
77+
function handleInDomain({ event, resolve }: Parameters<Handle>[0]): ReturnType<Handle> {
78+
const sentryTraceHeader = event.request.headers.get('sentry-trace');
79+
const baggageHeader = event.request.headers.get('baggage');
80+
const traceparentData = sentryTraceHeader ? extractTraceparentData(sentryTraceHeader) : undefined;
81+
const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext(baggageHeader);
82+
83+
return trace(
84+
{
85+
op: 'http.server',
86+
name: `${event.request.method} ${event.route.id}`,
87+
status: 'ok',
88+
...traceparentData,
89+
metadata: {
90+
source: 'route',
91+
dynamicSamplingContext: traceparentData && !dynamicSamplingContext ? {} : dynamicSamplingContext,
92+
},
93+
},
94+
async (span?: Span) => {
95+
const res = await resolve(event, { transformPageChunk });
96+
if (span) {
97+
span.setHttpStatus(res.status);
98+
}
99+
return res;
100+
},
101+
sendErrorToSentry,
102+
);
103+
}

0 commit comments

Comments
 (0)