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 a3e9ac0852aa..138ea18b5e3d 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 @@ -18,6 +18,8 @@ const NODE_EXPORTS_IGNORE = [ 'setNodeAsyncContextStrategy', 'getDefaultIntegrationsWithoutPerformance', 'initWithoutDefaultIntegrations', + 'SentryContextManager', + 'validateOpenTelemetrySetup', ]; const nodeExports = Object.keys(SentryNode).filter(e => !NODE_EXPORTS_IGNORE.includes(e)); diff --git a/packages/node/src/index.ts b/packages/node/src/index.ts index 5cc16772189b..590ad7e82923 100644 --- a/packages/node/src/index.ts +++ b/packages/node/src/index.ts @@ -26,11 +26,13 @@ export { koaIntegration, setupKoaErrorHandler } from './integrations/tracing/koa export { connectIntegration, setupConnectErrorHandler } from './integrations/tracing/connect'; export { spotlightIntegration } from './integrations/spotlight'; +export { SentryContextManager } from './otel/contextManager'; export { init, getDefaultIntegrations, getDefaultIntegrationsWithoutPerformance, initWithoutDefaultIntegrations, + validateOpenTelemetrySetup, } from './sdk/init'; export { initOpenTelemetry } from './sdk/initOtel'; export { getAutoPerformanceIntegrations } from './integrations/tracing'; diff --git a/packages/node/src/sdk/init.ts b/packages/node/src/sdk/init.ts index 82cd26492960..83533842e76c 100644 --- a/packages/node/src/sdk/init.ts +++ b/packages/node/src/sdk/init.ts @@ -11,7 +11,11 @@ import { requestDataIntegration, startSession, } from '@sentry/core'; -import { openTelemetrySetupCheck, setOpenTelemetryContextAsyncContextStrategy } from '@sentry/opentelemetry'; +import { + openTelemetrySetupCheck, + setOpenTelemetryContextAsyncContextStrategy, + setupEventContextTrace, +} from '@sentry/opentelemetry'; import type { Client, Integration, Options } from '@sentry/types'; import { GLOBAL_OBJ, @@ -196,12 +200,16 @@ function _init( // There is no way to use this SDK without OpenTelemetry! if (!options.skipOpenTelemetrySetup) { initOpenTelemetry(client); + validateOpenTelemetrySetup(); } - validateOpenTelemetrySetup(); + setupEventContextTrace(client); } -function validateOpenTelemetrySetup(): void { +/** + * Validate that your OpenTelemetry setup is correct. + */ +export function validateOpenTelemetrySetup(): void { if (!DEBUG_BUILD) { return; } diff --git a/packages/node/src/sdk/initOtel.ts b/packages/node/src/sdk/initOtel.ts index f27635610c9c..2556b86162b5 100644 --- a/packages/node/src/sdk/initOtel.ts +++ b/packages/node/src/sdk/initOtel.ts @@ -7,7 +7,7 @@ import { SEMRESATTRS_SERVICE_VERSION, } from '@opentelemetry/semantic-conventions'; import { SDK_VERSION } from '@sentry/core'; -import { SentryPropagator, SentrySampler, SentrySpanProcessor, setupEventContextTrace } from '@sentry/opentelemetry'; +import { SentryPropagator, SentrySampler, SentrySpanProcessor } from '@sentry/opentelemetry'; import { logger } from '@sentry/utils'; import { SentryContextManager } from '../otel/contextManager'; @@ -28,8 +28,6 @@ export function initOpenTelemetry(client: NodeClient): void { diag.setLogger(otelLogger, DiagLogLevel.DEBUG); } - setupEventContextTrace(client); - const provider = setupOtel(client); client.traceProvider = provider; }