Skip to content

Commit a6f8dc2

Browse files
authored
fix: Add SentryRequestType to RateLimitingCategory mapping (#3328)
* fix: Add SentryRequestType to RateLimitingCategory mapping * Update remaining tests
1 parent 3eb9e05 commit a6f8dc2

File tree

3 files changed

+19
-10
lines changed

3 files changed

+19
-10
lines changed

packages/browser/src/transports/base.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,14 @@ import {
99
} from '@sentry/types';
1010
import { logger, parseRetryAfterHeader, PromiseBuffer, SentryError } from '@sentry/utils';
1111

12+
const CATEGORY_MAPPING: {
13+
[key in SentryRequestType]: string;
14+
} = {
15+
event: 'error',
16+
transaction: 'transaction',
17+
session: 'session',
18+
};
19+
1220
/** Base Transport class implementation */
1321
export abstract class BaseTransport implements Transport {
1422
/**
@@ -80,15 +88,16 @@ export abstract class BaseTransport implements Transport {
8088
/**
8189
* Gets the time that given category is disabled until for rate limiting
8290
*/
83-
protected _disabledUntil(category: string): Date {
91+
protected _disabledUntil(requestType: SentryRequestType): Date {
92+
const category = CATEGORY_MAPPING[requestType];
8493
return this._rateLimits[category] || this._rateLimits.all;
8594
}
8695

8796
/**
8897
* Checks if a category is rate limited
8998
*/
90-
protected _isRateLimited(category: string): boolean {
91-
return this._disabledUntil(category) > new Date(Date.now());
99+
protected _isRateLimited(requestType: SentryRequestType): boolean {
100+
return this._disabledUntil(requestType) > new Date(Date.now());
92101
}
93102

94103
/**

packages/browser/test/unit/transports/fetch.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ describe('FetchTransport', () => {
223223
.returns(afterLimit);
224224

225225
const headers = new Headers();
226-
headers.set('X-Sentry-Rate-Limits', `${retryAfterSeconds}:event:scope`);
226+
headers.set('X-Sentry-Rate-Limits', `${retryAfterSeconds}:error:scope`);
227227
fetch.returns(Promise.resolve({ status: 429, headers }));
228228

229229
try {
@@ -290,7 +290,7 @@ describe('FetchTransport', () => {
290290
.returns(afterLimit);
291291

292292
const headers = new Headers();
293-
headers.set('X-Sentry-Rate-Limits', `${retryAfterSeconds}:event;transaction:scope`);
293+
headers.set('X-Sentry-Rate-Limits', `${retryAfterSeconds}:error;transaction:scope`);
294294
fetch.returns(Promise.resolve({ status: 429, headers }));
295295

296296
try {
@@ -366,7 +366,7 @@ describe('FetchTransport', () => {
366366
.returns(afterLimit);
367367

368368
const headers = new Headers();
369-
headers.set('X-Sentry-Rate-Limits', `${retryAfterSeconds}:event;transaction:scope`);
369+
headers.set('X-Sentry-Rate-Limits', `${retryAfterSeconds}:error;transaction:scope`);
370370
fetch.returns(Promise.resolve({ status: 429, headers }));
371371

372372
try {
@@ -433,7 +433,7 @@ describe('FetchTransport', () => {
433433
.returns(afterLimit);
434434

435435
const headers = new Headers();
436-
headers.set('X-Sentry-Rate-Limits', `${retryAfterSeconds}:event;transaction:scope`);
436+
headers.set('X-Sentry-Rate-Limits', `${retryAfterSeconds}:error;transaction:scope`);
437437
fetch.returns(Promise.resolve({ status: 200, headers }));
438438

439439
let eventRes = await transport.sendEvent(eventPayload);

packages/browser/test/unit/transports/xhr.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ describe('XHRTransport', () => {
137137
const withinLimit = beforeLimit + (retryAfterSeconds / 2) * 1000;
138138
const afterLimit = beforeLimit + retryAfterSeconds * 1000;
139139

140-
server.respondWith('POST', storeUrl, [429, { 'X-Sentry-Rate-Limits': `${retryAfterSeconds}:event:scope` }, '']);
140+
server.respondWith('POST', storeUrl, [429, { 'X-Sentry-Rate-Limits': `${retryAfterSeconds}:error:scope` }, '']);
141141
server.respondWith('POST', envelopeUrl, [200, {}, '']);
142142

143143
const dateStub = stub(Date, 'now')
@@ -202,7 +202,7 @@ describe('XHRTransport', () => {
202202

203203
server.respondWith('POST', storeUrl, [
204204
429,
205-
{ 'X-Sentry-Rate-Limits': `${retryAfterSeconds}:event;transaction:scope` },
205+
{ 'X-Sentry-Rate-Limits': `${retryAfterSeconds}:error;transaction:scope` },
206206
'',
207207
]);
208208
server.respondWith('POST', envelopeUrl, [200, {}, '']);
@@ -356,7 +356,7 @@ describe('XHRTransport', () => {
356356
const withinLimit = beforeLimit + (retryAfterSeconds / 2) * 1000;
357357
const afterLimit = beforeLimit + retryAfterSeconds * 1000;
358358

359-
server.respondWith('POST', storeUrl, [200, { 'X-Sentry-Rate-Limits': `${retryAfterSeconds}:event:scope` }, '']);
359+
server.respondWith('POST', storeUrl, [200, { 'X-Sentry-Rate-Limits': `${retryAfterSeconds}:error:scope` }, '']);
360360

361361
const dateStub = stub(Date, 'now')
362362
// 1st event - _isRateLimited - false

0 commit comments

Comments
 (0)