Skip to content

Commit 4b19b05

Browse files
authored
Replay cater for event processor returning null (#6576)
Fix an issue in replay's event creation function where an error is thrown if an event processor (called via `client._prepareEvent`) returns null.
1 parent 2794b68 commit 4b19b05

File tree

2 files changed

+18
-10
lines changed

2 files changed

+18
-10
lines changed

packages/replay/src/replay.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -940,6 +940,12 @@ export class ReplayContainer implements ReplayContainerInterface {
940940
};
941941

942942
const replayEvent = await getReplayEvent({ scope, client, replayId, event: baseEvent });
943+
944+
if (!replayEvent) {
945+
__DEBUG_BUILD__ && logger.error('[Replay] An event processor returned null, will not send replay.');
946+
return;
947+
}
948+
943949
replayEvent.tags = {
944950
...replayEvent.tags,
945951
sessionSampleRate: this._options.sessionSampleRate,

packages/replay/src/util/getReplayEvent.ts

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,22 @@ export async function getReplayEvent({
1111
scope: Scope;
1212
replayId: string;
1313
event: Event;
14-
}): Promise<Event> {
14+
}): Promise<Event | null> {
1515
// XXX: This event does not trigger `beforeSend` in SDK
1616
// @ts-ignore private api
17-
const preparedEvent: Event = await client._prepareEvent(event, { event_id }, scope);
17+
const preparedEvent: Event | null = await client._prepareEvent(event, { event_id }, scope);
1818

19-
// extract the SDK name because `client._prepareEvent` doesn't add it to the event
20-
const metadata = client.getOptions() && client.getOptions()._metadata;
21-
const { name } = (metadata && metadata.sdk) || {};
19+
if (preparedEvent) {
20+
// extract the SDK name because `client._prepareEvent` doesn't add it to the event
21+
const metadata = client.getOptions() && client.getOptions()._metadata;
22+
const { name } = (metadata && metadata.sdk) || {};
2223

23-
preparedEvent.sdk = {
24-
...preparedEvent.sdk,
25-
version: __SENTRY_REPLAY_VERSION__,
26-
name,
27-
};
24+
preparedEvent.sdk = {
25+
...preparedEvent.sdk,
26+
version: __SENTRY_REPLAY_VERSION__,
27+
name,
28+
};
29+
}
2830

2931
return preparedEvent;
3032
}

0 commit comments

Comments
 (0)