From e7fc5b21916a57e128a9fa55a0e9bf77372d8540 Mon Sep 17 00:00:00 2001 From: Abhijeet Prasad Date: Wed, 7 May 2025 12:06:56 -0400 Subject: [PATCH] fix(core): Make sure logs get flushed in server-runtime-client --- packages/core/src/server-runtime-client.ts | 5 +++++ .../test/lib/server-runtime-client.test.ts | 20 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/packages/core/src/server-runtime-client.ts b/packages/core/src/server-runtime-client.ts index aa5228d53a14..261c5b582c23 100644 --- a/packages/core/src/server-runtime-client.ts +++ b/packages/core/src/server-runtime-client.ts @@ -52,6 +52,7 @@ export class ServerRuntimeClient< if (this._options._experiments?.enableLogs) { // eslint-disable-next-line @typescript-eslint/no-this-alias const client = this; + client.on('flushLogs', () => { client._logWeight = 0; clearTimeout(client._logFlushIdleTimeout); @@ -72,6 +73,10 @@ export class ServerRuntimeClient< }, DEFAULT_LOG_FLUSH_INTERVAL); } }); + + client.on('flush', () => { + _INTERNAL_flushLogsBuffer(client); + }); } } diff --git a/packages/core/test/lib/server-runtime-client.test.ts b/packages/core/test/lib/server-runtime-client.test.ts index 823757004814..d5b9dc33681d 100644 --- a/packages/core/test/lib/server-runtime-client.test.ts +++ b/packages/core/test/lib/server-runtime-client.test.ts @@ -278,5 +278,25 @@ describe('ServerRuntimeClient', () => { expect(sendEnvelopeSpy).not.toHaveBeenCalled(); expect(client['_logWeight']).toBe(0); }); + + it('flushes logs when flush event is triggered', () => { + const options = getDefaultClientOptions({ + dsn: PUBLIC_DSN, + _experiments: { enableLogs: true }, + }); + client = new ServerRuntimeClient(options); + + const sendEnvelopeSpy = vi.spyOn(client, 'sendEnvelope'); + + // Add some logs + _INTERNAL_captureLog({ message: 'test1', level: 'info' }, client); + _INTERNAL_captureLog({ message: 'test2', level: 'info' }, client); + + // Trigger flush event + client.emit('flush'); + + expect(sendEnvelopeSpy).toHaveBeenCalledTimes(1); + expect(client['_logWeight']).toBe(0); // Weight should be reset after flush + }); }); });