diff --git a/MIGRATION.md b/MIGRATION.md index 5f1c90c09ca5..24ba1c079bdc 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -27,6 +27,12 @@ enum. If you were using the `Severity` enum, you should replace it with the `Sev The `Offline` integration has been removed in favor of the offline transport wrapper: http://docs.sentry.io/platforms/javascript/configuration/transports/#offline-caching +## Removal of `enableAnrDetection` and `Anr` class (##10562) + +The `enableAnrDetection` and `Anr` class have been removed. See the +[docs](https://docs.sentry.io/platforms/node/configuration/application-not-responding/) for more details how to migrate +to `anrIntegration`, the new integration for ANR detection. + ## Other changes - Remove `spanStatusfromHttpCode` in favour of `getSpanStatusFromHttpCode` (#10361) diff --git a/dev-packages/e2e-tests/test-applications/node-exports-test-app/scripts/consistentExports.ts b/dev-packages/e2e-tests/test-applications/node-exports-test-app/scripts/consistentExports.ts index cf8233680c11..23bb11e9d237 100644 --- a/dev-packages/e2e-tests/test-applications/node-exports-test-app/scripts/consistentExports.ts +++ b/dev-packages/e2e-tests/test-applications/node-exports-test-app/scripts/consistentExports.ts @@ -60,7 +60,7 @@ const DEPENDENTS: Dependent[] = [ { package: '@sentry/serverless', exports: Object.keys(SentryServerless), - ignoreExports: ['cron', 'hapiErrorPlugin', 'enableAnrDetection'], + ignoreExports: ['cron', 'hapiErrorPlugin'], }, { package: '@sentry/sveltekit', diff --git a/dev-packages/node-integration-tests/suites/anr/basic-session.js b/dev-packages/node-integration-tests/suites/anr/basic-session.js index fe4190c8cc46..5a41d1db6f43 100644 --- a/dev-packages/node-integration-tests/suites/anr/basic-session.js +++ b/dev-packages/node-integration-tests/suites/anr/basic-session.js @@ -11,7 +11,7 @@ Sentry.init({ dsn: 'https://public@dsn.ingest.sentry.io/1337', release: '1.0', debug: true, - integrations: [new Sentry.Integrations.Anr({ captureStackTrace: true, anrThreshold: 100 })], + integrations: [Sentry.anrIntegration({ captureStackTrace: true, anrThreshold: 100 })], }); function longWork() { diff --git a/dev-packages/node-integration-tests/suites/anr/basic.js b/dev-packages/node-integration-tests/suites/anr/basic.js index 097dec6c925c..f9552a974aed 100644 --- a/dev-packages/node-integration-tests/suites/anr/basic.js +++ b/dev-packages/node-integration-tests/suites/anr/basic.js @@ -12,7 +12,7 @@ Sentry.init({ release: '1.0', debug: true, autoSessionTracking: false, - integrations: [new Sentry.Integrations.Anr({ captureStackTrace: true, anrThreshold: 100 })], + integrations: [Sentry.anrIntegration({ captureStackTrace: true, anrThreshold: 100 })], }); function longWork() { diff --git a/dev-packages/node-integration-tests/suites/anr/basic.mjs b/dev-packages/node-integration-tests/suites/anr/basic.mjs index 43a8d02a41ac..5526c8b71c38 100644 --- a/dev-packages/node-integration-tests/suites/anr/basic.mjs +++ b/dev-packages/node-integration-tests/suites/anr/basic.mjs @@ -12,7 +12,7 @@ Sentry.init({ release: '1.0', debug: true, autoSessionTracking: false, - integrations: [new Sentry.Integrations.Anr({ captureStackTrace: true, anrThreshold: 100 })], + integrations: [Sentry.anrIntegration({ captureStackTrace: true, anrThreshold: 100 })], }); function longWork() { diff --git a/dev-packages/node-integration-tests/suites/anr/forked.js b/dev-packages/node-integration-tests/suites/anr/forked.js index 097dec6c925c..f9552a974aed 100644 --- a/dev-packages/node-integration-tests/suites/anr/forked.js +++ b/dev-packages/node-integration-tests/suites/anr/forked.js @@ -12,7 +12,7 @@ Sentry.init({ release: '1.0', debug: true, autoSessionTracking: false, - integrations: [new Sentry.Integrations.Anr({ captureStackTrace: true, anrThreshold: 100 })], + integrations: [Sentry.anrIntegration({ captureStackTrace: true, anrThreshold: 100 })], }); function longWork() { diff --git a/dev-packages/node-integration-tests/suites/anr/legacy.js b/dev-packages/node-integration-tests/suites/anr/legacy.js deleted file mode 100644 index f91db4bec054..000000000000 --- a/dev-packages/node-integration-tests/suites/anr/legacy.js +++ /dev/null @@ -1,31 +0,0 @@ -const crypto = require('crypto'); -const assert = require('assert'); - -const Sentry = require('@sentry/node'); - -setTimeout(() => { - process.exit(); -}, 10000); - -Sentry.init({ - dsn: 'https://public@dsn.ingest.sentry.io/1337', - release: '1.0', - debug: true, - autoSessionTracking: false, -}); - -// eslint-disable-next-line deprecation/deprecation -Sentry.enableAnrDetection({ captureStackTrace: true, anrThreshold: 100 }).then(() => { - function longWork() { - for (let i = 0; i < 20; i++) { - const salt = crypto.randomBytes(128).toString('base64'); - // eslint-disable-next-line no-unused-vars - const hash = crypto.pbkdf2Sync('myPassword', salt, 10000, 512, 'sha512'); - assert.ok(hash); - } - } - - setTimeout(() => { - longWork(); - }, 1000); -}); diff --git a/dev-packages/node-integration-tests/suites/anr/should-exit-forced.js b/dev-packages/node-integration-tests/suites/anr/should-exit-forced.js index cee261e8ccb3..447284d17018 100644 --- a/dev-packages/node-integration-tests/suites/anr/should-exit-forced.js +++ b/dev-packages/node-integration-tests/suites/anr/should-exit-forced.js @@ -6,7 +6,7 @@ function configureSentry() { release: '1.0', debug: true, autoSessionTracking: false, - integrations: [new Sentry.Integrations.Anr({ captureStackTrace: true })], + integrations: [Sentry.anrIntegration({ captureStackTrace: true })], }); } diff --git a/dev-packages/node-integration-tests/suites/anr/should-exit.js b/dev-packages/node-integration-tests/suites/anr/should-exit.js index 7d0ba8db4484..5816532ba972 100644 --- a/dev-packages/node-integration-tests/suites/anr/should-exit.js +++ b/dev-packages/node-integration-tests/suites/anr/should-exit.js @@ -6,7 +6,7 @@ function configureSentry() { release: '1.0', debug: true, autoSessionTracking: false, - integrations: [new Sentry.Integrations.Anr({ captureStackTrace: true })], + integrations: [Sentry.anrIntegration({ captureStackTrace: true })], }); } diff --git a/dev-packages/node-integration-tests/suites/anr/test.ts b/dev-packages/node-integration-tests/suites/anr/test.ts index 966c47ad0370..210f32588588 100644 --- a/dev-packages/node-integration-tests/suites/anr/test.ts +++ b/dev-packages/node-integration-tests/suites/anr/test.ts @@ -56,11 +56,6 @@ conditionalTest({ min: 16 })('should report ANR when event loop blocked', () => cleanupChildProcesses(); }); - // TODO (v8): Remove this old API and this test - test('Legacy API', done => { - createRunner(__dirname, 'legacy.js').expect({ event: EXPECTED_ANR_EVENT }).start(done); - }); - test('CJS', done => { createRunner(__dirname, 'basic.js').expect({ event: EXPECTED_ANR_EVENT }).start(done); }); diff --git a/packages/bun/src/index.ts b/packages/bun/src/index.ts index e8a4738b9bba..d58a59eab09d 100644 --- a/packages/bun/src/index.ts +++ b/packages/bun/src/index.ts @@ -87,8 +87,6 @@ export { } from '@sentry/core'; export type { SpanStatusType } from '@sentry/core'; export { - // eslint-disable-next-line deprecation/deprecation - enableAnrDetection, // eslint-disable-next-line deprecation/deprecation getModuleFromFilename, DEFAULT_USER_INCLUDES, diff --git a/packages/node/src/index.ts b/packages/node/src/index.ts index 3e91aae28d14..7f195957249b 100644 --- a/packages/node/src/index.ts +++ b/packages/node/src/index.ts @@ -108,9 +108,6 @@ import { createGetModuleFromFilename } from './module'; export const getModuleFromFilename = createGetModuleFromFilename(); export { createGetModuleFromFilename }; -// eslint-disable-next-line deprecation/deprecation -export { enableAnrDetection } from './integrations/anr/legacy'; - import { Integrations as CoreIntegrations } from '@sentry/core'; import * as Handlers from './handlers'; diff --git a/packages/node/src/integrations/anr/index.ts b/packages/node/src/integrations/anr/index.ts index 91deb2259e72..7da63fdc50bd 100644 --- a/packages/node/src/integrations/anr/index.ts +++ b/packages/node/src/integrations/anr/index.ts @@ -1,7 +1,7 @@ // TODO (v8): This import can be removed once we only support Node with global URL import { URL } from 'url'; -import { convertIntegrationFnToClass, defineIntegration, getCurrentScope } from '@sentry/core'; -import type { Client, Contexts, Event, EventHint, Integration, IntegrationClass, IntegrationFn } from '@sentry/types'; +import { defineIntegration, getCurrentScope } from '@sentry/core'; +import type { Contexts, Event, EventHint, IntegrationFn } from '@sentry/types'; import { dynamicRequire, logger } from '@sentry/utils'; import type { Worker, WorkerOptions } from 'worker_threads'; import type { NodeClient } from '../../client'; @@ -70,23 +70,6 @@ const _anrIntegration = ((options: Partial = {}) => { export const anrIntegration = defineIntegration(_anrIntegration); -/** - * Starts a thread to detect App Not Responding (ANR) events - * - * ANR detection requires Node 16.17.0 or later - * - * @deprecated Use `anrIntegration()` instead. - */ -// eslint-disable-next-line deprecation/deprecation -export const Anr = convertIntegrationFnToClass(INTEGRATION_NAME, anrIntegration) as IntegrationClass< - Integration & { setup: (client: NodeClient) => void } -> & { - new (options?: Partial): Integration & { setup(client: Client): void }; -}; - -// eslint-disable-next-line deprecation/deprecation -export type Anr = typeof Anr; - /** * Starts the ANR worker thread */ diff --git a/packages/node/src/integrations/anr/legacy.ts b/packages/node/src/integrations/anr/legacy.ts deleted file mode 100644 index d8b4ff1bc6dc..000000000000 --- a/packages/node/src/integrations/anr/legacy.ts +++ /dev/null @@ -1,33 +0,0 @@ -import { getClient } from '@sentry/core'; -import { Anr } from '.'; -import type { NodeClient } from '../../client'; - -// TODO (v8): Remove this entire file and the `enableAnrDetection` export - -interface LegacyOptions { - entryScript: string; - pollInterval: number; - anrThreshold: number; - captureStackTrace: boolean; - debug: boolean; -} - -/** - * @deprecated Use the `Anr` integration instead. - * - * ```ts - * import * as Sentry from '@sentry/node'; - * - * Sentry.init({ - * dsn: '__DSN__', - * integrations: [new Sentry.Integrations.Anr({ captureStackTrace: true })], - * }); - * ``` - */ -export function enableAnrDetection(options: Partial): Promise { - const client = getClient() as NodeClient; - // eslint-disable-next-line deprecation/deprecation - const integration = new Anr(options); - integration.setup(client); - return Promise.resolve(); -} diff --git a/packages/node/src/integrations/index.ts b/packages/node/src/integrations/index.ts index 72f49efbc95d..083df21bd68d 100644 --- a/packages/node/src/integrations/index.ts +++ b/packages/node/src/integrations/index.ts @@ -9,5 +9,4 @@ export { Context } from './context'; export { RequestData } from '@sentry/core'; export { Undici } from './undici'; export { Spotlight } from './spotlight'; -export { Anr } from './anr'; export { Hapi } from './hapi'; diff --git a/packages/remix/src/index.server.ts b/packages/remix/src/index.server.ts index fbf41d811b6f..51ac03a44694 100644 --- a/packages/remix/src/index.server.ts +++ b/packages/remix/src/index.server.ts @@ -98,8 +98,6 @@ export { createGetModuleFromFilename, hapiErrorPlugin, runWithAsyncContext, - // eslint-disable-next-line deprecation/deprecation - enableAnrDetection, } from '@sentry/node'; // Keeping the `*` exports for backwards compatibility and types diff --git a/packages/sveltekit/src/server/index.ts b/packages/sveltekit/src/server/index.ts index 614ec4998969..0615398ec325 100644 --- a/packages/sveltekit/src/server/index.ts +++ b/packages/sveltekit/src/server/index.ts @@ -93,8 +93,6 @@ export { hapiErrorPlugin, metrics, runWithAsyncContext, - // eslint-disable-next-line deprecation/deprecation - enableAnrDetection, } from '@sentry/node'; // We can still leave this for the carrier init and type exports