diff --git a/packages/node-core/README.md b/packages/node-core/README.md index 2cf02ba553c1..d0a17bbebd67 100644 --- a/packages/node-core/README.md +++ b/packages/node-core/README.md @@ -13,17 +13,16 @@ Unlike the `@sentry/node` SDK, this SDK comes with no OpenTelemetry auto-instrumentation out of the box. It requires the following OpenTelemetry dependencies and supports both v1 and v2 of OpenTelemetry: - `@opentelemetry/api` -- `@opentelemetry/core` - `@opentelemetry/instrumentation` - `@opentelemetry/sdk-trace-base` ## Installation ```bash -npm install @sentry/node-core @sentry/opentelemetry @opentelemetry/api @opentelemetry/core @opentelemetry/instrumentation @opentelemetry/sdk-trace-base +npm install @sentry/node-core @sentry/opentelemetry @opentelemetry/api @opentelemetry/instrumentation @opentelemetry/sdk-trace-base # Or yarn -yarn add @sentry/node-core @sentry/opentelemetry @opentelemetry/api @opentelemetry/core @opentelemetry/instrumentation @opentelemetry/sdk-trace-base +yarn add @sentry/node-core @sentry/opentelemetry @opentelemetry/api @opentelemetry/instrumentation @opentelemetry/sdk-trace-base ``` ## Usage diff --git a/packages/node-core/package.json b/packages/node-core/package.json index 6227584c5eff..3c34078b63c2 100644 --- a/packages/node-core/package.json +++ b/packages/node-core/package.json @@ -78,7 +78,6 @@ }, "peerDependencies": { "@opentelemetry/api": "^1.9.0", - "@opentelemetry/core": "^1.30.1 || ^2.1.0", "@opentelemetry/instrumentation": ">=0.57.1 <1", "@opentelemetry/sdk-trace-base": "^1.30.1 || ^2.1.0", "@opentelemetry/exporter-trace-otlp-http": ">=0.57.0 <1" @@ -87,9 +86,6 @@ "@opentelemetry/api": { "optional": true }, - "@opentelemetry/core": { - "optional": true - }, "@opentelemetry/instrumentation": { "optional": true }, @@ -108,7 +104,6 @@ }, "devDependencies": { "@opentelemetry/api": "^1.9.1", - "@opentelemetry/core": "^2.9.0", "@opentelemetry/exporter-trace-otlp-http": "^0.220.0", "@opentelemetry/instrumentation": "^0.220.0", "@opentelemetry/sdk-trace-base": "^2.9.0", diff --git a/packages/node-core/src/integrations/http/httpServerSpansIntegration.ts b/packages/node-core/src/integrations/http/httpServerSpansIntegration.ts index 33e02c6cc9e9..14cfff34e83f 100644 --- a/packages/node-core/src/integrations/http/httpServerSpansIntegration.ts +++ b/packages/node-core/src/integrations/http/httpServerSpansIntegration.ts @@ -2,8 +2,8 @@ import { errorMonitor } from 'node:events'; import type { IncomingHttpHeaders } from 'node:http'; import { context } from '@opentelemetry/api'; -import type { RPCMetadata } from '@opentelemetry/core'; -import { RPCType, setRPCMetadata } from '@opentelemetry/core'; +import type { RPCMetadata } from './vendored/rpcMetadata'; +import { RPCType, setRPCMetadata } from './vendored/rpcMetadata'; import { HTTP_CLIENT_IP, HTTP_FLAVOR, diff --git a/packages/node-core/src/integrations/http/vendored/rpcMetadata.ts b/packages/node-core/src/integrations/http/vendored/rpcMetadata.ts new file mode 100644 index 000000000000..1a564f8e971c --- /dev/null +++ b/packages/node-core/src/integrations/http/vendored/rpcMetadata.ts @@ -0,0 +1,34 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + * + * NOTICE from the Sentry authors: + * - Vendored from: https://github.com/open-telemetry/opentelemetry-js/tree/main/packages/opentelemetry-core/src/trace/rpc-metadata.ts + * - Upstream version: @opentelemetry/core@2.9.0 + * - `getRPCMetadata` and `deleteRPCMetadata` were removed since they're not used + */ + +import type { Context, Span } from '@opentelemetry/api'; +import { createContextKey } from '@opentelemetry/api'; + +const RPC_METADATA_KEY = createContextKey('OpenTelemetry SDK Context Key RPC_METADATA'); + +export enum RPCType { + HTTP = 'http', +} + +type HTTPMetadata = { + type: RPCType.HTTP; + route?: string; + span: Span; +}; + +/** + * Allows for future rpc metadata to be used with this mechanism + */ +export type RPCMetadata = HTTPMetadata; + +/** Set the current RPC metadata on the given context. */ +export function setRPCMetadata(context: Context, meta: RPCMetadata): Context { + return context.setValue(RPC_METADATA_KEY, meta); +}