From bea10d529e7257ceb3ff5cabf205e385e0732a9e Mon Sep 17 00:00:00 2001 From: JonasBa Date: Tue, 8 Nov 2022 13:25:05 -0500 Subject: [PATCH 1/4] feat(node): allow keepAlive override --- packages/node/src/transports/http.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/node/src/transports/http.ts b/packages/node/src/transports/http.ts index 52df8244461e..4e67ec4fe4ad 100644 --- a/packages/node/src/transports/http.ts +++ b/packages/node/src/transports/http.ts @@ -23,6 +23,8 @@ export interface NodeTransportOptions extends BaseTransportOptions { caCerts?: string | Buffer | Array; /** Custom HTTP module. Defaults to the native 'http' and 'https' modules. */ httpModule?: HTTPModule; + /** Allow overriding connection keepAlive, defaults to false*/ + keepAlive?: boolean; } // Estimated maximum size for reasonable standalone event @@ -56,12 +58,13 @@ export function makeNodeTransport(options: NodeTransportOptions): Transport { ); const nativeHttpModule = isHttps ? https : http; + const keepAlive = options.keepAlive === undefined ? false : options.keepAlive; // TODO(v7): Evaluate if we can set keepAlive to true. This would involve testing for memory leaks in older node // versions(>= 8) as they had memory leaks when using it: #2555 const agent = proxy ? (new (require('https-proxy-agent'))(proxy) as http.Agent) - : new nativeHttpModule.Agent({ keepAlive: false, maxSockets: 30, timeout: 2000 }); + : new nativeHttpModule.Agent({ keepAlive, maxSockets: 30, timeout: 2000 }); const requestExecutor = createRequestExecutor(options, options.httpModule ?? nativeHttpModule, agent); return createTransport(options, requestExecutor); From 0eed0bb53c2219e2076540d92377b0818f840c4f Mon Sep 17 00:00:00 2001 From: JonasBa Date: Tue, 8 Nov 2022 15:00:24 -0500 Subject: [PATCH 2/4] test(node): expect header --- packages/node/test/transports/http.test.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/node/test/transports/http.test.ts b/packages/node/test/transports/http.test.ts index e2e4af2352b9..8ce6edef2b6e 100644 --- a/packages/node/test/transports/http.test.ts +++ b/packages/node/test/transports/http.test.ts @@ -108,6 +108,20 @@ describe('makeNewHttpTransport()', () => { await transport.send(EVENT_ENVELOPE); }); + it('allows overriding keepAlive', async () => { + await setupTestServer({ statusCode: SUCCESS }, req => { + expect(req.headers).toEqual( + expect.objectContaining({ + // node http module lower-cases incoming headers + Connection: 'keep-alive', + }), + ); + }); + + const transport = makeNodeTransport({ keepAlive: true }); + await transport.send(EVENT_ENVELOPE); + }); + it('should correctly send user-provided headers to server', async () => { await setupTestServer({ statusCode: SUCCESS }, req => { expect(req.headers).toEqual( From f85dbdcc095d4f00af59905fe335c3a519ece5fb Mon Sep 17 00:00:00 2001 From: JonasBa Date: Wed, 9 Nov 2022 07:52:25 -0500 Subject: [PATCH 3/4] test(node): fix type and lint --- packages/node/src/transports/http.ts | 2 +- packages/node/test/transports/http.test.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/node/src/transports/http.ts b/packages/node/src/transports/http.ts index 4e67ec4fe4ad..687325b776f4 100644 --- a/packages/node/src/transports/http.ts +++ b/packages/node/src/transports/http.ts @@ -23,7 +23,7 @@ export interface NodeTransportOptions extends BaseTransportOptions { caCerts?: string | Buffer | Array; /** Custom HTTP module. Defaults to the native 'http' and 'https' modules. */ httpModule?: HTTPModule; - /** Allow overriding connection keepAlive, defaults to false*/ + /** Allow overriding connection keepAlive, defaults to false */ keepAlive?: boolean; } diff --git a/packages/node/test/transports/http.test.ts b/packages/node/test/transports/http.test.ts index 8ce6edef2b6e..6b422fb2a151 100644 --- a/packages/node/test/transports/http.test.ts +++ b/packages/node/test/transports/http.test.ts @@ -118,7 +118,7 @@ describe('makeNewHttpTransport()', () => { ); }); - const transport = makeNodeTransport({ keepAlive: true }); + const transport = makeNodeTransport({ keepAlive: true, ...defaultOptions }); await transport.send(EVENT_ENVELOPE); }); From e30d42ce496a9a41b8675ed5c51620665a0af776 Mon Sep 17 00:00:00 2001 From: JonasBa Date: Wed, 9 Nov 2022 08:02:41 -0500 Subject: [PATCH 4/4] test(node): fix header casing --- packages/node/test/transports/http.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/node/test/transports/http.test.ts b/packages/node/test/transports/http.test.ts index 6b422fb2a151..9594940c2014 100644 --- a/packages/node/test/transports/http.test.ts +++ b/packages/node/test/transports/http.test.ts @@ -113,7 +113,7 @@ describe('makeNewHttpTransport()', () => { expect(req.headers).toEqual( expect.objectContaining({ // node http module lower-cases incoming headers - Connection: 'keep-alive', + connection: 'keep-alive', }), ); });