From 5fe94112bc17d6fa4375e08a3371f92293df2e9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20Og=C3=B3rek?= Date: Mon, 29 Mar 2021 21:57:02 +0200 Subject: [PATCH] fix: Mark span as failed when fetch API call fails --- packages/tracing/src/browser/request.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/tracing/src/browser/request.ts b/packages/tracing/src/browser/request.ts index 4f430e69d713..85e6a6fee46f 100644 --- a/packages/tracing/src/browser/request.ts +++ b/packages/tracing/src/browser/request.ts @@ -2,6 +2,7 @@ import { getCurrentHub } from '@sentry/hub'; import { addInstrumentationHandler, isInstanceOf, isMatchingPattern } from '@sentry/utils'; import { Span } from '../span'; +import { SpanStatus } from '../spanstatus'; import { getActiveTransaction, hasTracingEnabled } from '../utils'; export const DEFAULT_TRACING_ORIGINS = ['localhost', /^\//]; @@ -53,6 +54,7 @@ export interface FetchData { // TODO Should this be unknown instead? If we vendor types, make it a Response // eslint-disable-next-line @typescript-eslint/no-explicit-any response?: any; + error?: unknown; startTimestamp: number; endTimestamp?: number; @@ -156,11 +158,12 @@ export function fetchCallback( if (handlerData.endTimestamp && handlerData.fetchData.__span) { const span = spans[handlerData.fetchData.__span]; if (span) { - const response = handlerData.response; - if (response) { + if (handlerData.response) { // TODO (kmclb) remove this once types PR goes through // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access - span.setHttpStatus(response.status); + span.setHttpStatus(handlerData.response.status); + } else if (handlerData.error) { + span.setStatus(SpanStatus.InternalError); } span.finish();