Skip to content

Commit d675a70

Browse files
authored
ref: Log which request type has been limited (#3687)
* ref: Log which request type has been limited * Update tests
1 parent 4a10423 commit d675a70

File tree

8 files changed

+98
-36
lines changed

8 files changed

+98
-36
lines changed

packages/browser/src/transports/base.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,8 @@ export abstract class BaseTransport implements Transport {
7676
* https://developer.mozilla.org/en-US/docs/Web/API/Headers/get
7777
*/
7878
const limited = this._handleRateLimit(headers);
79-
if (limited) logger.warn(`Too many requests, backing off until: ${this._disabledUntil(requestType)}`);
79+
if (limited)
80+
logger.warn(`Too many ${requestType} requests, backing off until: ${this._disabledUntil(requestType)}`);
8081

8182
if (status === Status.Success) {
8283
resolve({ status });

packages/browser/src/transports/fetch.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,9 @@ export class FetchTransport extends BaseTransport {
109109
return Promise.reject({
110110
event: originalPayload,
111111
type: sentryRequest.type,
112-
reason: `Transport locked till ${this._disabledUntil(sentryRequest.type)} due to too many requests.`,
112+
reason: `Transport for ${sentryRequest.type} requests locked till ${this._disabledUntil(
113+
sentryRequest.type,
114+
)} due to too many requests.`,
113115
status: 429,
114116
});
115117
}

packages/browser/src/transports/xhr.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ export class XHRTransport extends BaseTransport {
2929
return Promise.reject({
3030
event: originalPayload,
3131
type: sentryRequest.type,
32-
reason: `Transport locked till ${this._disabledUntil(sentryRequest.type)} due to too many requests.`,
32+
reason: `Transport for ${sentryRequest.type} requests locked till ${this._disabledUntil(
33+
sentryRequest.type,
34+
)} due to too many requests.`,
3335
status: 429,
3436
});
3537
}

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

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,9 @@ describe('FetchTransport', () => {
190190
throw new Error('unreachable!');
191191
} catch (res) {
192192
expect(res.status).equal(429);
193-
expect(res.reason).equal(`Transport locked till ${new Date(afterLimit)} due to too many requests.`);
193+
expect(res.reason).equal(
194+
`Transport for event requests locked till ${new Date(afterLimit)} due to too many requests.`,
195+
);
194196
expect(fetch.calledOnce).equal(true);
195197
}
196198

@@ -256,7 +258,9 @@ describe('FetchTransport', () => {
256258
throw new Error('unreachable!');
257259
} catch (res) {
258260
expect(res.status).equal(429);
259-
expect(res.reason).equal(`Transport locked till ${new Date(afterLimit)} due to too many requests.`);
261+
expect(res.reason).equal(
262+
`Transport for event requests locked till ${new Date(afterLimit)} due to too many requests.`,
263+
);
260264
expect(fetch.calledTwice).equal(true);
261265
}
262266

@@ -317,7 +321,9 @@ describe('FetchTransport', () => {
317321
throw new Error('unreachable!');
318322
} catch (res) {
319323
expect(res.status).equal(429);
320-
expect(res.reason).equal(`Transport locked till ${new Date(afterLimit)} due to too many requests.`);
324+
expect(res.reason).equal(
325+
`Transport for event requests locked till ${new Date(afterLimit)} due to too many requests.`,
326+
);
321327
expect(fetch.calledOnce).equal(true);
322328
}
323329

@@ -326,7 +332,9 @@ describe('FetchTransport', () => {
326332
throw new Error('unreachable!');
327333
} catch (res) {
328334
expect(res.status).equal(429);
329-
expect(res.reason).equal(`Transport locked till ${new Date(afterLimit)} due to too many requests.`);
335+
expect(res.reason).equal(
336+
`Transport for transaction requests locked till ${new Date(afterLimit)} due to too many requests.`,
337+
);
330338
expect(fetch.calledOnce).equal(true);
331339
}
332340

@@ -393,7 +401,9 @@ describe('FetchTransport', () => {
393401
throw new Error('unreachable!');
394402
} catch (res) {
395403
expect(res.status).equal(429);
396-
expect(res.reason).equal(`Transport locked till ${new Date(afterLimit)} due to too many requests.`);
404+
expect(res.reason).equal(
405+
`Transport for event requests locked till ${new Date(afterLimit)} due to too many requests.`,
406+
);
397407
expect(fetch.calledOnce).equal(true);
398408
}
399409

@@ -402,7 +412,9 @@ describe('FetchTransport', () => {
402412
throw new Error('unreachable!');
403413
} catch (res) {
404414
expect(res.status).equal(429);
405-
expect(res.reason).equal(`Transport locked till ${new Date(afterLimit)} due to too many requests.`);
415+
expect(res.reason).equal(
416+
`Transport for transaction requests locked till ${new Date(afterLimit)} due to too many requests.`,
417+
);
406418
expect(fetch.calledOnce).equal(true);
407419
}
408420

@@ -455,7 +467,9 @@ describe('FetchTransport', () => {
455467
throw new Error('unreachable!');
456468
} catch (res) {
457469
expect(res.status).equal(429);
458-
expect(res.reason).equal(`Transport locked till ${new Date(afterLimit)} due to too many requests.`);
470+
expect(res.reason).equal(
471+
`Transport for event requests locked till ${new Date(afterLimit)} due to too many requests.`,
472+
);
459473
expect(fetch.calledOnce).equal(true);
460474
}
461475

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

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,9 @@ describe('XHRTransport', () => {
127127
throw new Error('unreachable!');
128128
} catch (res) {
129129
expect(res.status).equal(429);
130-
expect(res.reason).equal(`Transport locked till ${new Date(afterLimit)} due to too many requests.`);
130+
expect(res.reason).equal(
131+
`Transport for event requests locked till ${new Date(afterLimit)} due to too many requests.`,
132+
);
131133
expect(server.requests.length).equal(1);
132134
}
133135

@@ -190,7 +192,9 @@ describe('XHRTransport', () => {
190192
throw new Error('unreachable!');
191193
} catch (res) {
192194
expect(res.status).equal(429);
193-
expect(res.reason).equal(`Transport locked till ${new Date(afterLimit)} due to too many requests.`);
195+
expect(res.reason).equal(
196+
`Transport for event requests locked till ${new Date(afterLimit)} due to too many requests.`,
197+
);
194198
expect(server.requests.length).equal(2);
195199
}
196200

@@ -256,7 +260,9 @@ describe('XHRTransport', () => {
256260
throw new Error('unreachable!');
257261
} catch (res) {
258262
expect(res.status).equal(429);
259-
expect(res.reason).equal(`Transport locked till ${new Date(afterLimit)} due to too many requests.`);
263+
expect(res.reason).equal(
264+
`Transport for event requests locked till ${new Date(afterLimit)} due to too many requests.`,
265+
);
260266
expect(server.requests.length).equal(1);
261267
}
262268

@@ -265,7 +271,9 @@ describe('XHRTransport', () => {
265271
throw new Error('unreachable!');
266272
} catch (res) {
267273
expect(res.status).equal(429);
268-
expect(res.reason).equal(`Transport locked till ${new Date(afterLimit)} due to too many requests.`);
274+
expect(res.reason).equal(
275+
`Transport for transaction requests locked till ${new Date(afterLimit)} due to too many requests.`,
276+
);
269277
expect(server.requests.length).equal(1);
270278
}
271279

@@ -332,7 +340,9 @@ describe('XHRTransport', () => {
332340
throw new Error('unreachable!');
333341
} catch (res) {
334342
expect(res.status).equal(429);
335-
expect(res.reason).equal(`Transport locked till ${new Date(afterLimit)} due to too many requests.`);
343+
expect(res.reason).equal(
344+
`Transport for event requests locked till ${new Date(afterLimit)} due to too many requests.`,
345+
);
336346
expect(server.requests.length).equal(1);
337347
}
338348

@@ -341,7 +351,9 @@ describe('XHRTransport', () => {
341351
throw new Error('unreachable!');
342352
} catch (res) {
343353
expect(res.status).equal(429);
344-
expect(res.reason).equal(`Transport locked till ${new Date(afterLimit)} due to too many requests.`);
354+
expect(res.reason).equal(
355+
`Transport for transaction requests locked till ${new Date(afterLimit)} due to too many requests.`,
356+
);
345357
expect(server.requests.length).equal(1);
346358
}
347359

@@ -393,7 +405,9 @@ describe('XHRTransport', () => {
393405
throw new Error('unreachable!');
394406
} catch (res) {
395407
expect(res.status).equal(429);
396-
expect(res.reason).equal(`Transport locked till ${new Date(afterLimit)} due to too many requests.`);
408+
expect(res.reason).equal(
409+
`Transport for event requests locked till ${new Date(afterLimit)} due to too many requests.`,
410+
);
397411
expect(server.requests.length).equal(1);
398412
}
399413

packages/node/src/transports/base/index.ts

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -182,17 +182,19 @@ export abstract class BaseTransport implements Transport {
182182

183183
/** JSDoc */
184184
protected async _send(
185-
sentryReq: SentryRequest,
185+
sentryRequest: SentryRequest,
186186
originalPayload?: Event | Session | SessionAggregates,
187187
): Promise<Response> {
188188
if (!this.module) {
189189
throw new SentryError('No module available');
190190
}
191-
if (originalPayload && this._isRateLimited(sentryReq.type)) {
191+
if (originalPayload && this._isRateLimited(sentryRequest.type)) {
192192
return Promise.reject({
193193
payload: originalPayload,
194-
type: sentryReq.type,
195-
reason: `Transport locked till ${this._disabledUntil(sentryReq.type)} due to too many requests.`,
194+
type: sentryRequest.type,
195+
reason: `Transport for ${sentryRequest.type} requests locked till ${this._disabledUntil(
196+
sentryRequest.type,
197+
)} due to too many requests.`,
196198
status: 429,
197199
});
198200
}
@@ -205,7 +207,7 @@ export abstract class BaseTransport implements Transport {
205207
if (!this.module) {
206208
throw new SentryError('No module available');
207209
}
208-
const options = this._getRequestOptions(this.urlParser(sentryReq.url));
210+
const options = this._getRequestOptions(this.urlParser(sentryRequest.url));
209211
const req = this.module.request(options, res => {
210212
const statusCode = res.statusCode || 500;
211213
const status = Status.fromHttpCode(statusCode);
@@ -228,7 +230,10 @@ export abstract class BaseTransport implements Transport {
228230
};
229231

230232
const limited = this._handleRateLimit(headers);
231-
if (limited) logger.warn(`Too many requests, backing off until: ${this._disabledUntil(sentryReq.type)}`);
233+
if (limited)
234+
logger.warn(
235+
`Too many ${sentryRequest.type} requests, backing off until: ${this._disabledUntil(sentryRequest.type)}`,
236+
);
232237

233238
if (status === Status.Success) {
234239
resolve({ status });
@@ -249,7 +254,7 @@ export abstract class BaseTransport implements Transport {
249254
});
250255
});
251256
req.on('error', reject);
252-
req.end(sentryReq.body);
257+
req.end(sentryRequest.body);
253258
}),
254259
);
255260
}

packages/node/test/transports/http.test.ts

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,9 @@ describe('HTTPTransport', () => {
204204
} catch (e) {
205205
expect(e.status).toEqual(429);
206206
expect(e.reason).toEqual(
207-
`Transport locked till ${new Date(now + retryAfterSeconds * 1000)} due to too many requests.`,
207+
`Transport for event requests locked till ${new Date(
208+
now + retryAfterSeconds * 1000,
209+
)} due to too many requests.`,
208210
);
209211
expect(e.payload.message).toEqual('test');
210212
expect(e.type).toEqual('event');
@@ -257,7 +259,9 @@ describe('HTTPTransport', () => {
257259
} catch (e) {
258260
expect(e.status).toEqual(429);
259261
expect(e.reason).toEqual(
260-
`Transport locked till ${new Date(now + retryAfterSeconds * 1000)} due to too many requests.`,
262+
`Transport for event requests locked till ${new Date(
263+
now + retryAfterSeconds * 1000,
264+
)} due to too many requests.`,
261265
);
262266
expect(e.payload).toEqual(eventPayload);
263267
expect(e.type).toEqual('event');
@@ -268,7 +272,9 @@ describe('HTTPTransport', () => {
268272
} catch (e) {
269273
expect(e.status).toEqual(429);
270274
expect(e.reason).toEqual(
271-
`Transport locked till ${new Date(now + retryAfterSeconds * 1000)} due to too many requests.`,
275+
`Transport for transaction requests locked till ${new Date(
276+
now + retryAfterSeconds * 1000,
277+
)} due to too many requests.`,
272278
);
273279
expect(e.payload).toEqual(transactionPayload);
274280
expect(e.type).toEqual('transaction');
@@ -335,7 +341,9 @@ describe('HTTPTransport', () => {
335341
} catch (e) {
336342
expect(e.status).toEqual(429);
337343
expect(e.reason).toEqual(
338-
`Transport locked till ${new Date(now + retryAfterSeconds * 1000)} due to too many requests.`,
344+
`Transport for event requests locked till ${new Date(
345+
now + retryAfterSeconds * 1000,
346+
)} due to too many requests.`,
339347
);
340348
expect(e.payload).toEqual(eventPayload);
341349
expect(e.type).toEqual('event');
@@ -391,7 +399,9 @@ describe('HTTPTransport', () => {
391399
} catch (e) {
392400
expect(e.status).toEqual(429);
393401
expect(e.reason).toEqual(
394-
`Transport locked till ${new Date(now + retryAfterSeconds * 1000)} due to too many requests.`,
402+
`Transport for event requests locked till ${new Date(
403+
now + retryAfterSeconds * 1000,
404+
)} due to too many requests.`,
395405
);
396406
expect(e.payload).toEqual(eventPayload);
397407
expect(e.type).toEqual('event');
@@ -402,7 +412,9 @@ describe('HTTPTransport', () => {
402412
} catch (e) {
403413
expect(e.status).toEqual(429);
404414
expect(e.reason).toEqual(
405-
`Transport locked till ${new Date(now + retryAfterSeconds * 1000)} due to too many requests.`,
415+
`Transport for session requests locked till ${new Date(
416+
now + retryAfterSeconds * 1000,
417+
)} due to too many requests.`,
406418
);
407419
expect(e.payload.environment).toEqual(sessionPayload.environment);
408420
expect(e.payload.release).toEqual(sessionPayload.release);
@@ -415,7 +427,9 @@ describe('HTTPTransport', () => {
415427
} catch (e) {
416428
expect(e.status).toEqual(429);
417429
expect(e.reason).toEqual(
418-
`Transport locked till ${new Date(now + retryAfterSeconds * 1000)} due to too many requests.`,
430+
`Transport for transaction requests locked till ${new Date(
431+
now + retryAfterSeconds * 1000,
432+
)} due to too many requests.`,
419433
);
420434
expect(e.payload).toEqual(transactionPayload);
421435
expect(e.type).toEqual('transaction');
@@ -474,7 +488,9 @@ describe('HTTPTransport', () => {
474488
} catch (e) {
475489
expect(e.status).toEqual(429);
476490
expect(e.reason).toEqual(
477-
`Transport locked till ${new Date(now + retryAfterSeconds * 1000)} due to too many requests.`,
491+
`Transport for event requests locked till ${new Date(
492+
now + retryAfterSeconds * 1000,
493+
)} due to too many requests.`,
478494
);
479495
expect(e.payload).toEqual(eventPayload);
480496
expect(e.type).toEqual('event');
@@ -485,7 +501,9 @@ describe('HTTPTransport', () => {
485501
} catch (e) {
486502
expect(e.status).toEqual(429);
487503
expect(e.reason).toEqual(
488-
`Transport locked till ${new Date(now + retryAfterSeconds * 1000)} due to too many requests.`,
504+
`Transport for transaction requests locked till ${new Date(
505+
now + retryAfterSeconds * 1000,
506+
)} due to too many requests.`,
489507
);
490508
expect(e.payload).toEqual(transactionPayload);
491509
expect(e.type).toEqual('transaction');
@@ -539,7 +557,9 @@ describe('HTTPTransport', () => {
539557
} catch (e) {
540558
expect(e.status).toEqual(429);
541559
expect(e.reason).toEqual(
542-
`Transport locked till ${new Date(now + retryAfterSeconds * 1000)} due to too many requests.`,
560+
`Transport for event requests locked till ${new Date(
561+
now + retryAfterSeconds * 1000,
562+
)} due to too many requests.`,
543563
);
544564
expect(e.payload).toEqual(eventPayload);
545565
expect(e.type).toEqual('event');
@@ -586,7 +606,9 @@ describe('HTTPTransport', () => {
586606
} catch (e) {
587607
expect(e.status).toEqual(429);
588608
expect(e.reason).toEqual(
589-
`Transport locked till ${new Date(now + retryAfterSeconds * 1000)} due to too many requests.`,
609+
`Transport for event requests locked till ${new Date(
610+
now + retryAfterSeconds * 1000,
611+
)} due to too many requests.`,
590612
);
591613
expect(e.payload).toEqual(eventPayload);
592614
expect(e.type).toEqual('event');

packages/node/test/transports/https.test.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,9 @@ describe('HTTPSTransport', () => {
189189
} catch (e) {
190190
expect(e.status).toEqual(429);
191191
expect(e.reason).toEqual(
192-
`Transport locked till ${new Date(now + retryAfterSeconds * 1000)} due to too many requests.`,
192+
`Transport for event requests locked till ${new Date(
193+
now + retryAfterSeconds * 1000,
194+
)} due to too many requests.`,
193195
);
194196
expect(e.payload.message).toEqual('test');
195197
expect(e.type).toEqual('event');

0 commit comments

Comments
 (0)