Skip to content

Commit 42b6cd6

Browse files
kamilogorekHazAT
authored andcommitted
feat: Disable client once flushed (#1904)
1 parent 292bc80 commit 42b6cd6

File tree

6 files changed

+17
-12
lines changed

6 files changed

+17
-12
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ since we removed some methods from the public API and removed some classes from
1515
- **breaking** [core] ref: Use `SyncPromise` internally, this reduces memory pressure by a lot.
1616
- **breaking** [browser] ref: Removed `BrowserBackend` from default export.
1717
- **breaking** [node] ref: Removed `BrowserBackend` from default export.
18+
- **breaking** [core] feat: Disable client once flushed using `close` method
1819
- ref: Move internal `ExtendedError` to a types package
1920
- **breaking** [core] ref: Pass `Event` to `sendEvent` instead of already stringified data
2021
- [utils] feat: Introduce `isSyntheticEvent` util

packages/browser/src/integrations/globalhandlers.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { getCurrentHub } from '@sentry/core';
22
import { Event, Integration } from '@sentry/types';
33
import { logger } from '@sentry/utils/logger';
4+
import { normalize } from '@sentry/utils/object';
45
import { truncate } from '@sentry/utils/string';
56
import { addExceptionTypeValue, eventFromStacktrace } from '../parsers';
67
import {
@@ -113,7 +114,7 @@ export class GlobalHandlers implements Integration {
113114
},
114115
};
115116

116-
const fallbackValue = stacktrace.original ? truncate(JSON.stringify(stacktrace.original), 300) : '';
117+
const fallbackValue = stacktrace.original ? truncate(JSON.stringify(normalize(stacktrace.original)), 300) : '';
117118
const fallbackType = stacktrace.mechanism === 'onunhandledrejection' ? 'UnhandledRejection' : 'Error';
118119

119120
// This makes sure we have type/value in every exception

packages/browser/test/index.test.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
captureMessage,
99
configureScope,
1010
Event,
11+
flush,
1112
getCurrentHub,
1213
init,
1314
Integrations,
@@ -74,7 +75,7 @@ describe('SentryBrowser', () => {
7475
addBreadcrumb({ message: 'test2' });
7576

7677
captureMessage('event');
77-
await (getCurrentHub().getClient() as BrowserClient).close(2000);
78+
await flush(2000);
7879
expect(beforeSend.args[0][0].breadcrumbs).to.have.lengthOf(2);
7980
});
8081
});
@@ -87,7 +88,7 @@ describe('SentryBrowser', () => {
8788
captureException(e);
8889
}
8990

90-
await (getCurrentHub().getClient() as BrowserClient).close(2000);
91+
await flush(2000);
9192

9293
const event = beforeSend.args[0][0];
9394
expect(event.exception).to.not.be.undefined;
@@ -131,7 +132,7 @@ describe('SentryBrowser', () => {
131132
captureMessage('event222');
132133
captureMessage('event222');
133134

134-
await (getCurrentHub().getClient() as BrowserClient).close(2000);
135+
await flush(2000);
135136

136137
expect(beforeSend.calledOnce).to.be.true;
137138
});
@@ -149,7 +150,7 @@ describe('SentryBrowser', () => {
149150
captureMessage('event222');
150151
captureMessage('event222');
151152

152-
await (getCurrentHub().getClient() as BrowserClient).close(2000);
153+
await flush(2000);
153154

154155
expect(localBeforeSend.calledTwice).to.be.true;
155156
});
@@ -166,7 +167,7 @@ describe('SentryBrowser', () => {
166167

167168
captureMessage('capture');
168169

169-
await (getCurrentHub().getClient() as BrowserClient).close(2000);
170+
await flush(2000);
170171

171172
expect(localBeforeSend.called).to.be.false;
172173
});

packages/core/src/baseclient.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,9 @@ export abstract class BaseClient<B extends Backend, O extends Options> implement
333333
* @inheritDoc
334334
*/
335335
public async close(timeout?: number): Promise<boolean> {
336-
return this.flush(timeout);
336+
return this.flush(timeout).finally(() => {
337+
this.getOptions().enabled = false;
338+
});
337339
}
338340

339341
/**

packages/node/test/index.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ describe('SentryNode', () => {
3232
getCurrentHub().popScope();
3333
});
3434

35-
test('close() with to short timeout', done => {
35+
test('flush() with to short timeout', done => {
3636
expect.assertions(1);
3737
jest.useFakeTimers();
3838
const client = new NodeClient({
@@ -44,7 +44,7 @@ describe('SentryNode', () => {
4444
captureMessage('test');
4545
captureMessage('test');
4646
client
47-
.close(50)
47+
.flush(50)
4848
.then(result => {
4949
expect(result).toBeFalsy();
5050
done();
@@ -55,7 +55,7 @@ describe('SentryNode', () => {
5555
jest.runAllTimers();
5656
});
5757

58-
test('close() with timeout', done => {
58+
test('flush() with timeout', done => {
5959
expect.assertions(1);
6060
jest.useFakeTimers();
6161
const client = new NodeClient({
@@ -68,7 +68,7 @@ describe('SentryNode', () => {
6868
captureMessage('test');
6969
jest.runAllTimers();
7070
client
71-
.close(50)
71+
.flush(50)
7272
.then(result => {
7373
expect(result).toBeFalsy();
7474
done();

packages/utils/test/object.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,7 @@ describe('normalize()', () => {
495495
/*no-empty*/
496496
},
497497
};
498-
const result = safeNormalize(obj);
498+
const result = normalize(obj);
499499
expect(result).toEqual({
500500
foo: '[SyntheticEvent]',
501501
baz: '[NaN]',

0 commit comments

Comments
 (0)