From 1aa2bc42beba3d27e74a3df3ff17939213f6f0d8 Mon Sep 17 00:00:00 2001 From: Onur Temizkan Date: Wed, 23 Nov 2022 15:48:21 +0000 Subject: [PATCH] fix(remix): Pass parameterized route to `RequestData`. --- packages/remix/src/utils/instrumentServer.ts | 28 ++++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/packages/remix/src/utils/instrumentServer.ts b/packages/remix/src/utils/instrumentServer.ts index 4a4ef9ac5fc9..0b4e682e31df 100644 --- a/packages/remix/src/utils/instrumentServer.ts +++ b/packages/remix/src/utils/instrumentServer.ts @@ -96,7 +96,20 @@ async function captureRemixServerException(err: Error, name: string, request: Re const normalizedRequest = normalizeRemixRequest(request as unknown as any); captureException(isResponse(err) ? await extractResponseError(err) : err, scope => { - scope.setSDKProcessingMetadata({ request: normalizedRequest }); + const activeTransactionName = getActiveTransaction()?.name; + + scope.setSDKProcessingMetadata({ + request: { + ...normalizedRequest, + // When `route` is not defined, `RequestData` integration uses the full URL + route: activeTransactionName + ? { + path: activeTransactionName, + } + : undefined, + }, + }); + scope.addEventProcessor(event => { addExceptionMechanism(event, { type: 'instrument', @@ -378,9 +391,17 @@ function wrapRequestHandler(origRequestHandler: RequestHandler, build: ServerBui const normalizedRequest = normalizeRemixRequest(request); + const url = new URL(request.url); + const [name, source] = getTransactionName(routes, url, pkg); + if (scope) { scope.setSDKProcessingMetadata({ - request: normalizedRequest, + request: { + ...normalizedRequest, + route: { + path: name, + }, + }, }); } @@ -388,9 +409,6 @@ function wrapRequestHandler(origRequestHandler: RequestHandler, build: ServerBui return origRequestHandler.call(this, request, loadContext); } - const url = new URL(request.url); - const [name, source] = getTransactionName(routes, url, pkg); - const transaction = startRequestHandlerTransaction(hub, name, source, { headers: { 'sentry-trace': request.headers.get('sentry-trace') || '',