Skip to content

Commit e190793

Browse files
author
Luca Forstner
authored
feat(node)!: Remove fine grained registerEsmLoaderHooks option and addOpenTelemetryInstrumentation() (#14606)
1 parent 90fad5a commit e190793

File tree

18 files changed

+11
-179
lines changed

18 files changed

+11
-179
lines changed

dev-packages/e2e-tests/test-applications/node-express-esm-loader/src/instrument.mjs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,4 @@ Sentry.init({
55
dsn: process.env.E2E_TEST_DSN,
66
tunnel: `http://localhost:3031/`, // proxy server
77
tracesSampleRate: 1,
8-
registerEsmLoaderHooks: { onlyIncludeInstrumentedModules: true },
98
});

dev-packages/node-integration-tests/suites/esm/import-in-the-middle/app.mjs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ Sentry.init({
1313
release: '1.0',
1414
autoSessionTracking: false,
1515
transport: loggingTransport,
16-
registerEsmLoaderHooks: { onlyIncludeInstrumentedModules: true },
1716
});
1817

1918
await import('./sub-module.mjs');

dev-packages/node-integration-tests/suites/esm/import-in-the-middle/test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ afterAll(() => {
88
});
99

1010
conditionalTest({ min: 18 })('import-in-the-middle', () => {
11-
test('onlyIncludeInstrumentedModules', () => {
11+
test('should only instrument modules that we have instrumentation for', () => {
1212
const result = spawnSync('node', [join(__dirname, 'app.mjs')], { encoding: 'utf-8' });
1313
expect(result.stderr).not.toMatch('should be the only hooked modules but we just hooked');
1414
});

packages/astro/src/index.server.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ export {
1212
addEventProcessor,
1313
addIntegration,
1414
// eslint-disable-next-line deprecation/deprecation
15-
addOpenTelemetryInstrumentation,
16-
// eslint-disable-next-line deprecation/deprecation
1715
addRequestDataToEvent,
1816
amqplibIntegration,
1917
anrIntegration,

packages/aws-serverless/src/index.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,6 @@ export {
119119
spanToTraceHeader,
120120
spanToBaggageHeader,
121121
trpcMiddleware,
122-
// eslint-disable-next-line deprecation/deprecation
123-
addOpenTelemetryInstrumentation,
124122
zodErrorsIntegration,
125123
profiler,
126124
amqplibIntegration,

packages/bun/src/index.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -141,8 +141,6 @@ export {
141141
spanToTraceHeader,
142142
spanToBaggageHeader,
143143
trpcMiddleware,
144-
// eslint-disable-next-line deprecation/deprecation
145-
addOpenTelemetryInstrumentation,
146144
zodErrorsIntegration,
147145
profiler,
148146
amqplibIntegration,

packages/google-cloud-serverless/src/index.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,8 +118,6 @@ export {
118118
spanToTraceHeader,
119119
spanToBaggageHeader,
120120
trpcMiddleware,
121-
// eslint-disable-next-line deprecation/deprecation
122-
addOpenTelemetryInstrumentation,
123121
zodErrorsIntegration,
124122
profiler,
125123
amqplibIntegration,

packages/node/src/index.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,6 @@ export type { NodeOptions } from './types';
6060
export { addRequestDataToEvent, DEFAULT_USER_INCLUDES, extractRequestData } from '@sentry/core';
6161

6262
export {
63-
// eslint-disable-next-line deprecation/deprecation
64-
addOpenTelemetryInstrumentation,
6563
// These are custom variants that need to be used instead of the core one
6664
// As they have slightly different implementations
6765
continueTrace,

packages/node/src/sdk/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ function _init(
132132
}
133133

134134
if (!isCjs() && options.registerEsmLoaderHooks !== false) {
135-
maybeInitializeEsmLoader(options.registerEsmLoaderHooks === true ? undefined : options.registerEsmLoaderHooks);
135+
maybeInitializeEsmLoader();
136136
}
137137

138138
setOpenTelemetryContextAsyncContextStrategy();

packages/node/src/sdk/initOtel.ts

Lines changed: 7 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import { createAddHookMessageChannel } from 'import-in-the-middle';
1313
import { DEBUG_BUILD } from '../debug-build';
1414
import { getOpenTelemetryInstrumentationToPreload } from '../integrations/tracing';
1515
import { SentryContextManager } from '../otel/contextManager';
16-
import type { EsmLoaderHookOptions } from '../types';
1716
import { isCjs } from '../utils/commonjs';
1817
import type { NodeClient } from './client';
1918

@@ -34,30 +33,8 @@ export function initOpenTelemetry(client: NodeClient): void {
3433
client.traceProvider = provider;
3534
}
3635

37-
type ImportInTheMiddleInitData = Pick<EsmLoaderHookOptions, 'include' | 'exclude'> & {
38-
addHookMessagePort?: unknown;
39-
};
40-
41-
interface RegisterOptions {
42-
data?: ImportInTheMiddleInitData;
43-
transferList?: unknown[];
44-
}
45-
46-
function getRegisterOptions(esmHookConfig?: EsmLoaderHookOptions): RegisterOptions {
47-
// TODO(v9): Make onlyIncludeInstrumentedModules: true the default behavior.
48-
if (esmHookConfig?.onlyIncludeInstrumentedModules) {
49-
const { addHookMessagePort } = createAddHookMessageChannel();
50-
// If the user supplied include, we need to use that as a starting point or use an empty array to ensure no modules
51-
// are wrapped if they are not hooked
52-
// eslint-disable-next-line deprecation/deprecation
53-
return { data: { addHookMessagePort, include: esmHookConfig.include || [] }, transferList: [addHookMessagePort] };
54-
}
55-
56-
return { data: esmHookConfig };
57-
}
58-
5936
/** Initialize the ESM loader. */
60-
export function maybeInitializeEsmLoader(esmHookConfig?: EsmLoaderHookOptions): void {
37+
export function maybeInitializeEsmLoader(): void {
6138
const [nodeMajor = 0, nodeMinor = 0] = process.versions.node.split('.').map(Number);
6239

6340
// Register hook was added in v20.6.0 and v18.19.0
@@ -68,8 +45,12 @@ export function maybeInitializeEsmLoader(esmHookConfig?: EsmLoaderHookOptions):
6845

6946
if (!GLOBAL_OBJ._sentryEsmLoaderHookRegistered && importMetaUrl) {
7047
try {
48+
const { addHookMessagePort } = createAddHookMessageChannel();
7149
// @ts-expect-error register is available in these versions
72-
moduleModule.register('import-in-the-middle/hook.mjs', importMetaUrl, getRegisterOptions(esmHookConfig));
50+
moduleModule.register('import-in-the-middle/hook.mjs', importMetaUrl, {
51+
data: { addHookMessagePort, include: [] },
52+
transferList: [addHookMessagePort],
53+
});
7354
GLOBAL_OBJ._sentryEsmLoaderHookRegistered = true;
7455
} catch (error) {
7556
logger.warn('Failed to register ESM hook', error);
@@ -88,7 +69,6 @@ export function maybeInitializeEsmLoader(esmHookConfig?: EsmLoaderHookOptions):
8869
interface NodePreloadOptions {
8970
debug?: boolean;
9071
integrations?: string[];
91-
registerEsmLoaderHooks?: EsmLoaderHookOptions;
9272
}
9373

9474
/**
@@ -105,7 +85,7 @@ export function preloadOpenTelemetry(options: NodePreloadOptions = {}): void {
10585
}
10686

10787
if (!isCjs()) {
108-
maybeInitializeEsmLoader(options.registerEsmLoaderHooks);
88+
maybeInitializeEsmLoader();
10989
}
11090

11191
// These are all integrations that we need to pre-load to ensure they are set up before any other code runs

0 commit comments

Comments
 (0)