Skip to content

Commit e2a5d1c

Browse files
authored
fix(v9/core): Ensure logs past MAX_LOG_BUFFER_SIZE are not swallowed (#18213)
Looks like we swallowed the log that triggers a flush when `MAX_LOG_BUFFER_SIZE` is surpassed. Test demonstrating issue: [e3a8e2f](e3a8e2f) Fix: [ba24997](ba24997) v10 equivalent: #18207
1 parent cb57c5b commit e2a5d1c

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

packages/core/src/logs/exports.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,14 +90,16 @@ function setLogAttribute(
9090
*/
9191
export function _INTERNAL_captureSerializedLog(client: Client, serializedLog: SerializedLog): void {
9292
const bufferMap = _getBufferMap();
93-
9493
const logBuffer = _INTERNAL_getLogBuffer(client);
94+
9595
if (logBuffer === undefined) {
9696
bufferMap.set(client, [serializedLog]);
9797
} else {
98-
bufferMap.set(client, [...logBuffer, serializedLog]);
9998
if (logBuffer.length >= MAX_LOG_BUFFER_SIZE) {
10099
_INTERNAL_flushLogsBuffer(client, logBuffer);
100+
bufferMap.set(client, [serializedLog]);
101+
} else {
102+
bufferMap.set(client, [...logBuffer, serializedLog]);
101103
}
102104
}
103105
}

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,10 @@ describe('_INTERNAL_captureLog', () => {
245245
// Add one more to trigger flush
246246
_INTERNAL_captureLog({ level: 'info', message: 'trigger flush' }, client, undefined);
247247

248-
expect(_INTERNAL_getLogBuffer(client)).toEqual([]);
248+
// After flushing the 100 logs, the new log starts a fresh buffer with 1 item
249+
const buffer = _INTERNAL_getLogBuffer(client);
250+
expect(buffer).toHaveLength(1);
251+
expect(buffer?.[0]?.body).toBe('trigger flush');
249252
});
250253

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

0 commit comments

Comments
 (0)