From b3fcf837ef274006c0db732bfa8a485fb24df32a Mon Sep 17 00:00:00 2001 From: Andrei Borza Date: Fri, 14 Nov 2025 14:15:22 +0100 Subject: [PATCH 1/3] fix(v9/core): Ensure logs past MAX_LOG_BUFFER_SIZE are not swallowed From cfac0afb8ba5dc29cbc0f443dee3969eeeab4bf8 Mon Sep 17 00:00:00 2001 From: Andrei Borza Date: Fri, 14 Nov 2025 19:30:54 +0100 Subject: [PATCH 2/3] Add test --- packages/core/test/lib/logs/exports.test.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/core/test/lib/logs/exports.test.ts b/packages/core/test/lib/logs/exports.test.ts index 4fd01a16a304..cc99b801769c 100644 --- a/packages/core/test/lib/logs/exports.test.ts +++ b/packages/core/test/lib/logs/exports.test.ts @@ -245,7 +245,10 @@ describe('_INTERNAL_captureLog', () => { // Add one more to trigger flush _INTERNAL_captureLog({ level: 'info', message: 'trigger flush' }, client, undefined); - 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 45d7680e371786c0505571cbbf6944014f5dc067 Mon Sep 17 00:00:00 2001 From: Andrei Borza Date: Fri, 14 Nov 2025 19:31:39 +0100 Subject: [PATCH 3/3] Ensure log that triggers flush on MAX_LOG_BUFFER_SIZE is not swallowed --- packages/core/src/logs/exports.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/core/src/logs/exports.ts b/packages/core/src/logs/exports.ts index 6a921d6f6053..9212050726dc 100644 --- a/packages/core/src/logs/exports.ts +++ b/packages/core/src/logs/exports.ts @@ -90,14 +90,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]); } } }