Skip to content

Commit 801e51e

Browse files
committed
use trace function
1 parent 680d1d0 commit 801e51e

File tree

1 file changed

+12
-62
lines changed
  • packages/sveltekit/src/server

1 file changed

+12
-62
lines changed

packages/sveltekit/src/server/load.ts

Lines changed: 12 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
/* eslint-disable @sentry-internal/sdk/no-optional-chaining */
2-
import type { Span } from '@sentry/core';
3-
import { captureException, getCurrentHub } from '@sentry/node';
2+
import { trace } from '@sentry/core';
3+
import { captureException } from '@sentry/node';
44
import {
55
addExceptionMechanism,
66
baggageHeaderToDynamicSamplingContext,
77
extractTraceparentData,
8-
isThenable,
98
objectify,
109
} from '@sentry/utils';
1110
import type { HttpError, ServerLoad } from '@sveltejs/kit';
@@ -45,10 +44,6 @@ function sendErrorToSentry(e: unknown): unknown {
4544
return objectifiedErr;
4645
}
4746

48-
function setSpan(span: Span | undefined): void {
49-
getCurrentHub().getScope()?.setSpan(span);
50-
}
51-
5247
/**
5348
* Wrap load function with Sentry
5449
*
@@ -58,34 +53,15 @@ export function wrapLoadWithSentry(origLoad: ServerLoad): ServerLoad {
5853
return new Proxy(origLoad, {
5954
apply: (wrappingTarget, thisArg, args: Parameters<ServerLoad>) => {
6055
return domain.create().bind(() => {
61-
let maybePromiseResult;
62-
6356
const [event] = args;
64-
const hub = getCurrentHub();
65-
const scope = hub.getScope();
66-
67-
const parentSpan = scope?.getSpan();
6857

69-
let activeSpan: Span | undefined = undefined;
70-
71-
function finishActiveSpan(): void {
72-
activeSpan?.finish();
73-
setSpan(parentSpan);
74-
}
75-
76-
if (parentSpan) {
77-
activeSpan = parentSpan.startChild({
78-
op: 'function.sveltekit.load',
79-
description: event.route.id || 'load',
80-
status: 'ok',
81-
});
82-
} else {
83-
const sentryTraceHeader = event.request.headers.get('sentry-trace');
84-
const baggageHeader = event.request.headers.get('baggage');
85-
const traceparentData = sentryTraceHeader ? extractTraceparentData(sentryTraceHeader) : undefined;
86-
const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext(baggageHeader);
58+
const sentryTraceHeader = event.request.headers.get('sentry-trace');
59+
const baggageHeader = event.request.headers.get('baggage');
60+
const traceparentData = sentryTraceHeader ? extractTraceparentData(sentryTraceHeader) : undefined;
61+
const dynamicSamplingContext = baggageHeaderToDynamicSamplingContext(baggageHeader);
8762

88-
activeSpan = hub.startTransaction({
63+
return trace(
64+
{
8965
op: 'function.sveltekit.load',
9066
name: event.route.id || 'load',
9167
status: 'ok',
@@ -94,36 +70,10 @@ export function wrapLoadWithSentry(origLoad: ServerLoad): ServerLoad {
9470
source: 'route',
9571
dynamicSamplingContext: traceparentData && !dynamicSamplingContext ? {} : dynamicSamplingContext,
9672
},
97-
});
98-
}
99-
100-
setSpan(activeSpan);
101-
102-
try {
103-
maybePromiseResult = wrappingTarget.apply(thisArg, args);
104-
} catch (e) {
105-
activeSpan?.setStatus('internal_error');
106-
const sentryError = sendErrorToSentry(e);
107-
finishActiveSpan();
108-
throw sentryError;
109-
}
110-
111-
if (isThenable(maybePromiseResult)) {
112-
Promise.resolve(maybePromiseResult).then(
113-
() => {
114-
finishActiveSpan();
115-
},
116-
e => {
117-
activeSpan?.setStatus('internal_error');
118-
sendErrorToSentry(e);
119-
finishActiveSpan();
120-
},
121-
);
122-
} else {
123-
finishActiveSpan();
124-
}
125-
126-
return maybePromiseResult;
73+
},
74+
() => wrappingTarget.apply(thisArg, args),
75+
sendErrorToSentry,
76+
);
12777
})();
12878
},
12979
});

0 commit comments

Comments
 (0)