Skip to content

Commit cc14603

Browse files
committed
feat(replay): Move sample rate tags into replay_event
Similar to #6658 but waiting on getsentry/replay-backend#226
1 parent 9ed9c23 commit cc14603

File tree

5 files changed

+21
-28
lines changed

5 files changed

+21
-28
lines changed

packages/replay/src/util/sendReplayRequest.ts

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ export async function sendReplayRequest({
5252
replay_id: replayId,
5353
segment_id,
5454
replay_type: session.sampled,
55+
session_sample_rate: options.sessionSampleRate,
56+
error_sample_rate: options.errorSampleRate,
5557
};
5658

5759
const replayEvent = await prepareReplayEvent({ scope, client, replayId, event: baseEvent });
@@ -63,12 +65,6 @@ export async function sendReplayRequest({
6365
return;
6466
}
6567

66-
replayEvent.tags = {
67-
...replayEvent.tags,
68-
sessionSampleRate: options.sessionSampleRate,
69-
errorSampleRate: options.errorSampleRate,
70-
};
71-
7268
/*
7369
For reference, the fully built event looks something like this:
7470
{
@@ -86,6 +82,8 @@ export async function sendReplayRequest({
8682
"replay_id": "eventId",
8783
"segment_id": 3,
8884
"replay_type": "error",
85+
"session_sample_rate": 1,
86+
"error_sample_rate": 0,
8987
"platform": "javascript",
9088
"event_id": "eventId",
9189
"environment": "production",
@@ -98,10 +96,6 @@ export async function sendReplayRequest({
9896
"version": "7.25.0"
9997
},
10098
"sdkProcessingMetadata": {},
101-
"tags": {
102-
"sessionSampleRate": 1,
103-
"errorSampleRate": 0,
104-
}
10599
}
106100
*/
107101

packages/replay/test/integration/errorSampleRate.test.ts

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,8 @@ describe('Integration | errorSampleRate', () => {
6363
recordingPayloadHeader: { segment_id: 0 },
6464
replayEventPayload: expect.objectContaining({
6565
replay_type: 'error',
66-
tags: expect.objectContaining({
67-
errorSampleRate: 1,
68-
sessionSampleRate: 0,
69-
}),
66+
error_sample_rate: 1,
67+
session_sample_rate: 0,
7068
}),
7169
recordingData: JSON.stringify([
7270
{ data: { isCheckout: true }, timestamp: BASE_TIMESTAMP, type: 2 },
@@ -93,10 +91,8 @@ describe('Integration | errorSampleRate', () => {
9391
recordingPayloadHeader: { segment_id: 1 },
9492
replayEventPayload: expect.objectContaining({
9593
replay_type: 'error',
96-
tags: expect.objectContaining({
97-
errorSampleRate: 1,
98-
sessionSampleRate: 0,
99-
}),
94+
error_sample_rate: 1,
95+
session_sample_rate: 0,
10096
}),
10197
recordingData: JSON.stringify([{ data: { isCheckout: true }, timestamp: BASE_TIMESTAMP + 5020, type: 2 }]),
10298
});

packages/replay/test/integration/events.test.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -130,11 +130,9 @@ describe('Integration | events', () => {
130130
expect(replay).toHaveLastSentReplay({
131131
replayEventPayload: expect.objectContaining({
132132
replay_start_timestamp: (BASE_TIMESTAMP - 10000) / 1000,
133+
error_sample_rate: 0,
134+
session_sample_rate: 1,
133135
urls: ['http://localhost/'], // this doesn't truly test if we are capturing the right URL as we don't change URLs, but good enough
134-
tags: expect.objectContaining({
135-
errorSampleRate: 0,
136-
sessionSampleRate: 1,
137-
}),
138136
}),
139137
});
140138
});

packages/replay/test/unit/util/createReplayEnvelope.test.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,9 @@ describe('Unit | util | createReplayEnvelope', () => {
2424
version: '7.25.0',
2525
},
2626
replay_type: 'error',
27-
tags: {
28-
sessionSampleRate: 1,
29-
errorSampleRate: 0,
30-
},
27+
error_sample_rate: 0,
28+
session_sample_rate: 1,
29+
tags: {},
3130
};
3231

3332
const payloadWithSequence = 'payload';
@@ -56,13 +55,15 @@ describe('Unit | util | createReplayEnvelope', () => {
5655
{
5756
environment: 'production',
5857
error_ids: ['errorId'],
58+
error_sample_rate: 0,
5959
event_id: REPLAY_ID,
6060
platform: 'javascript',
6161
replay_id: REPLAY_ID,
6262
replay_type: 'error',
6363
sdk: { integrations: ['BrowserTracing', 'Replay'], name: 'sentry.javascript.unknown', version: '7.25.0' },
6464
segment_id: 3,
65-
tags: { errorSampleRate: 0, sessionSampleRate: 1 },
65+
session_sample_rate: 1,
66+
tags: {},
6667
timestamp: 1670837008.634,
6768
trace_ids: ['traceId'],
6869
type: 'replay_event',
@@ -90,13 +91,15 @@ describe('Unit | util | createReplayEnvelope', () => {
9091
{
9192
environment: 'production',
9293
error_ids: ['errorId'],
94+
error_sample_rate: 0,
9395
event_id: REPLAY_ID,
9496
platform: 'javascript',
9597
replay_id: REPLAY_ID,
9698
sdk: { integrations: ['BrowserTracing', 'Replay'], name: 'sentry.javascript.unknown', version: '7.25.0' },
9799
segment_id: 3,
98100
replay_type: 'error',
99-
tags: { errorSampleRate: 0, sessionSampleRate: 1 },
101+
session_sample_rate: 1,
102+
tags: {},
100103
timestamp: 1670837008.634,
101104
trace_ids: ['traceId'],
102105
type: 'replay_event',

packages/types/src/replay.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ export interface ReplayEvent extends Event {
1111
replay_id: string;
1212
segment_id: number;
1313
replay_type: ReplayRecordingMode;
14+
session_sample_rate: number;
15+
error_sample_rate: number;
1416
}
1517

1618
/**

0 commit comments

Comments
 (0)