From b376fc3eb7d0cd6253573ae7be1d6e698269cab8 Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Mon, 6 Feb 2023 14:07:18 +0100 Subject: [PATCH 1/2] fix(node): Add lru cache to http integration span map --- packages/node/src/integrations/http.ts | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/packages/node/src/integrations/http.ts b/packages/node/src/integrations/http.ts index 867c6ad9df24..8436b8601f22 100644 --- a/packages/node/src/integrations/http.ts +++ b/packages/node/src/integrations/http.ts @@ -14,6 +14,7 @@ import type * as https from 'https'; import type { NodeClient } from '../client'; import type { RequestMethod, RequestMethodArgs } from './utils/http'; import { cleanSpanDescription, extractUrl, isSentryRequest, normalizeRequestArgs } from './utils/http'; +import { LRUMap } from 'lru_map'; const NODE_VERSION = parseSemver(process.versions.node); @@ -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 => { From 0809938d184477d36df9a4c68ce9c165482fc46d Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Mon, 6 Feb 2023 15:14:51 +0100 Subject: [PATCH 2/2] =?UTF-8?q?yarn=20fix=20=F0=9F=98=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/node/src/integrations/http.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/node/src/integrations/http.ts b/packages/node/src/integrations/http.ts index 8436b8601f22..d3d0711fb158 100644 --- a/packages/node/src/integrations/http.ts +++ b/packages/node/src/integrations/http.ts @@ -10,11 +10,11 @@ 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'; import { cleanSpanDescription, extractUrl, isSentryRequest, normalizeRequestArgs } from './utils/http'; -import { LRUMap } from 'lru_map'; const NODE_VERSION = parseSemver(process.versions.node);