diff --git a/packages/node/src/integrations/http.ts b/packages/node/src/integrations/http.ts index 867c6ad9df24..d3d0711fb158 100644 --- a/packages/node/src/integrations/http.ts +++ b/packages/node/src/integrations/http.ts @@ -10,6 +10,7 @@ import { } from '@sentry/utils'; import type * as http from 'http'; import type * as https from 'https'; +import { LRUMap } from 'lru_map'; import type { NodeClient } from '../client'; import type { RequestMethod, RequestMethodArgs } from './utils/http'; @@ -138,7 +139,7 @@ function _createWrappedRequestMethodFactory( tracingOptions: TracingOptions | undefined, ): WrappedRequestMethodFactory { // We're caching results so we don't have to recompute regexp every time we create a request. - const createSpanUrlMap: Record = {}; + const createSpanUrlMap = new LRUMap(100); const headersUrlMap: Record = {}; const shouldCreateSpan = (url: string): boolean => { @@ -146,13 +147,14 @@ function _createWrappedRequestMethodFactory( return true; } - if (createSpanUrlMap[url]) { - return createSpanUrlMap[url]; + const cachedDecision = createSpanUrlMap.get(url); + if (cachedDecision !== undefined) { + return cachedDecision; } - createSpanUrlMap[url] = tracingOptions.shouldCreateSpanForRequest(url); - - return createSpanUrlMap[url]; + const decision = tracingOptions.shouldCreateSpanForRequest(url); + createSpanUrlMap.set(url, decision); + return decision; }; const shouldAttachTraceData = (url: string): boolean => {