From 051356e212bb1f0b00d5b336d47c9c8dc74c3009 Mon Sep 17 00:00:00 2001 From: Andrei Borza Date: Fri, 14 Nov 2025 14:15:22 +0100 Subject: [PATCH 1/3] fix(core): Ensure logs past are not swallowed From 5697b7dd18110559c20eec9bbf6241c38ccc2ca0 Mon Sep 17 00:00:00 2001 From: Andrei Borza Date: Fri, 14 Nov 2025 14:15:29 +0100 Subject: [PATCH 2/3] Add test --- packages/core/test/lib/logs/internal.test.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/core/test/lib/logs/internal.test.ts b/packages/core/test/lib/logs/internal.test.ts index dbb2966dc076..563139aba36d 100644 --- a/packages/core/test/lib/logs/internal.test.ts +++ b/packages/core/test/lib/logs/internal.test.ts @@ -259,7 +259,10 @@ describe('_INTERNAL_captureLog', () => { // Add one more to trigger flush _INTERNAL_captureLog({ level: 'info', message: 'trigger flush' }, scope); - expect(_INTERNAL_getLogBuffer(client)).toEqual([]); + // After flushing the 100 logs, the new log starts a fresh buffer with 1 item + const buffer = _INTERNAL_getLogBuffer(client); + expect(buffer).toHaveLength(1); + expect(buffer?.[0]?.body).toBe('trigger flush'); }); it('does not flush logs buffer when it is empty', () => { From f7a4d8bf41f7116bd9ab8cf7edfd87b35345456a Mon Sep 17 00:00:00 2001 From: Andrei Borza Date: Fri, 14 Nov 2025 14:56:29 +0100 Subject: [PATCH 3/3] Ensure log that triggers flush on MAX_LOG_BUFFER_SIZE is not swallowed --- packages/core/src/logs/internal.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/core/src/logs/internal.ts b/packages/core/src/logs/internal.ts index 601d9be29cb6..819c51c7e3f1 100644 --- a/packages/core/src/logs/internal.ts +++ b/packages/core/src/logs/internal.ts @@ -91,14 +91,16 @@ function setLogAttribute( */ export function _INTERNAL_captureSerializedLog(client: Client, serializedLog: SerializedLog): void { const bufferMap = _getBufferMap(); - const logBuffer = _INTERNAL_getLogBuffer(client); + if (logBuffer === undefined) { bufferMap.set(client, [serializedLog]); } else { - bufferMap.set(client, [...logBuffer, serializedLog]); if (logBuffer.length >= MAX_LOG_BUFFER_SIZE) { _INTERNAL_flushLogsBuffer(client, logBuffer); + bufferMap.set(client, [serializedLog]); + } else { + bufferMap.set(client, [...logBuffer, serializedLog]); } } }