Skip to content

Commit e403d89

Browse files
authored
fix(core): Ensure logs past MAX_LOG_BUFFER_SIZE are not swallowed (#18207)
Looks like we swallowed the log that triggers a flush when `MAX_LOG_BUFFER_SIZE` is surpassed. Test demonstrating issue: [5697b7d](5697b7d) Fix: [f7a4d8b](f7a4d8b) Related metrics pr: #18212 v9 backport: #18213
1 parent 74822de commit e403d89

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

packages/core/src/logs/internal.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,14 +91,16 @@ function setLogAttribute(
9191
*/
9292
export function _INTERNAL_captureSerializedLog(client: Client, serializedLog: SerializedLog): void {
9393
const bufferMap = _getBufferMap();
94-
9594
const logBuffer = _INTERNAL_getLogBuffer(client);
95+
9696
if (logBuffer === undefined) {
9797
bufferMap.set(client, [serializedLog]);
9898
} else {
99-
bufferMap.set(client, [...logBuffer, serializedLog]);
10099
if (logBuffer.length >= MAX_LOG_BUFFER_SIZE) {
101100
_INTERNAL_flushLogsBuffer(client, logBuffer);
101+
bufferMap.set(client, [serializedLog]);
102+
} else {
103+
bufferMap.set(client, [...logBuffer, serializedLog]);
102104
}
103105
}
104106
}

packages/core/test/lib/logs/internal.test.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,10 @@ describe('_INTERNAL_captureLog', () => {
259259
// Add one more to trigger flush
260260
_INTERNAL_captureLog({ level: 'info', message: 'trigger flush' }, scope);
261261

262-
expect(_INTERNAL_getLogBuffer(client)).toEqual([]);
262+
// After flushing the 100 logs, the new log starts a fresh buffer with 1 item
263+
const buffer = _INTERNAL_getLogBuffer(client);
264+
expect(buffer).toHaveLength(1);
265+
expect(buffer?.[0]?.body).toBe('trigger flush');
263266
});
264267

265268
it('does not flush logs buffer when it is empty', () => {

0 commit comments

Comments
 (0)