From d1dde7ef9160f1d61668e0f96b97215f9de96d7f Mon Sep 17 00:00:00 2001 From: Tim Fish Date: Sun, 18 Dec 2022 23:24:19 +0000 Subject: [PATCH] Replay cater for event processor returning null --- packages/replay/src/replay.ts | 6 ++++++ packages/replay/src/util/getReplayEvent.ts | 22 ++++++++++++---------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/packages/replay/src/replay.ts b/packages/replay/src/replay.ts index f83ed70b109b..9c974f710f84 100644 --- a/packages/replay/src/replay.ts +++ b/packages/replay/src/replay.ts @@ -940,6 +940,12 @@ export class ReplayContainer implements ReplayContainerInterface { }; const replayEvent = await getReplayEvent({ scope, client, replayId, event: baseEvent }); + + if (!replayEvent) { + __DEBUG_BUILD__ && logger.error('[Replay] An event processor returned null, will not send replay.'); + return; + } + replayEvent.tags = { ...replayEvent.tags, sessionSampleRate: this._options.sessionSampleRate, diff --git a/packages/replay/src/util/getReplayEvent.ts b/packages/replay/src/util/getReplayEvent.ts index 73d5e350d6d6..b6e839517441 100644 --- a/packages/replay/src/util/getReplayEvent.ts +++ b/packages/replay/src/util/getReplayEvent.ts @@ -11,20 +11,22 @@ export async function getReplayEvent({ scope: Scope; replayId: string; event: Event; -}): Promise { +}): Promise { // XXX: This event does not trigger `beforeSend` in SDK // @ts-ignore private api - const preparedEvent: Event = await client._prepareEvent(event, { event_id }, scope); + const preparedEvent: Event | null = await client._prepareEvent(event, { event_id }, scope); - // extract the SDK name because `client._prepareEvent` doesn't add it to the event - const metadata = client.getOptions() && client.getOptions()._metadata; - const { name } = (metadata && metadata.sdk) || {}; + if (preparedEvent) { + // extract the SDK name because `client._prepareEvent` doesn't add it to the event + const metadata = client.getOptions() && client.getOptions()._metadata; + const { name } = (metadata && metadata.sdk) || {}; - preparedEvent.sdk = { - ...preparedEvent.sdk, - version: __SENTRY_REPLAY_VERSION__, - name, - }; + preparedEvent.sdk = { + ...preparedEvent.sdk, + version: __SENTRY_REPLAY_VERSION__, + name, + }; + } return preparedEvent; }