Skip to content

Commit 22a0e35

Browse files
authored
fix(core): Make sure logs get flushed in server-runtime-client (#16222)
Actually fixes #16110
1 parent edabe21 commit 22a0e35

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

packages/core/src/server-runtime-client.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ export class ServerRuntimeClient<
5252
if (this._options._experiments?.enableLogs) {
5353
// eslint-disable-next-line @typescript-eslint/no-this-alias
5454
const client = this;
55+
5556
client.on('flushLogs', () => {
5657
client._logWeight = 0;
5758
clearTimeout(client._logFlushIdleTimeout);
@@ -72,6 +73,10 @@ export class ServerRuntimeClient<
7273
}, DEFAULT_LOG_FLUSH_INTERVAL);
7374
}
7475
});
76+
77+
client.on('flush', () => {
78+
_INTERNAL_flushLogsBuffer(client);
79+
});
7580
}
7681
}
7782

packages/core/test/lib/server-runtime-client.test.ts

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,5 +278,25 @@ describe('ServerRuntimeClient', () => {
278278
expect(sendEnvelopeSpy).not.toHaveBeenCalled();
279279
expect(client['_logWeight']).toBe(0);
280280
});
281+
282+
it('flushes logs when flush event is triggered', () => {
283+
const options = getDefaultClientOptions({
284+
dsn: PUBLIC_DSN,
285+
_experiments: { enableLogs: true },
286+
});
287+
client = new ServerRuntimeClient(options);
288+
289+
const sendEnvelopeSpy = vi.spyOn(client, 'sendEnvelope');
290+
291+
// Add some logs
292+
_INTERNAL_captureLog({ message: 'test1', level: 'info' }, client);
293+
_INTERNAL_captureLog({ message: 'test2', level: 'info' }, client);
294+
295+
// Trigger flush event
296+
client.emit('flush');
297+
298+
expect(sendEnvelopeSpy).toHaveBeenCalledTimes(1);
299+
expect(client['_logWeight']).toBe(0); // Weight should be reset after flush
300+
});
281301
});
282302
});

0 commit comments

Comments
 (0)