Skip to content

Commit e7b7d08

Browse files
authored
feat!: Remove enableTracing (#15078)
1 parent fc48f83 commit e7b7d08

File tree

21 files changed

+53
-81
lines changed

21 files changed

+53
-81
lines changed

docs/migration/v8-to-v9.md

+3-1
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@ The following outlines deprecations that were introduced in version 8 of the SDK
326326

327327
- **Passing `undefined` to `tracesSampleRate` / `tracesSampler` / `enableTracing` will be handled differently in v9**
328328

329-
In v8, explicitly setting `tracesSampleRate` (even if it is set to `undefined`) will result in tracing being _enabled_, although no spans will be generated.
329+
In v8, explicitly setting `tracesSampleRate` (even if it is set to `undefined`) resulted in tracing being _enabled_, although no spans were generated.
330330

331331
```ts
332332
Sentry.init({
@@ -338,6 +338,8 @@ In v9, we will streamline this behavior so that passing `undefined` will result
338338

339339
If you are relying on `undefined` being passed in and having tracing enabled because of this, you should update your config to set e.g. `tracesSampleRate: 0` instead, which will also enable tracing in v9.
340340

341+
The `enableTracing` option was removed. In v9, to emulate `enableTracing: true`, set `tracesSampleRate: 1`. To emulate `enableTracing: false`, remove the `tracesSampleRate` and `tracesSampler` options (if configured).
342+
341343
- **The `autoSessionTracking` option is deprecated.**
342344

343345
To enable session tracking, it is recommended to unset `autoSessionTracking` and ensure that either, in browser environments the `browserSessionIntegration` is added, or in server environments the `httpIntegration` is added.

packages/astro/test/client/sdk.test.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ describe('Sentry client SDK', () => {
5252
it.each([
5353
['tracesSampleRate', { tracesSampleRate: 0 }],
5454
['tracesSampler', { tracesSampler: () => 1.0 }],
55-
['enableTracing', { enableTracing: true }],
5655
['no tracing option set', {}],
5756
])('adds browserTracingIntegration if tracing is enabled via %s', (_, tracingOptions) => {
5857
init({
@@ -72,7 +71,7 @@ describe('Sentry client SDK', () => {
7271

7372
init({
7473
dsn: 'https://public@dsn.ingest.sentry.io/1337',
75-
enableTracing: true,
74+
tracesSampleRate: 1,
7675
});
7776

7877
const integrationsToInit = browserInit.mock.calls[0]![0]?.defaultIntegrations || [];
@@ -90,7 +89,7 @@ describe('Sentry client SDK', () => {
9089
integrations: [
9190
browserTracingIntegration({ finalTimeout: 10, instrumentNavigation: false, instrumentPageLoad: false }),
9291
],
93-
enableTracing: true,
92+
tracesSampleRate: 1,
9493
});
9594

9695
const browserTracing = getClient<BrowserClient>()?.getIntegrationByName('BrowserTracing');

packages/cloudflare/test/integrations/fetch.test.ts

-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ describe('WinterCGFetch instrumentation', () => {
2626

2727
client = new FakeClient({
2828
dsn: 'https://public@dsn.ingest.sentry.io/1337',
29-
enableTracing: true,
3029
tracesSampleRate: 1,
3130
integrations: [],
3231
transport: () => ({

packages/core/src/tracing/sampling.ts

+2-5
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import { parseSampleRate } from '../utils/parseSampleRate';
1212
* sent to Sentry.
1313
*/
1414
export function sampleSpan(
15-
options: Pick<Options, 'tracesSampleRate' | 'tracesSampler' | 'enableTracing'>,
15+
options: Pick<Options, 'tracesSampleRate' | 'tracesSampler'>,
1616
samplingContext: SamplingContext,
1717
sampleRand: number,
1818
): [sampled: boolean, sampleRate?: number] {
@@ -21,7 +21,7 @@ export function sampleSpan(
2121
return [false];
2222
}
2323

24-
// we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` nor `enableTracing` were defined, so one of these should
24+
// we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` were defined, so one of these should
2525
// work; prefer the hook if so
2626
let sampleRate;
2727
if (typeof options.tracesSampler === 'function') {
@@ -30,9 +30,6 @@ export function sampleSpan(
3030
sampleRate = samplingContext.parentSampled;
3131
} else if (typeof options.tracesSampleRate !== 'undefined') {
3232
sampleRate = options.tracesSampleRate;
33-
} else {
34-
// When `enableTracing === true`, we use a sample rate of 100%
35-
sampleRate = 1;
3633
}
3734

3835
// Since this is coming from the user (or from a function provided by the user), who knows what we might get.

packages/core/src/types-hoist/options.ts

-11
Original file line numberDiff line numberDiff line change
@@ -81,17 +81,6 @@ export interface ClientOptions<TO extends BaseTransportOptions = BaseTransportOp
8181
*/
8282
tracesSampleRate?: number;
8383

84-
/**
85-
* If this is enabled, spans and trace data will be generated and captured.
86-
* This will set the `tracesSampleRate` to the recommended default of `1.0` if `tracesSampleRate` is undefined.
87-
* Note that `tracesSampleRate` and `tracesSampler` take precedence over this option.
88-
*
89-
* @deprecated This option is deprecated and will be removed in the next major version. If you want to enable performance
90-
* monitoring, please use the `tracesSampleRate` or `tracesSampler` options instead. If you wan't to disable performance
91-
* monitoring, remove the `tracesSampler` and `tracesSampleRate` options.
92-
*/
93-
enableTracing?: boolean;
94-
9584
/**
9685
* If this is enabled, any spans started will always have their parent be the active root span,
9786
* if there is any active span.

packages/core/src/utils/hasTracingEnabled.ts

+6-3
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,17 @@ declare const __SENTRY_TRACING__: boolean | undefined;
1010
* Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.
1111
*/
1212
export function hasTracingEnabled(
13-
maybeOptions?: Pick<Options, 'tracesSampleRate' | 'tracesSampler' | 'enableTracing'> | undefined,
13+
maybeOptions?: Pick<Options, 'tracesSampleRate' | 'tracesSampler'> | undefined,
1414
): boolean {
1515
if (typeof __SENTRY_TRACING__ === 'boolean' && !__SENTRY_TRACING__) {
1616
return false;
1717
}
1818

1919
const client = getClient();
2020
const options = maybeOptions || client?.getOptions();
21-
// eslint-disable-next-line deprecation/deprecation
22-
return !!options && (options.enableTracing || options.tracesSampleRate != null || !!options.tracesSampler);
21+
return (
22+
!!options &&
23+
// Note: This check is `!= null`, meaning "nullish"
24+
(options.tracesSampleRate != null || !!options.tracesSampler)
25+
);
2326
}

packages/core/test/lib/feedback.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ describe('captureFeedback', () => {
314314
getDefaultTestClientOptions({
315315
dsn: 'https://dsn@ingest.f00.f00/1',
316316
enableSend: true,
317-
enableTracing: true,
317+
tracesSampleRate: 1,
318318
// We don't care about transactions here...
319319
beforeSendTransaction() {
320320
return null;
@@ -385,7 +385,7 @@ describe('captureFeedback', () => {
385385
getDefaultTestClientOptions({
386386
dsn: 'https://dsn@ingest.f00.f00/1',
387387
enableSend: true,
388-
enableTracing: true,
388+
tracesSampleRate: 1,
389389
// We don't care about transactions here...
390390
beforeSendTransaction() {
391391
return null;

packages/core/test/lib/tracing/errors.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ describe('registerErrorHandlers()', () => {
2424
beforeEach(() => {
2525
mockAddGlobalErrorInstrumentationHandler.mockClear();
2626
mockAddGlobalUnhandledRejectionInstrumentationHandler.mockClear();
27-
const options = getDefaultTestClientOptions({ enableTracing: true });
27+
const options = getDefaultTestClientOptions({ tracesSampleRate: 1 });
2828
const client = new TestClient(options);
2929
setCurrentClient(client);
3030
client.init();

packages/core/test/lib/tracing/trace.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1684,7 +1684,7 @@ describe('withActiveSpan()', () => {
16841684

16851685
setAsyncContextStrategy(undefined);
16861686

1687-
const options = getDefaultTestClientOptions({ enableTracing: true });
1687+
const options = getDefaultTestClientOptions({ tracesSampleRate: 1 });
16881688
const client = new TestClient(options);
16891689
setCurrentClient(client);
16901690
client.init();

packages/core/test/lib/utils/hasTracingEnabled.test.ts

+1-16
Original file line numberDiff line numberDiff line change
@@ -5,28 +5,13 @@ describe('hasTracingEnabled', () => {
55
const tracesSampleRate = 1;
66
it.each([
77
['No options', undefined, false],
8-
['No tracesSampler or tracesSampleRate or enableTracing', {}, false],
8+
['No tracesSampler or tracesSampleRate', {}, false],
99
['With tracesSampler', { tracesSampler }, true],
1010
['With tracesSampleRate', { tracesSampleRate }, true],
11-
['With enableTracing=true', { enableTracing: true }, true],
12-
['With enableTracing=false', { enableTracing: false }, false],
13-
['With enableTracing=undefined', { enableTracing: undefined }, false],
1411
['With tracesSampleRate=undefined', { tracesSampleRate: undefined }, false],
1512
['With tracesSampleRate=0', { tracesSampleRate: 0 }, true],
1613
['With tracesSampler=undefined', { tracesSampler: undefined }, false],
17-
['With tracesSampler && enableTracing=false', { tracesSampler, enableTracing: false }, true],
18-
['With tracesSampleRate && enableTracing=false', { tracesSampler, enableTracing: false }, true],
1914
['With tracesSampler and tracesSampleRate', { tracesSampler, tracesSampleRate }, true],
20-
[
21-
'With tracesSampler and tracesSampleRate and enableTracing=true',
22-
{ tracesSampler, tracesSampleRate, enableTracing: true },
23-
true,
24-
],
25-
[
26-
'With tracesSampler and tracesSampleRate and enableTracing=false',
27-
{ tracesSampler, tracesSampleRate, enableTracing: false },
28-
true,
29-
],
3015
])(
3116
'%s',
3217
(_: string, input: Parameters<typeof hasTracingEnabled>[0], output: ReturnType<typeof hasTracingEnabled>) => {

packages/feedback/src/core/sendFeedback.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ describe('sendFeedback', () => {
141141
});
142142

143143
it('applies active span data to feedback', async () => {
144-
mockSdk({ sentryOptions: { enableTracing: true } });
144+
mockSdk({ sentryOptions: { tracesSampleRate: 1 } });
145145
const mockTransport = jest.spyOn(getClient()!.getTransport()!, 'send');
146146

147147
await startSpan({ name: 'test span' }, () => {
@@ -196,7 +196,7 @@ describe('sendFeedback', () => {
196196
});
197197

198198
it('applies scope data to feedback', async () => {
199-
mockSdk({ sentryOptions: { enableTracing: true } });
199+
mockSdk({ sentryOptions: { tracesSampleRate: 1 } });
200200
const mockTransport = jest.spyOn(getClient()!.getTransport()!, 'send');
201201

202202
await withIsolationScope(isolationScope => {

packages/node/test/integration/breadcrumbs.test.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ describe('Integration | breadcrumbs', () => {
9999
const beforeSend = jest.fn(() => null);
100100
const beforeBreadcrumb = jest.fn(breadcrumb => breadcrumb);
101101

102-
mockSdkInit({ beforeSend, beforeBreadcrumb, beforeSendTransaction, enableTracing: true });
102+
mockSdkInit({ beforeSend, beforeBreadcrumb, beforeSendTransaction, tracesSampleRate: 1 });
103103

104104
const client = getClient() as NodeClient;
105105

@@ -144,7 +144,7 @@ describe('Integration | breadcrumbs', () => {
144144
const beforeSend = jest.fn(() => null);
145145
const beforeBreadcrumb = jest.fn(breadcrumb => breadcrumb);
146146

147-
mockSdkInit({ beforeSend, beforeBreadcrumb, beforeSendTransaction, enableTracing: true });
147+
mockSdkInit({ beforeSend, beforeBreadcrumb, beforeSendTransaction, tracesSampleRate: 1 });
148148

149149
const client = getClient() as NodeClient;
150150

@@ -196,7 +196,7 @@ describe('Integration | breadcrumbs', () => {
196196
const beforeSend = jest.fn(() => null);
197197
const beforeBreadcrumb = jest.fn(breadcrumb => breadcrumb);
198198

199-
mockSdkInit({ beforeSend, beforeBreadcrumb, beforeSendTransaction, enableTracing: true });
199+
mockSdkInit({ beforeSend, beforeBreadcrumb, beforeSendTransaction, tracesSampleRate: 1 });
200200

201201
const client = getClient() as NodeClient;
202202

@@ -237,7 +237,7 @@ describe('Integration | breadcrumbs', () => {
237237
const beforeSend = jest.fn(() => null);
238238
const beforeBreadcrumb = jest.fn(breadcrumb => breadcrumb);
239239

240-
mockSdkInit({ beforeSend, beforeBreadcrumb, beforeSendTransaction, enableTracing: true });
240+
mockSdkInit({ beforeSend, beforeBreadcrumb, beforeSendTransaction, tracesSampleRate: 1 });
241241

242242
const client = getClient() as NodeClient;
243243

@@ -295,7 +295,7 @@ describe('Integration | breadcrumbs', () => {
295295
const beforeSend = jest.fn(() => null);
296296
const beforeBreadcrumb = jest.fn(breadcrumb => breadcrumb);
297297

298-
mockSdkInit({ beforeSend, beforeBreadcrumb, beforeSendTransaction, enableTracing: true });
298+
mockSdkInit({ beforeSend, beforeBreadcrumb, beforeSendTransaction, tracesSampleRate: 1 });
299299

300300
const client = getClient() as NodeClient;
301301

packages/node/test/integration/scope.test.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ describe('Integration | Scope', () => {
1414
describe.each([
1515
['with tracing', true],
1616
['without tracing', false],
17-
])('%s', (_name, enableTracing) => {
17+
])('%s', (_name, tracingEnabled) => {
1818
it('correctly syncs OTEL context & Sentry hub/scope', async () => {
1919
const beforeSend = jest.fn(() => null);
2020
const beforeSendTransaction = jest.fn(() => null);
2121

22-
mockSdkInit({ enableTracing, beforeSend, beforeSendTransaction });
22+
mockSdkInit({ tracesSampleRate: tracingEnabled ? 1 : 0, beforeSend, beforeSendTransaction });
2323

2424
const client = getClient() as NodeClient;
2525

@@ -42,7 +42,7 @@ describe('Integration | Scope', () => {
4242
scope2.setTag('tag3', 'val3');
4343

4444
Sentry.startSpan({ name: 'outer' }, span => {
45-
expect(getCapturedScopesOnSpan(span).scope).toBe(enableTracing ? scope2 : undefined);
45+
expect(getCapturedScopesOnSpan(span).scope).toBe(tracingEnabled ? scope2 : undefined);
4646

4747
spanId = span.spanContext().spanId;
4848
traceId = span.spanContext().traceId;
@@ -92,7 +92,7 @@ describe('Integration | Scope', () => {
9292
},
9393
);
9494

95-
if (enableTracing) {
95+
if (tracingEnabled) {
9696
expect(beforeSendTransaction).toHaveBeenCalledTimes(1);
9797
// Note: Scope for transaction is taken at `start` time, not `finish` time
9898
expect(beforeSendTransaction).toHaveBeenCalledWith(
@@ -133,7 +133,7 @@ describe('Integration | Scope', () => {
133133
const beforeSend = jest.fn(() => null);
134134
const beforeSendTransaction = jest.fn(() => null);
135135

136-
mockSdkInit({ enableTracing, beforeSend, beforeSendTransaction });
136+
mockSdkInit({ tracesSampleRate: tracingEnabled ? 1 : 0, beforeSend, beforeSendTransaction });
137137

138138
const client = getClient() as NodeClient;
139139
const rootScope = getCurrentScope();
@@ -232,7 +232,7 @@ describe('Integration | Scope', () => {
232232
},
233233
);
234234

235-
if (enableTracing) {
235+
if (tracingEnabled) {
236236
expect(beforeSendTransaction).toHaveBeenCalledTimes(2);
237237
}
238238
});

packages/node/test/integration/transactions.test.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ describe('Integration | Transactions', () => {
2222
});
2323

2424
mockSdkInit({
25-
enableTracing: true,
25+
tracesSampleRate: 1,
2626
beforeSendTransaction,
2727
release: '8.0.0',
2828
});
@@ -164,7 +164,7 @@ describe('Integration | Transactions', () => {
164164
it('correctly creates concurrent transaction & spans', async () => {
165165
const beforeSendTransaction = jest.fn(() => null);
166166

167-
mockSdkInit({ enableTracing: true, beforeSendTransaction });
167+
mockSdkInit({ tracesSampleRate: 1, beforeSendTransaction });
168168

169169
const client = Sentry.getClient()!;
170170

@@ -309,7 +309,7 @@ describe('Integration | Transactions', () => {
309309
it('correctly creates concurrent transaction & spans when using native OTEL tracer', async () => {
310310
const beforeSendTransaction = jest.fn(() => null);
311311

312-
mockSdkInit({ enableTracing: true, beforeSendTransaction });
312+
mockSdkInit({ tracesSampleRate: 1, beforeSendTransaction });
313313

314314
const client = Sentry.getClient<Sentry.NodeClient>();
315315

@@ -457,7 +457,7 @@ describe('Integration | Transactions', () => {
457457
traceFlags: TraceFlags.SAMPLED,
458458
};
459459

460-
mockSdkInit({ enableTracing: true, beforeSendTransaction });
460+
mockSdkInit({ tracesSampleRate: 1, beforeSendTransaction });
461461

462462
const client = Sentry.getClient()!;
463463

@@ -562,7 +562,7 @@ describe('Integration | Transactions', () => {
562562
const logs: unknown[] = [];
563563
jest.spyOn(logger, 'log').mockImplementation(msg => logs.push(msg));
564564

565-
mockSdkInit({ enableTracing: true, beforeSendTransaction });
565+
mockSdkInit({ tracesSampleRate: 1, beforeSendTransaction });
566566

567567
const provider = getProvider();
568568
const multiSpanProcessor = provider?.activeSpanProcessor as
@@ -641,7 +641,7 @@ describe('Integration | Transactions', () => {
641641
jest.spyOn(logger, 'log').mockImplementation(msg => logs.push(msg));
642642

643643
mockSdkInit({
644-
enableTracing: true,
644+
tracesSampleRate: 1,
645645
beforeSendTransaction,
646646
maxSpanWaitDuration: 100 * 60,
647647
});

packages/node/test/sdk/api.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ describe('withActiveSpan()', () => {
2222

2323
it('should create child spans when calling startSpan within the callback', async () => {
2424
const beforeSendTransaction = jest.fn(() => null);
25-
mockSdkInit({ enableTracing: true, beforeSendTransaction });
25+
mockSdkInit({ tracesSampleRate: 1, beforeSendTransaction });
2626
const client = getClient();
2727

2828
const inactiveSpan = startInactiveSpan({ name: 'inactive-span' });
@@ -70,7 +70,7 @@ describe('withActiveSpan()', () => {
7070
transactions.push(event);
7171
return null;
7272
});
73-
mockSdkInit({ enableTracing: true, beforeSendTransaction });
73+
mockSdkInit({ tracesSampleRate: 1, beforeSendTransaction });
7474
const client = getClient();
7575

7676
startSpan({ name: 'parent-span' }, () => {

packages/node/test/sdk/init.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ describe('init()', () => {
108108
init({
109109
dsn: PUBLIC_DSN,
110110
integrations: mockIntegrations,
111-
enableTracing: true,
111+
tracesSampleRate: 1,
112112
});
113113

114114
expect(mockIntegrations[0]?.setupOnce as jest.Mock).toHaveBeenCalledTimes(1);

0 commit comments

Comments
 (0)