From 8b9df6ca371571e4315d2736f28a8600324ed4e0 Mon Sep 17 00:00:00 2001 From: Andrei Borza Date: Wed, 26 Feb 2025 20:10:18 +0100 Subject: [PATCH 01/11] chore: Bump otel 2.0.0 --- packages/aws-serverless/package.json | 2 +- packages/nestjs/package.json | 4 +- .../sentry-nest-event-instrumentation.ts | 2 +- .../sentry-nest-instrumentation.ts | 2 +- packages/node/package.json | 12 +-- .../http/SentryHttpInstrumentation.ts | 3 +- .../SentryNodeFetchInstrumentation.ts | 3 +- packages/node/src/sdk/client.ts | 9 +-- packages/node/src/sdk/initOtel.ts | 18 +++-- packages/node/src/utils/ensureIsWrapped.ts | 2 +- packages/opentelemetry/package.json | 16 ++-- packages/opentelemetry/src/custom/client.ts | 7 +- packages/opentelemetry/src/spanExporter.ts | 7 +- .../src/utils/groupSpansWithParents.ts | 2 +- packages/opentelemetry/src/utils/spanTypes.ts | 6 +- .../opentelemetry/test/helpers/initOtel.ts | 10 +-- packages/opentelemetry/test/trace.test.ts | 2 +- packages/vercel-edge/package.json | 6 +- packages/vercel-edge/src/client.ts | 5 +- packages/vercel-edge/src/sdk.ts | 16 ++-- yarn.lock | 80 ++++++++++++------- 21 files changed, 119 insertions(+), 95 deletions(-) diff --git a/packages/aws-serverless/package.json b/packages/aws-serverless/package.json index 14844c374819..6107a3db0cea 100644 --- a/packages/aws-serverless/package.json +++ b/packages/aws-serverless/package.json @@ -65,7 +65,7 @@ }, "dependencies": { "@opentelemetry/api": "^1.9.0", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/instrumentation": "^0.200.0-dev.0", "@opentelemetry/instrumentation-aws-lambda": "0.50.3", "@opentelemetry/instrumentation-aws-sdk": "0.49.1", "@sentry/core": "9.10.1", diff --git a/packages/nestjs/package.json b/packages/nestjs/package.json index 3e67a79c1546..c88091cc96c4 100644 --- a/packages/nestjs/package.json +++ b/packages/nestjs/package.json @@ -45,8 +45,8 @@ }, "dependencies": { "@opentelemetry/api": "^1.9.0", - "@opentelemetry/core": "^1.30.1", - "@opentelemetry/instrumentation": "0.57.2", + "@opentelemetry/core": "^2.0.0-dev.0", + "@opentelemetry/instrumentation": "0.200.0-dev.0", "@opentelemetry/instrumentation-nestjs-core": "0.44.1", "@opentelemetry/semantic-conventions": "^1.30.0", "@sentry/core": "9.10.1", diff --git a/packages/nestjs/src/integrations/sentry-nest-event-instrumentation.ts b/packages/nestjs/src/integrations/sentry-nest-event-instrumentation.ts index 0e3d077ddbb6..210aa807c415 100644 --- a/packages/nestjs/src/integrations/sentry-nest-event-instrumentation.ts +++ b/packages/nestjs/src/integrations/sentry-nest-event-instrumentation.ts @@ -1,9 +1,9 @@ -import { isWrapped } from '@opentelemetry/core'; import type { InstrumentationConfig } from '@opentelemetry/instrumentation'; import { InstrumentationBase, InstrumentationNodeModuleDefinition, InstrumentationNodeModuleFile, + isWrapped, } from '@opentelemetry/instrumentation'; import { SDK_VERSION, captureException, startSpan } from '@sentry/core'; import { getEventSpanOptions } from './helpers'; diff --git a/packages/nestjs/src/integrations/sentry-nest-instrumentation.ts b/packages/nestjs/src/integrations/sentry-nest-instrumentation.ts index 58060f844888..a1bf3ecff687 100644 --- a/packages/nestjs/src/integrations/sentry-nest-instrumentation.ts +++ b/packages/nestjs/src/integrations/sentry-nest-instrumentation.ts @@ -1,9 +1,9 @@ -import { isWrapped } from '@opentelemetry/core'; import type { InstrumentationConfig } from '@opentelemetry/instrumentation'; import { InstrumentationBase, InstrumentationNodeModuleDefinition, InstrumentationNodeModuleFile, + isWrapped, } from '@opentelemetry/instrumentation'; import type { Span } from '@sentry/core'; import { diff --git a/packages/node/package.json b/packages/node/package.json index 866a2810db0e..d1b29a44ef2a 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -66,9 +66,9 @@ }, "dependencies": { "@opentelemetry/api": "^1.9.0", - "@opentelemetry/context-async-hooks": "^1.30.1", - "@opentelemetry/core": "^1.30.1", - "@opentelemetry/instrumentation": "^0.57.2", + "@opentelemetry/context-async-hooks": "^2.0.0-dev.0", + "@opentelemetry/core": "^2.0.0-dev.0", + "@opentelemetry/instrumentation": "^0.200.0-dev.0", "@opentelemetry/instrumentation-amqplib": "^0.46.1", "@opentelemetry/instrumentation-connect": "0.43.1", "@opentelemetry/instrumentation-dataloader": "0.16.1", @@ -78,7 +78,7 @@ "@opentelemetry/instrumentation-generic-pool": "0.43.1", "@opentelemetry/instrumentation-graphql": "0.47.1", "@opentelemetry/instrumentation-hapi": "0.45.2", - "@opentelemetry/instrumentation-http": "0.57.2", + "@opentelemetry/instrumentation-http": "0.200.0-dev.0", "@opentelemetry/instrumentation-ioredis": "0.47.1", "@opentelemetry/instrumentation-kafkajs": "0.7.1", "@opentelemetry/instrumentation-knex": "0.44.1", @@ -92,8 +92,8 @@ "@opentelemetry/instrumentation-redis-4": "0.46.1", "@opentelemetry/instrumentation-tedious": "0.18.1", "@opentelemetry/instrumentation-undici": "0.10.1", - "@opentelemetry/resources": "^1.30.1", - "@opentelemetry/sdk-trace-base": "^1.30.1", + "@opentelemetry/resources": "^2.0.0-dev.0", + "@opentelemetry/sdk-trace-base": "^2.0.0-dev.0", "@opentelemetry/semantic-conventions": "^1.30.0", "@prisma/instrumentation": "6.5.0", "@sentry/core": "9.10.1", diff --git a/packages/node/src/integrations/http/SentryHttpInstrumentation.ts b/packages/node/src/integrations/http/SentryHttpInstrumentation.ts index aa1f0157f2cf..8d3eca3ebc1c 100644 --- a/packages/node/src/integrations/http/SentryHttpInstrumentation.ts +++ b/packages/node/src/integrations/http/SentryHttpInstrumentation.ts @@ -1,6 +1,5 @@ /* eslint-disable max-lines */ import { context, propagation } from '@opentelemetry/api'; -import { VERSION } from '@opentelemetry/core'; import type { InstrumentationConfig } from '@opentelemetry/instrumentation'; import { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation'; import type { AggregationCounts, Client, RequestEventData, SanitizedRequestData, Scope } from '@sentry/core'; @@ -92,7 +91,7 @@ const MAX_BODY_BYTE_LENGTH = 1024 * 1024; */ export class SentryHttpInstrumentation extends InstrumentationBase { public constructor(config: SentryHttpInstrumentationOptions = {}) { - super('@sentry/instrumentation-http', VERSION, config); + super('@sentry/instrumentation-http', '2.0.0-dev.0', config); } /** @inheritdoc */ diff --git a/packages/node/src/integrations/node-fetch/SentryNodeFetchInstrumentation.ts b/packages/node/src/integrations/node-fetch/SentryNodeFetchInstrumentation.ts index f7327b095359..7bb9f401162b 100644 --- a/packages/node/src/integrations/node-fetch/SentryNodeFetchInstrumentation.ts +++ b/packages/node/src/integrations/node-fetch/SentryNodeFetchInstrumentation.ts @@ -1,4 +1,3 @@ -import { VERSION } from '@opentelemetry/core'; import type { InstrumentationConfig } from '@opentelemetry/instrumentation'; import { InstrumentationBase } from '@opentelemetry/instrumentation'; import type { SanitizedRequestData } from '@sentry/core'; @@ -56,7 +55,7 @@ export class SentryNodeFetchInstrumentation extends InstrumentationBase; public constructor(config: SentryNodeFetchInstrumentationOptions = {}) { - super('@sentry/instrumentation-node-fetch', VERSION, config); + super('@sentry/instrumentation-node-fetch', '2.0.0-dev.0', config); this._channelSubs = []; this._propagationDecisionMap = new LRUMap(100); } diff --git a/packages/node/src/sdk/client.ts b/packages/node/src/sdk/client.ts index 74f509ac42e7..ce97c0590cae 100644 --- a/packages/node/src/sdk/client.ts +++ b/packages/node/src/sdk/client.ts @@ -2,7 +2,7 @@ import * as os from 'node:os'; import type { Tracer } from '@opentelemetry/api'; import { trace } from '@opentelemetry/api'; import { registerInstrumentations } from '@opentelemetry/instrumentation'; -import type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; +import type { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import type { DynamicSamplingContext, Scope, ServerRuntimeClientOptions, TraceContext } from '@sentry/core'; import { SDK_VERSION, ServerRuntimeClient, applySdkMetadata, logger } from '@sentry/core'; import { getTraceContextForScope } from '@sentry/opentelemetry'; @@ -14,7 +14,7 @@ const DEFAULT_CLIENT_REPORT_FLUSH_INTERVAL_MS = 60_000; // 60s was chosen arbitr /** A client for using Sentry with Node & OpenTelemetry. */ export class NodeClient extends ServerRuntimeClient { - public traceProvider: BasicTracerProvider | undefined; + public traceProvider: NodeTracerProvider | undefined; private _tracer: Tracer | undefined; private _clientReportInterval: NodeJS.Timeout | undefined; private _clientReportOnExitFlushListener: (() => void) | undefined; @@ -60,10 +60,9 @@ export class NodeClient extends ServerRuntimeClient { // eslint-disable-next-line jsdoc/require-jsdoc public async flush(timeout?: number): Promise { const provider = this.traceProvider; - const spanProcessor = provider?.activeSpanProcessor; - if (spanProcessor) { - await spanProcessor.forceFlush(); + if (provider) { + await provider.forceFlush(); } if (this.getOptions().sendClientReports) { diff --git a/packages/node/src/sdk/initOtel.ts b/packages/node/src/sdk/initOtel.ts index 5cd50e2711c1..536af1f8ff4e 100644 --- a/packages/node/src/sdk/initOtel.ts +++ b/packages/node/src/sdk/initOtel.ts @@ -1,6 +1,6 @@ import moduleModule from 'module'; import { DiagLogLevel, context, diag, propagation, trace } from '@opentelemetry/api'; -import { Resource } from '@opentelemetry/resources'; +import { defaultResource, resourceFromAttributes } from '@opentelemetry/resources'; import type { SpanProcessor } from '@opentelemetry/sdk-trace-base'; import { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; import { @@ -108,16 +108,18 @@ function getPreloadMethods(integrationNames?: string[]): ((() => void) & { id: s } /** Just exported for tests. */ -export function setupOtel(client: NodeClient, options: AdditionalOpenTelemetryOptions = {}): BasicTracerProvider { +export function setupOtel(client: NodeClient, options: AdditionalOpenTelemetryOptions = {}): NodeTracerProvider { // Create and configure NodeTracerProvider const provider = new BasicTracerProvider({ sampler: new SentrySampler(client), - resource: new Resource({ - [ATTR_SERVICE_NAME]: 'node', - // eslint-disable-next-line deprecation/deprecation - [SEMRESATTRS_SERVICE_NAMESPACE]: 'sentry', - [ATTR_SERVICE_VERSION]: SDK_VERSION, - }), + resource: defaultResource().merge( + resourceFromAttributes({ + [ATTR_SERVICE_NAME]: 'node', + // eslint-disable-next-line deprecation/deprecation + [SEMRESATTRS_SERVICE_NAMESPACE]: 'sentry', + [ATTR_SERVICE_VERSION]: SDK_VERSION, + }), + ), forceFlushTimeoutMillis: 500, spanProcessors: [ new SentrySpanProcessor({ diff --git a/packages/node/src/utils/ensureIsWrapped.ts b/packages/node/src/utils/ensureIsWrapped.ts index 3a6518e7ec14..70253d9debb7 100644 --- a/packages/node/src/utils/ensureIsWrapped.ts +++ b/packages/node/src/utils/ensureIsWrapped.ts @@ -1,4 +1,4 @@ -import { isWrapped } from '@opentelemetry/core'; +import { isWrapped } from '@opentelemetry/instrumentation'; import { consoleSandbox, getClient, getGlobalScope, hasSpansEnabled, isEnabled } from '@sentry/core'; import type { NodeClient } from '../sdk/client'; import { isCjs } from './commonjs'; diff --git a/packages/opentelemetry/package.json b/packages/opentelemetry/package.json index a9460e20c248..07240569146b 100644 --- a/packages/opentelemetry/package.json +++ b/packages/opentelemetry/package.json @@ -43,18 +43,18 @@ }, "peerDependencies": { "@opentelemetry/api": "^1.9.0", - "@opentelemetry/context-async-hooks": "^1.30.1", - "@opentelemetry/core": "^1.30.1", - "@opentelemetry/instrumentation": "^0.57.1", - "@opentelemetry/sdk-trace-base": "^1.30.1", + "@opentelemetry/context-async-hooks": "^2.0.0-dev.0", + "@opentelemetry/core": "^2.0.0-dev.0", + "@opentelemetry/instrumentation": "^0.200.0-dev.0", + "@opentelemetry/sdk-trace-base": "^2.0.0-dev.0", "@opentelemetry/semantic-conventions": "^1.28.0" }, "devDependencies": { "@opentelemetry/api": "^1.9.0", - "@opentelemetry/context-async-hooks": "^1.30.1", - "@opentelemetry/core": "^1.30.1", - "@opentelemetry/instrumentation": "^0.57.2", - "@opentelemetry/sdk-trace-base": "^1.30.1", + "@opentelemetry/context-async-hooks": "^2.0.0-dev.0", + "@opentelemetry/core": "^2.0.0-dev.0", + "@opentelemetry/instrumentation": "^0.200.0-dev.0", + "@opentelemetry/sdk-trace-base": "^2.0.0-dev.0", "@opentelemetry/semantic-conventions": "^1.30.0" }, "scripts": { diff --git a/packages/opentelemetry/src/custom/client.ts b/packages/opentelemetry/src/custom/client.ts index 70afb6f10752..533146263220 100644 --- a/packages/opentelemetry/src/custom/client.ts +++ b/packages/opentelemetry/src/custom/client.ts @@ -10,7 +10,7 @@ import type { OpenTelemetryClient as OpenTelemetryClientInterface } from '../typ /* eslint-disable @typescript-eslint/no-explicit-any */ /** - * Wrap an Client class with things we need for OpenTelemetry support. + * Wrap a Client class with things we need for OpenTelemetry support. * Make sure that the Client class passed in is non-abstract! * * Usage: @@ -49,10 +49,9 @@ export function wrapClientClass< */ public async flush(timeout?: number): Promise { const provider = this.traceProvider; - const spanProcessor = provider?.activeSpanProcessor; - if (spanProcessor) { - await spanProcessor.forceFlush(); + if (provider) { + await provider.forceFlush(); } return super.flush(timeout); diff --git a/packages/opentelemetry/src/spanExporter.ts b/packages/opentelemetry/src/spanExporter.ts index 90a3d890a959..799b48a72e7c 100644 --- a/packages/opentelemetry/src/spanExporter.ts +++ b/packages/opentelemetry/src/spanExporter.ts @@ -255,7 +255,7 @@ export function createTransactionForOtelSpan(span: ReadableSpan): TransactionEve // even if `span.parentSpanId` is set // this is the case when we are starting a new trace, where we have a virtual span based on the propagationContext // We only want to continue the traceId in this case, but ignore the parent span - const parent_span_id = span.parentSpanId; + const parent_span_id = span.parentSpanContext?.spanId; const status = mapStatus(span); @@ -321,8 +321,9 @@ function createAndFinishSpanForOtelSpan(node: SpanNode, spans: SpanJSON[], sentS const span_id = span.spanContext().spanId; const trace_id = span.spanContext().traceId; + const parent_span_id = span.parentSpanContext?.spanId; - const { attributes, startTime, endTime, parentSpanId, links } = span; + const { attributes, startTime, endTime, links } = span; const { op, description, data, origin = 'manual' } = getSpanData(span); const allData = { @@ -339,7 +340,7 @@ function createAndFinishSpanForOtelSpan(node: SpanNode, spans: SpanJSON[], sentS trace_id, data: allData, description, - parent_span_id: parentSpanId, + parent_span_id, start_timestamp: spanTimeInputToSeconds(startTime), // This is [0,0] by default in OTEL, in which case we want to interpret this as no end time timestamp: spanTimeInputToSeconds(endTime) || undefined, diff --git a/packages/opentelemetry/src/utils/groupSpansWithParents.ts b/packages/opentelemetry/src/utils/groupSpansWithParents.ts index ddc779e9f760..0d0daf112493 100644 --- a/packages/opentelemetry/src/utils/groupSpansWithParents.ts +++ b/packages/opentelemetry/src/utils/groupSpansWithParents.ts @@ -33,7 +33,7 @@ export function getLocalParentId(span: ReadableSpan): string | undefined { const parentIsRemote = span.attributes[SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE] === true; // If the parentId is the trace parent ID, we pretend it's undefined // As this means the parent exists somewhere else - return !parentIsRemote ? span.parentSpanId : undefined; + return !parentIsRemote ? span.parentSpanContext?.spanId : undefined; } function createOrUpdateSpanNodeAndRefs(nodeMap: SpanMap, span: ReadableSpan): void { diff --git a/packages/opentelemetry/src/utils/spanTypes.ts b/packages/opentelemetry/src/utils/spanTypes.ts index 39c62219d2ad..5c34c1f60c0e 100644 --- a/packages/opentelemetry/src/utils/spanTypes.ts +++ b/packages/opentelemetry/src/utils/spanTypes.ts @@ -1,4 +1,4 @@ -import type { SpanKind, SpanStatus } from '@opentelemetry/api'; +import type {SpanContext, SpanKind, SpanStatus} from '@opentelemetry/api'; import type { ReadableSpan, TimedEvent } from '@opentelemetry/sdk-trace-base'; import type { AbstractSpan } from '../types'; @@ -54,9 +54,9 @@ export function spanHasName(span: SpanType): span */ export function spanHasParentId( span: SpanType, -): span is SpanType & { parentSpanId: string } { +): span is SpanType & { spanContext?: SpanContext } { const castSpan = span as ReadableSpan; - return !!castSpan.parentSpanId; + return !!castSpan.parentSpanContext?.spanId; } /** diff --git a/packages/opentelemetry/test/helpers/initOtel.ts b/packages/opentelemetry/test/helpers/initOtel.ts index 121ca0181892..5a7e9eddebd1 100644 --- a/packages/opentelemetry/test/helpers/initOtel.ts +++ b/packages/opentelemetry/test/helpers/initOtel.ts @@ -1,7 +1,7 @@ import { DiagLogLevel, context, diag, propagation, trace } from '@opentelemetry/api'; import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks'; -import { Resource } from '@opentelemetry/resources'; -import { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; +import { resourceFromAttributes } from '@opentelemetry/resources'; +import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION, @@ -52,11 +52,11 @@ export function initOtel(): void { } /** Just exported for tests. */ -export function setupOtel(client: TestClientInterface): BasicTracerProvider { +export function setupOtel(client: TestClientInterface): NodeTracerProvider { // Create and configure NodeTracerProvider - const provider = new BasicTracerProvider({ + const provider = new NodeTracerProvider({ sampler: new SentrySampler(client), - resource: new Resource({ + resource: resourceFromAttributes({ [ATTR_SERVICE_NAME]: 'opentelemetry-test', // eslint-disable-next-line deprecation/deprecation [SEMRESATTRS_SERVICE_NAMESPACE]: 'sentry', diff --git a/packages/opentelemetry/test/trace.test.ts b/packages/opentelemetry/test/trace.test.ts index a820e7502929..f2924ea2fb16 100644 --- a/packages/opentelemetry/test/trace.test.ts +++ b/packages/opentelemetry/test/trace.test.ts @@ -1928,5 +1928,5 @@ function getSpanAttributes(span: AbstractSpan): Record | undefi } function getSpanParentSpanId(span: AbstractSpan): string | undefined { - return (span as ReadableSpan).parentSpanId; + return (span as ReadableSpan).parentSpanContext?.spanId; } diff --git a/packages/vercel-edge/package.json b/packages/vercel-edge/package.json index c3c9f8b7a967..4a4d3e64ad03 100644 --- a/packages/vercel-edge/package.json +++ b/packages/vercel-edge/package.json @@ -44,9 +44,9 @@ }, "devDependencies": { "@edge-runtime/types": "3.0.1", - "@opentelemetry/core": "^1.30.1", - "@opentelemetry/resources": "^1.30.1", - "@opentelemetry/sdk-trace-base": "^1.30.1", + "@opentelemetry/core": "^2.0.0-dev.0", + "@opentelemetry/resources": "^2.0.0-dev.0", + "@opentelemetry/sdk-trace-base": "^2.0.0-dev.0", "@opentelemetry/semantic-conventions": "^1.28.0", "@sentry/opentelemetry": "9.10.1" }, diff --git a/packages/vercel-edge/src/client.ts b/packages/vercel-edge/src/client.ts index 09987eacd030..469ed82b3da8 100644 --- a/packages/vercel-edge/src/client.ts +++ b/packages/vercel-edge/src/client.ts @@ -41,10 +41,9 @@ export class VercelEdgeClient extends ServerRuntimeClient { const provider = this.traceProvider; - const spanProcessor = provider?.activeSpanProcessor; - if (spanProcessor) { - await spanProcessor.forceFlush(); + if (provider) { + await provider.forceFlush(); } if (this.getOptions().sendClientReports) { diff --git a/packages/vercel-edge/src/sdk.ts b/packages/vercel-edge/src/sdk.ts index 8c3939d26cba..b327ee8b8fc1 100644 --- a/packages/vercel-edge/src/sdk.ts +++ b/packages/vercel-edge/src/sdk.ts @@ -1,5 +1,5 @@ import { DiagLogLevel, context, diag, propagation, trace } from '@opentelemetry/api'; -import { Resource } from '@opentelemetry/resources'; +import { defaultResource, resourceFromAttributes } from '@opentelemetry/resources'; import { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; import { ATTR_SERVICE_NAME, @@ -155,12 +155,14 @@ export function setupOtel(client: VercelEdgeClient): void { // Create and configure NodeTracerProvider const provider = new BasicTracerProvider({ sampler: new SentrySampler(client), - resource: new Resource({ - [ATTR_SERVICE_NAME]: 'edge', - // eslint-disable-next-line deprecation/deprecation - [SEMRESATTRS_SERVICE_NAMESPACE]: 'sentry', - [ATTR_SERVICE_VERSION]: SDK_VERSION, - }), + resource: defaultResource().merge( + resourceFromAttributes({ + [ATTR_SERVICE_NAME]: 'edge', + // eslint-disable-next-line deprecation/deprecation + [SEMRESATTRS_SERVICE_NAMESPACE]: 'sentry', + [ATTR_SERVICE_VERSION]: SDK_VERSION, + }), + ), forceFlushTimeoutMillis: 500, spanProcessors: [ new SentrySpanProcessor({ diff --git a/yarn.lock b/yarn.lock index 27c0b61bb063..aa73def7f534 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5420,6 +5420,13 @@ dependencies: "@octokit/openapi-types" "^18.0.0" +"@opentelemetry/api-logs@0.200.0-dev.0": + version "0.200.0-dev.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.200.0-dev.0.tgz#1522df44b17bf68b8f709d6251418d8082fb8808" + integrity sha512-wZzFxB2MSY9aYV0e845vphACuln0MYoiDJLhklnv2nhJqOn5pLMz0GfIK78VP7BVI0+fVW1rlskr7Aw7Aq4oQA== + dependencies: + "@opentelemetry/api" "^1.3.0" + "@opentelemetry/api-logs@0.52.1": version "0.52.1" resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.52.1.tgz#52906375da4d64c206b0c4cb8ffa209214654ecc" @@ -5439,12 +5446,19 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.0.tgz#d03eba68273dc0f7509e2a3d5cba21eae10379fe" integrity sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg== -"@opentelemetry/context-async-hooks@^1.30.1": - version "1.30.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-1.30.1.tgz#4f76280691a742597fd0bf682982126857622948" - integrity sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA== +"@opentelemetry/context-async-hooks@^2.0.0-dev.0": + version "2.0.0-dev.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-2.0.0-dev.0.tgz#1b4d011c7e74b5fe647c3d06254c7a893a30f79e" + integrity sha512-5myaYGXVBVIP4wZVoUpMcI80+Wn4sG64kuwc3OO2LVi4jZxMv/hKZA7IO8WvgQMP9gHSWDSS4FN2VXuOyoYmcw== + +"@opentelemetry/core@2.0.0-dev.0", "@opentelemetry/core@^2.0.0-dev.0": + version "2.0.0-dev.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-2.0.0-dev.0.tgz#c5437ecee5055c8a195ad88d13f757100588e62f" + integrity sha512-uDNKPs29s8P54bP+ol/nFaRujClCeyan5/klpZYUGMt7InwITqRW93gDYdmnlJjFKVh8/tyWjUvyWMe1HdLdAg== + dependencies: + "@opentelemetry/semantic-conventions" "^1.29.0" -"@opentelemetry/core@1.30.1", "@opentelemetry/core@^1.1.0", "@opentelemetry/core@^1.26.0", "@opentelemetry/core@^1.30.1", "@opentelemetry/core@^1.8.0": +"@opentelemetry/core@^1.1.0", "@opentelemetry/core@^1.26.0", "@opentelemetry/core@^1.8.0": version "1.30.1" resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.30.1.tgz#a0b468bb396358df801881709ea38299fc30ab27" integrity sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ== @@ -5545,16 +5559,15 @@ "@opentelemetry/instrumentation" "^0.57.1" "@opentelemetry/semantic-conventions" "^1.27.0" -"@opentelemetry/instrumentation-http@0.57.2": - version "0.57.2" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-http/-/instrumentation-http-0.57.2.tgz#f425eda67b6241c3abe08e4ea972169b85ef3064" - integrity sha512-1Uz5iJ9ZAlFOiPuwYg29Bf7bJJc/GeoeJIFKJYQf67nTVKFe8RHbEtxgkOmK4UGZNHKXcpW4P8cWBYzBn1USpg== +"@opentelemetry/instrumentation-http@0.200.0-dev.0": + version "0.200.0-dev.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-http/-/instrumentation-http-0.200.0-dev.0.tgz#a74b441160588cc6a69d7b8c8d780bcd2f7eb196" + integrity sha512-kBe9XqcfpWonxGWskO+QFnTr+ALehojAuvYEEzsKkME3xm9lnzkZoYPXg5CMg7tEqVAWBZmtQ/A9Q1nRRjyfeQ== dependencies: - "@opentelemetry/core" "1.30.1" - "@opentelemetry/instrumentation" "0.57.2" - "@opentelemetry/semantic-conventions" "1.28.0" + "@opentelemetry/core" "2.0.0-dev.0" + "@opentelemetry/instrumentation" "0.200.0-dev.0" + "@opentelemetry/semantic-conventions" "^1.29.0" forwarded-parse "2.1.2" - semver "^7.5.2" "@opentelemetry/instrumentation-ioredis@0.47.1": version "0.47.1" @@ -5678,7 +5691,18 @@ "@opentelemetry/core" "^1.8.0" "@opentelemetry/instrumentation" "^0.57.1" -"@opentelemetry/instrumentation@0.57.2", "@opentelemetry/instrumentation@^0.52.0 || ^0.53.0 || ^0.54.0 || ^0.55.0 || ^0.56.0 || ^0.57.0", "@opentelemetry/instrumentation@^0.57.1", "@opentelemetry/instrumentation@^0.57.2": +"@opentelemetry/instrumentation@0.200.0-dev.0", "@opentelemetry/instrumentation@^0.200.0-dev.0": + version "0.200.0-dev.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.200.0-dev.0.tgz#a2387daba680931bd88b6473fadcc2cea5f24bf8" + integrity sha512-t1Z0lRQVYDnBEim3QY4df1SkdqEgEESYSyXemQWQNWsWtx2H6PhK+yEI8nQtU/J0KPJ0MfZ1xWoxJRRY5NRKbA== + dependencies: + "@opentelemetry/api-logs" "0.200.0-dev.0" + "@types/shimmer" "^1.2.0" + import-in-the-middle "^1.8.1" + require-in-the-middle "^7.1.1" + shimmer "^1.2.1" + +"@opentelemetry/instrumentation@^0.52.0 || ^0.53.0 || ^0.54.0 || ^0.55.0 || ^0.56.0 || ^0.57.0", "@opentelemetry/instrumentation@^0.57.1": version "0.57.2" resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz#8924549d7941ba1b5c6f04d5529cf48330456d1d" integrity sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg== @@ -5712,29 +5736,29 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/redis-common/-/redis-common-0.36.2.tgz#906ac8e4d804d4109f3ebd5c224ac988276fdc47" integrity sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g== -"@opentelemetry/resources@1.30.1", "@opentelemetry/resources@^1.30.1": - version "1.30.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-1.30.1.tgz#a4eae17ebd96947fdc7a64f931ca4b71e18ce964" - integrity sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA== +"@opentelemetry/resources@2.0.0-dev.0", "@opentelemetry/resources@^2.0.0-dev.0": + version "2.0.0-dev.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-2.0.0-dev.0.tgz#1983d56e84fdfbdced0a5b76b325740049f45d62" + integrity sha512-TpJtctWmdIxDATecqMd92Qv0MifzgvI0YN4uEKQgAdioHJ44Rl1zTOrheUYz/66Y4iUGWUP5bm3irFOb1ymt9A== dependencies: - "@opentelemetry/core" "1.30.1" - "@opentelemetry/semantic-conventions" "1.28.0" + "@opentelemetry/core" "2.0.0-dev.0" + "@opentelemetry/semantic-conventions" "^1.29.0" -"@opentelemetry/sdk-trace-base@^1.30.1": - version "1.30.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.1.tgz#41a42234096dc98e8f454d24551fc80b816feb34" - integrity sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg== +"@opentelemetry/sdk-trace-base@^2.0.0-dev.0": + version "2.0.0-dev.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.0.0-dev.0.tgz#320a259ea4332b4d9452e6bd309862c4c2d08e9e" + integrity sha512-zULpgNZNGS6LM+rI6fw2fraAVvIm3aI/DfcuwxRvPa6Yqf9kR7FQk1EdB8Tf2AJm+UWakGPpRbEhkv1KqPVu2w== dependencies: - "@opentelemetry/core" "1.30.1" - "@opentelemetry/resources" "1.30.1" - "@opentelemetry/semantic-conventions" "1.28.0" + "@opentelemetry/core" "2.0.0-dev.0" + "@opentelemetry/resources" "2.0.0-dev.0" + "@opentelemetry/semantic-conventions" "^1.29.0" "@opentelemetry/semantic-conventions@1.28.0": version "1.28.0" resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz#337fb2bca0453d0726696e745f50064411f646d6" integrity sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA== -"@opentelemetry/semantic-conventions@^1.25.1", "@opentelemetry/semantic-conventions@^1.27.0", "@opentelemetry/semantic-conventions@^1.28.0", "@opentelemetry/semantic-conventions@^1.30.0": +"@opentelemetry/semantic-conventions@^1.25.1", "@opentelemetry/semantic-conventions@^1.27.0", "@opentelemetry/semantic-conventions@^1.28.0", "@opentelemetry/semantic-conventions@^1.29.0", "@opentelemetry/semantic-conventions@^1.30.0": version "1.30.0" resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.30.0.tgz#3a42c4c475482f2ec87c12aad98832dc0087dc9a" integrity sha512-4VlGgo32k2EQ2wcCY3vEU28A0O13aOtHz3Xt2/2U5FAh9EfhD6t6DqL5Z6yAnRCntbTFDU4YfbpyzSlHNWycPw== From 26381899936cef66b7ced8b4bd88bc86b9894b50 Mon Sep 17 00:00:00 2001 From: Andrei Borza Date: Thu, 27 Feb 2025 16:51:16 +0100 Subject: [PATCH 02/11] Replace sdk-trace-base with sdk-trace-node --- packages/node/src/types.ts | 2 +- packages/node/test/helpers/mockSdkInit.ts | 8 ++-- .../test/integration/transactions.test.ts | 2 +- packages/opentelemetry/package.json | 4 +- packages/opentelemetry/src/custom/client.ts | 4 +- packages/opentelemetry/src/sampler.ts | 4 +- packages/opentelemetry/src/spanExporter.ts | 2 +- packages/opentelemetry/src/spanProcessor.ts | 2 +- packages/opentelemetry/src/types.ts | 4 +- .../src/utils/getRequestSpanData.ts | 2 +- .../src/utils/groupSpansWithParents.ts | 2 +- packages/opentelemetry/src/utils/spanTypes.ts | 4 +- .../test/asyncContextStrategy.test.ts | 4 +- .../opentelemetry/test/helpers/mockSdkInit.ts | 8 ++-- .../test/integration/transactions.test.ts | 2 +- packages/opentelemetry/test/sampler.test.ts | 2 +- packages/opentelemetry/test/trace.test.ts | 4 +- .../test/utils/getActiveSpan.test.ts | 6 +-- .../test/utils/setupCheck.test.ts | 10 ++--- .../test/utils/setupEventContextTrace.test.ts | 4 +- packages/vercel-edge/src/client.ts | 4 +- yarn.lock | 38 +++++++++++++++++++ 22 files changed, 79 insertions(+), 43 deletions(-) diff --git a/packages/node/src/types.ts b/packages/node/src/types.ts index 9223619522e6..56c225ff643f 100644 --- a/packages/node/src/types.ts +++ b/packages/node/src/types.ts @@ -1,6 +1,6 @@ import type { Span as WriteableSpan } from '@opentelemetry/api'; import type { Instrumentation } from '@opentelemetry/instrumentation'; -import type { ReadableSpan, SpanProcessor } from '@opentelemetry/sdk-trace-base'; +import type { ReadableSpan, SpanProcessor } from '@opentelemetry/sdk-trace-node'; import type { ClientOptions, Options, SamplingContext, Scope, Span, TracePropagationTargets } from '@sentry/core'; import type { NodeTransportOptions } from './transports'; diff --git a/packages/node/test/helpers/mockSdkInit.ts b/packages/node/test/helpers/mockSdkInit.ts index e482dac6ed08..c6142d4062ba 100644 --- a/packages/node/test/helpers/mockSdkInit.ts +++ b/packages/node/test/helpers/mockSdkInit.ts @@ -1,5 +1,5 @@ import { ProxyTracerProvider, context, propagation, trace } from '@opentelemetry/api'; -import { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; +import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import { getClient, getCurrentScope, getGlobalScope, getIsolationScope } from '@sentry/core'; import type { NodeClient } from '../../src'; @@ -27,7 +27,7 @@ export function mockSdkInit(options?: Partial) { }); } -export function cleanupOtel(_provider?: BasicTracerProvider): void { +export function cleanupOtel(_provider?: NodeTracerProvider): void { const provider = getProvider(_provider); if (!provider) { @@ -43,14 +43,14 @@ export function cleanupOtel(_provider?: BasicTracerProvider): void { propagation.disable(); } -export function getProvider(_provider?: BasicTracerProvider): BasicTracerProvider | undefined { +export function getProvider(_provider?: NodeTracerProvider): NodeTracerProvider | undefined { let provider = _provider || getClient()?.traceProvider || trace.getTracerProvider(); if (provider instanceof ProxyTracerProvider) { provider = provider.getDelegate(); } - if (!(provider instanceof BasicTracerProvider)) { + if (!(provider instanceof NodeTracerProvider)) { return undefined; } diff --git a/packages/node/test/integration/transactions.test.ts b/packages/node/test/integration/transactions.test.ts index a7207d30cbac..4fc8965df523 100644 --- a/packages/node/test/integration/transactions.test.ts +++ b/packages/node/test/integration/transactions.test.ts @@ -1,5 +1,5 @@ import { TraceFlags, context, trace } from '@opentelemetry/api'; -import type { SpanProcessor } from '@opentelemetry/sdk-trace-base'; +import type { SpanProcessor } from '@opentelemetry/sdk-trace-node'; import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '@sentry/core'; import { logger } from '@sentry/core'; import type { TransactionEvent } from '@sentry/core'; diff --git a/packages/opentelemetry/package.json b/packages/opentelemetry/package.json index 07240569146b..a69fc6ed3f8b 100644 --- a/packages/opentelemetry/package.json +++ b/packages/opentelemetry/package.json @@ -46,7 +46,7 @@ "@opentelemetry/context-async-hooks": "^2.0.0-dev.0", "@opentelemetry/core": "^2.0.0-dev.0", "@opentelemetry/instrumentation": "^0.200.0-dev.0", - "@opentelemetry/sdk-trace-base": "^2.0.0-dev.0", + "@opentelemetry/sdk-trace-node": "^2.0.0-dev.0", "@opentelemetry/semantic-conventions": "^1.28.0" }, "devDependencies": { @@ -54,7 +54,7 @@ "@opentelemetry/context-async-hooks": "^2.0.0-dev.0", "@opentelemetry/core": "^2.0.0-dev.0", "@opentelemetry/instrumentation": "^0.200.0-dev.0", - "@opentelemetry/sdk-trace-base": "^2.0.0-dev.0", + "@opentelemetry/sdk-trace-node": "^2.0.0-dev.0", "@opentelemetry/semantic-conventions": "^1.30.0" }, "scripts": { diff --git a/packages/opentelemetry/src/custom/client.ts b/packages/opentelemetry/src/custom/client.ts index 533146263220..d64804facb94 100644 --- a/packages/opentelemetry/src/custom/client.ts +++ b/packages/opentelemetry/src/custom/client.ts @@ -1,6 +1,6 @@ import type { Tracer } from '@opentelemetry/api'; import { trace } from '@opentelemetry/api'; -import type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; +import type { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import type { Client } from '@sentry/core'; import { SDK_VERSION } from '@sentry/core'; import type { OpenTelemetryClient as OpenTelemetryClientInterface } from '../types'; @@ -23,7 +23,7 @@ export function wrapClientClass< >(ClientClass: ClassConstructor): WrappedClassConstructor { // @ts-expect-error We just assume that this is non-abstract, if you pass in an abstract class this would make it non-abstract class OpenTelemetryClient extends ClientClass implements OpenTelemetryClientInterface { - public traceProvider: BasicTracerProvider | undefined; + public traceProvider: NodeTracerProvider | undefined; private _tracer: Tracer | undefined; public constructor(...args: any[]) { diff --git a/packages/opentelemetry/src/sampler.ts b/packages/opentelemetry/src/sampler.ts index 20a04f9cc9e7..88f9656ae42d 100644 --- a/packages/opentelemetry/src/sampler.ts +++ b/packages/opentelemetry/src/sampler.ts @@ -2,8 +2,8 @@ import type { Context, Span, TraceState as TraceStateInterface } from '@opentelemetry/api'; import { SpanKind, isSpanContextValid, trace } from '@opentelemetry/api'; import { TraceState } from '@opentelemetry/core'; -import type { Sampler, SamplingResult } from '@opentelemetry/sdk-trace-base'; -import { SamplingDecision } from '@opentelemetry/sdk-trace-base'; +import type { Sampler, SamplingResult } from '@opentelemetry/sdk-trace-node'; +import { SamplingDecision } from '@opentelemetry/sdk-trace-node'; import { ATTR_HTTP_REQUEST_METHOD, ATTR_URL_FULL, diff --git a/packages/opentelemetry/src/spanExporter.ts b/packages/opentelemetry/src/spanExporter.ts index 799b48a72e7c..480714f03774 100644 --- a/packages/opentelemetry/src/spanExporter.ts +++ b/packages/opentelemetry/src/spanExporter.ts @@ -1,7 +1,7 @@ /* eslint-disable max-lines */ import type { Span } from '@opentelemetry/api'; import { SpanKind } from '@opentelemetry/api'; -import type { ReadableSpan } from '@opentelemetry/sdk-trace-base'; +import type { ReadableSpan } from '@opentelemetry/sdk-trace-node'; import { ATTR_HTTP_RESPONSE_STATUS_CODE, SEMATTRS_HTTP_STATUS_CODE } from '@opentelemetry/semantic-conventions'; import type { SpanAttributes, diff --git a/packages/opentelemetry/src/spanProcessor.ts b/packages/opentelemetry/src/spanProcessor.ts index 3430456caaee..365e1a81a3a6 100644 --- a/packages/opentelemetry/src/spanProcessor.ts +++ b/packages/opentelemetry/src/spanProcessor.ts @@ -1,6 +1,6 @@ import type { Context } from '@opentelemetry/api'; import { ROOT_CONTEXT, trace } from '@opentelemetry/api'; -import type { ReadableSpan, Span, SpanProcessor as SpanProcessorInterface } from '@opentelemetry/sdk-trace-base'; +import type { ReadableSpan, Span, SpanProcessor as SpanProcessorInterface } from '@opentelemetry/sdk-trace-node'; import { addChildSpanToSpan, getClient, diff --git a/packages/opentelemetry/src/types.ts b/packages/opentelemetry/src/types.ts index 807e9b1d857f..1b4e95bfac57 100644 --- a/packages/opentelemetry/src/types.ts +++ b/packages/opentelemetry/src/types.ts @@ -1,10 +1,10 @@ import type { Span as WriteableSpan, SpanKind, Tracer } from '@opentelemetry/api'; -import type { BasicTracerProvider, ReadableSpan } from '@opentelemetry/sdk-trace-base'; +import type { NodeTracerProvider, ReadableSpan } from '@opentelemetry/sdk-trace-node'; import type { Scope, Span, StartSpanOptions } from '@sentry/core'; export interface OpenTelemetryClient { tracer: Tracer; - traceProvider: BasicTracerProvider | undefined; + traceProvider: NodeTracerProvider | undefined; } export interface OpenTelemetrySpanContext extends StartSpanOptions { diff --git a/packages/opentelemetry/src/utils/getRequestSpanData.ts b/packages/opentelemetry/src/utils/getRequestSpanData.ts index cc27aadf7a78..f848f8f0b9b7 100644 --- a/packages/opentelemetry/src/utils/getRequestSpanData.ts +++ b/packages/opentelemetry/src/utils/getRequestSpanData.ts @@ -1,5 +1,5 @@ import type { Span } from '@opentelemetry/api'; -import type { ReadableSpan } from '@opentelemetry/sdk-trace-base'; +import type { ReadableSpan } from '@opentelemetry/sdk-trace-node'; import { ATTR_HTTP_REQUEST_METHOD, ATTR_URL_FULL, diff --git a/packages/opentelemetry/src/utils/groupSpansWithParents.ts b/packages/opentelemetry/src/utils/groupSpansWithParents.ts index 0d0daf112493..12cbd4efcc03 100644 --- a/packages/opentelemetry/src/utils/groupSpansWithParents.ts +++ b/packages/opentelemetry/src/utils/groupSpansWithParents.ts @@ -1,4 +1,4 @@ -import type { ReadableSpan } from '@opentelemetry/sdk-trace-base'; +import type { ReadableSpan } from '@opentelemetry/sdk-trace-node'; import { SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE } from '../semanticAttributes'; export interface SpanNode { diff --git a/packages/opentelemetry/src/utils/spanTypes.ts b/packages/opentelemetry/src/utils/spanTypes.ts index 5c34c1f60c0e..870eb201e62d 100644 --- a/packages/opentelemetry/src/utils/spanTypes.ts +++ b/packages/opentelemetry/src/utils/spanTypes.ts @@ -1,5 +1,5 @@ -import type {SpanContext, SpanKind, SpanStatus} from '@opentelemetry/api'; -import type { ReadableSpan, TimedEvent } from '@opentelemetry/sdk-trace-base'; +import type { SpanContext, SpanKind, SpanStatus } from '@opentelemetry/api'; +import type { ReadableSpan, TimedEvent } from '@opentelemetry/sdk-trace-node'; import type { AbstractSpan } from '../types'; diff --git a/packages/opentelemetry/test/asyncContextStrategy.test.ts b/packages/opentelemetry/test/asyncContextStrategy.test.ts index cdbb91774561..fd91017ddbd1 100644 --- a/packages/opentelemetry/test/asyncContextStrategy.test.ts +++ b/packages/opentelemetry/test/asyncContextStrategy.test.ts @@ -1,4 +1,4 @@ -import type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; +import type { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import { Scope as ScopeClass, getCurrentScope, @@ -16,7 +16,7 @@ import { setupOtel } from './helpers/initOtel'; import { cleanupOtel } from './helpers/mockSdkInit'; describe('asyncContextStrategy', () => { - let provider: BasicTracerProvider | undefined; + let provider: NodeTracerProvider | undefined; beforeEach(() => { getCurrentScope().clear(); diff --git a/packages/opentelemetry/test/helpers/mockSdkInit.ts b/packages/opentelemetry/test/helpers/mockSdkInit.ts index 0bcf1b101896..6d3a2f5dc7e7 100644 --- a/packages/opentelemetry/test/helpers/mockSdkInit.ts +++ b/packages/opentelemetry/test/helpers/mockSdkInit.ts @@ -1,5 +1,5 @@ import { ProxyTracerProvider, context, propagation, trace } from '@opentelemetry/api'; -import { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; +import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import type { ClientOptions, Options } from '@sentry/core'; import { getClient } from '@sentry/core'; @@ -35,7 +35,7 @@ export function mockSdkInit(options?: Partial) { init({ dsn: PUBLIC_DSN, ...options }); } -export async function cleanupOtel(_provider?: BasicTracerProvider): Promise { +export async function cleanupOtel(_provider?: NodeTracerProvider): Promise { clearOpenTelemetrySetupCheck(); const provider = getProvider(_provider); @@ -53,14 +53,14 @@ export async function cleanupOtel(_provider?: BasicTracerProvider): Promise()?.traceProvider || trace.getTracerProvider(); if (provider instanceof ProxyTracerProvider) { provider = provider.getDelegate(); } - if (!(provider instanceof BasicTracerProvider)) { + if (!(provider instanceof NodeTracerProvider)) { return undefined; } diff --git a/packages/opentelemetry/test/integration/transactions.test.ts b/packages/opentelemetry/test/integration/transactions.test.ts index a745b9187e57..7b4e6ec9d126 100644 --- a/packages/opentelemetry/test/integration/transactions.test.ts +++ b/packages/opentelemetry/test/integration/transactions.test.ts @@ -1,7 +1,7 @@ import type { SpanContext } from '@opentelemetry/api'; import { ROOT_CONTEXT } from '@opentelemetry/api'; import { TraceFlags, context, trace } from '@opentelemetry/api'; -import type { SpanProcessor } from '@opentelemetry/sdk-trace-base'; +import type { SpanProcessor } from '@opentelemetry/sdk-trace-node'; import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, diff --git a/packages/opentelemetry/test/sampler.test.ts b/packages/opentelemetry/test/sampler.test.ts index 984a65a50a04..56f31b409f95 100644 --- a/packages/opentelemetry/test/sampler.test.ts +++ b/packages/opentelemetry/test/sampler.test.ts @@ -1,6 +1,6 @@ import { SpanKind, context, trace } from '@opentelemetry/api'; import { TraceState } from '@opentelemetry/core'; -import { SamplingDecision } from '@opentelemetry/sdk-trace-base'; +import { SamplingDecision } from '@opentelemetry/sdk-trace-node'; import { ATTR_HTTP_REQUEST_METHOD } from '@opentelemetry/semantic-conventions'; import { generateSpanId, generateTraceId } from '@sentry/core'; import { describe, afterEach, vi, expect, it } from 'vitest'; diff --git a/packages/opentelemetry/test/trace.test.ts b/packages/opentelemetry/test/trace.test.ts index f2924ea2fb16..10421e2bafb1 100644 --- a/packages/opentelemetry/test/trace.test.ts +++ b/packages/opentelemetry/test/trace.test.ts @@ -3,8 +3,8 @@ import type { Span, TimeInput } from '@opentelemetry/api'; import { ROOT_CONTEXT } from '@opentelemetry/api'; import { SpanKind } from '@opentelemetry/api'; import { TraceFlags, context, trace } from '@opentelemetry/api'; -import type { ReadableSpan } from '@opentelemetry/sdk-trace-base'; -import { Span as SpanClass } from '@opentelemetry/sdk-trace-base'; +import type { ReadableSpan } from '@opentelemetry/sdk-trace-node'; +import { Span as SpanClass } from '@opentelemetry/sdk-trace-node'; import { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, diff --git a/packages/opentelemetry/test/utils/getActiveSpan.test.ts b/packages/opentelemetry/test/utils/getActiveSpan.test.ts index 964c75bc4ed9..d2bbe181a982 100644 --- a/packages/opentelemetry/test/utils/getActiveSpan.test.ts +++ b/packages/opentelemetry/test/utils/getActiveSpan.test.ts @@ -1,5 +1,5 @@ import { trace } from '@opentelemetry/api'; -import type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; +import type { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import { getRootSpan } from '@sentry/core'; import { describe, afterEach, beforeEach, expect, it } from 'vitest'; @@ -9,7 +9,7 @@ import { setupOtel } from '../helpers/initOtel'; import { cleanupOtel } from '../helpers/mockSdkInit'; describe('getActiveSpan', () => { - let provider: BasicTracerProvider | undefined; + let provider: NodeTracerProvider | undefined; beforeEach(() => { const client = new TestClient(getDefaultTestClientOptions()); @@ -94,7 +94,7 @@ describe('getActiveSpan', () => { }); describe('getRootSpan', () => { - let provider: BasicTracerProvider | undefined; + let provider: NodeTracerProvider | undefined; beforeEach(() => { const client = new TestClient(getDefaultTestClientOptions({ tracesSampleRate: 1 })); diff --git a/packages/opentelemetry/test/utils/setupCheck.test.ts b/packages/opentelemetry/test/utils/setupCheck.test.ts index 53d8437e119a..2c3d4bcf228b 100644 --- a/packages/opentelemetry/test/utils/setupCheck.test.ts +++ b/packages/opentelemetry/test/utils/setupCheck.test.ts @@ -1,4 +1,4 @@ -import { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; +import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import { describe, afterEach, beforeEach, expect, it } from 'vitest'; import { SentrySampler } from '../../src/sampler'; @@ -9,7 +9,7 @@ import { setupOtel } from '../helpers/initOtel'; import { cleanupOtel } from '../helpers/mockSdkInit'; describe('openTelemetrySetupCheck', () => { - let provider: BasicTracerProvider | undefined; + let provider: NodeTracerProvider | undefined; beforeEach(() => { cleanupOtel(provider); @@ -34,12 +34,10 @@ describe('openTelemetrySetupCheck', () => { it('returns partial setup parts', () => { const client = new TestClient(getDefaultTestClientOptions()); - provider = new BasicTracerProvider({ + provider = new NodeTracerProvider({ sampler: new SentrySampler(client), + spanProcessors: [new SentrySpanProcessor()], }); - // We want to test this deprecated case also works - // eslint-disable-next-line deprecation/deprecation - provider.addSpanProcessor(new SentrySpanProcessor()); const setup = openTelemetrySetupCheck(); expect(setup).toEqual(['SentrySampler', 'SentrySpanProcessor']); diff --git a/packages/opentelemetry/test/utils/setupEventContextTrace.test.ts b/packages/opentelemetry/test/utils/setupEventContextTrace.test.ts index 21f7279fd48d..e0d25cbb6158 100644 --- a/packages/opentelemetry/test/utils/setupEventContextTrace.test.ts +++ b/packages/opentelemetry/test/utils/setupEventContextTrace.test.ts @@ -1,4 +1,4 @@ -import type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; +import type { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import { captureException, setCurrentClient } from '@sentry/core'; import { describe, afterEach, beforeEach, expect, it, vi, afterAll } from 'vitest'; @@ -13,7 +13,7 @@ const PUBLIC_DSN = 'https://username@domain/123'; describe('setupEventContextTrace', () => { const beforeSend = vi.fn(() => null); let client: TestClientInterface; - let provider: BasicTracerProvider | undefined; + let provider: NodeTracerProvider | undefined; beforeEach(() => { client = new TestClient( diff --git a/packages/vercel-edge/src/client.ts b/packages/vercel-edge/src/client.ts index 469ed82b3da8..0eb52b3865da 100644 --- a/packages/vercel-edge/src/client.ts +++ b/packages/vercel-edge/src/client.ts @@ -2,7 +2,7 @@ import type { ServerRuntimeClientOptions } from '@sentry/core'; import { applySdkMetadata } from '@sentry/core'; import { ServerRuntimeClient } from '@sentry/core'; -import type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; +import type { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import type { VercelEdgeClientOptions } from './types'; declare const process: { @@ -16,7 +16,7 @@ declare const process: { * @see ServerRuntimeClient for usage documentation. */ export class VercelEdgeClient extends ServerRuntimeClient { - public traceProvider: BasicTracerProvider | undefined; + public traceProvider: NodeTracerProvider | undefined; /** * Creates a new Vercel Edge Runtime SDK instance. diff --git a/yarn.lock b/yarn.lock index aa73def7f534..f47644f79b93 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5446,11 +5446,23 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.0.tgz#d03eba68273dc0f7509e2a3d5cba21eae10379fe" integrity sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg== +"@opentelemetry/context-async-hooks@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-2.0.0.tgz#c98a727238ca199cda943780acf6124af8d8cd80" + integrity sha512-IEkJGzK1A9v3/EHjXh3s2IiFc6L4jfK+lNgKVgUjeUJQRRhnVFMIO3TAvKwonm9O1HebCuoOt98v8bZW7oVQHA== + "@opentelemetry/context-async-hooks@^2.0.0-dev.0": version "2.0.0-dev.0" resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-2.0.0-dev.0.tgz#1b4d011c7e74b5fe647c3d06254c7a893a30f79e" integrity sha512-5myaYGXVBVIP4wZVoUpMcI80+Wn4sG64kuwc3OO2LVi4jZxMv/hKZA7IO8WvgQMP9gHSWDSS4FN2VXuOyoYmcw== +"@opentelemetry/core@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-2.0.0.tgz#37e9f0e9ddec4479b267aca6f32d88757c941b3a" + integrity sha512-SLX36allrcnVaPYG3R78F/UZZsBsvbc7lMCLx37LyH5MJ1KAAZ2E3mW9OAD3zGz0G8q/BtoS5VUrjzDydhD6LQ== + dependencies: + "@opentelemetry/semantic-conventions" "^1.29.0" + "@opentelemetry/core@2.0.0-dev.0", "@opentelemetry/core@^2.0.0-dev.0": version "2.0.0-dev.0" resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-2.0.0-dev.0.tgz#c5437ecee5055c8a195ad88d13f757100588e62f" @@ -5736,6 +5748,14 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/redis-common/-/redis-common-0.36.2.tgz#906ac8e4d804d4109f3ebd5c224ac988276fdc47" integrity sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g== +"@opentelemetry/resources@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-2.0.0.tgz#15c04794c32b7d0b3c7589225ece6ae9bba25989" + integrity sha512-rnZr6dML2z4IARI4zPGQV4arDikF/9OXZQzrC01dLmn0CZxU5U5OLd/m1T7YkGRj5UitjeoCtg/zorlgMQcdTg== + dependencies: + "@opentelemetry/core" "2.0.0" + "@opentelemetry/semantic-conventions" "^1.29.0" + "@opentelemetry/resources@2.0.0-dev.0", "@opentelemetry/resources@^2.0.0-dev.0": version "2.0.0-dev.0" resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-2.0.0-dev.0.tgz#1983d56e84fdfbdced0a5b76b325740049f45d62" @@ -5744,6 +5764,15 @@ "@opentelemetry/core" "2.0.0-dev.0" "@opentelemetry/semantic-conventions" "^1.29.0" +"@opentelemetry/sdk-trace-base@2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.0.0.tgz#ebc06ea7537dea62f3882f8236c1234f4faf6b23" + integrity sha512-qQnYdX+ZCkonM7tA5iU4fSRsVxbFGml8jbxOgipRGMFHKaXKHQ30js03rTobYjKjIfnOsZSbHKWF0/0v0OQGfw== + dependencies: + "@opentelemetry/core" "2.0.0" + "@opentelemetry/resources" "2.0.0" + "@opentelemetry/semantic-conventions" "^1.29.0" + "@opentelemetry/sdk-trace-base@^2.0.0-dev.0": version "2.0.0-dev.0" resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.0.0-dev.0.tgz#320a259ea4332b4d9452e6bd309862c4c2d08e9e" @@ -5753,6 +5782,15 @@ "@opentelemetry/resources" "2.0.0-dev.0" "@opentelemetry/semantic-conventions" "^1.29.0" +"@opentelemetry/sdk-trace-node@^2.0.0-dev.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-node/-/sdk-trace-node-2.0.0.tgz#ef9f8ab77ccb41a9c9ff272f6bf4bb6999491f5b" + integrity sha512-omdilCZozUjQwY3uZRBwbaRMJ3p09l4t187Lsdf0dGMye9WKD4NGcpgZRvqhI1dwcH6og+YXQEtoO9Wx3ykilg== + dependencies: + "@opentelemetry/context-async-hooks" "2.0.0" + "@opentelemetry/core" "2.0.0" + "@opentelemetry/sdk-trace-base" "2.0.0" + "@opentelemetry/semantic-conventions@1.28.0": version "1.28.0" resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz#337fb2bca0453d0726696e745f50064411f646d6" From 5450f1caee4b204da9fba469bff06985fe00656b Mon Sep 17 00:00:00 2001 From: Andrei Borza Date: Thu, 27 Feb 2025 20:18:28 +0100 Subject: [PATCH 03/11] Update spanUtils to take parent_span_id from parentSpanContext --- packages/core/src/utils/spanUtils.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/core/src/utils/spanUtils.ts b/packages/core/src/utils/spanUtils.ts index cbfcde2a2576..2d259b6151aa 100644 --- a/packages/core/src/utils/spanUtils.ts +++ b/packages/core/src/utils/spanUtils.ts @@ -17,6 +17,7 @@ import type { SpanOrigin, SpanStatus, SpanTimeInput, + SpanContextData, TraceContext, } from '../types-hoist'; import type { SpanLink, SpanLinkJSON } from '../types-hoist/link'; @@ -145,14 +146,15 @@ export function spanToJSON(span: Span): SpanJSON { // Handle a span from @opentelemetry/sdk-base-trace's `Span` class if (spanIsOpenTelemetrySdkTraceBaseSpan(span)) { - const { attributes, startTime, name, endTime, parentSpanId, status, links } = span; + const { attributes, startTime, name, endTime, status, links } = span; + const parent_span_id = span.parentSpanContext?.spanId return { span_id, trace_id, data: attributes, description: name, - parent_span_id: parentSpanId, + parent_span_id, start_timestamp: spanTimeInputToSeconds(startTime), // This is [0,0] by default in OTEL, in which case we want to interpret this as no end time timestamp: spanTimeInputToSeconds(endTime) || undefined, @@ -185,7 +187,7 @@ export interface OpenTelemetrySdkTraceBaseSpan extends Span { name: string; status: SpanStatus; endTime: SpanTimeInput; - parentSpanId?: string; + parentSpanContext?: SpanContextData; links?: SpanLink[]; } From 006234a95458522065f3e5fb64bde5e3108e8081 Mon Sep 17 00:00:00 2001 From: Andrei Borza Date: Thu, 27 Feb 2025 20:27:10 +0100 Subject: [PATCH 04/11] Remove `addSpanProcessor` call --- packages/core/src/utils/spanUtils.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/utils/spanUtils.ts b/packages/core/src/utils/spanUtils.ts index 2d259b6151aa..fb683d0111c5 100644 --- a/packages/core/src/utils/spanUtils.ts +++ b/packages/core/src/utils/spanUtils.ts @@ -147,7 +147,7 @@ export function spanToJSON(span: Span): SpanJSON { // Handle a span from @opentelemetry/sdk-base-trace's `Span` class if (spanIsOpenTelemetrySdkTraceBaseSpan(span)) { const { attributes, startTime, name, endTime, status, links } = span; - const parent_span_id = span.parentSpanContext?.spanId + const parent_span_id = span.parentSpanContext?.spanId; return { span_id, From 7939d9faa936d7a2af2fee7e1af79519a937d9ec Mon Sep 17 00:00:00 2001 From: Andrei Borza Date: Mon, 17 Mar 2025 13:45:16 +0900 Subject: [PATCH 05/11] Bump to 2.0.0-rc.1/0.200-rc.1 --- packages/aws-serverless/package.json | 2 +- packages/nestjs/package.json | 4 +- packages/node/package.json | 12 +-- .../http/SentryHttpInstrumentation.ts | 2 +- .../SentryNodeFetchInstrumentation.ts | 2 +- packages/opentelemetry/package.json | 16 ++-- packages/vercel-edge/package.json | 6 +- yarn.lock | 88 +++++++++---------- 8 files changed, 64 insertions(+), 68 deletions(-) diff --git a/packages/aws-serverless/package.json b/packages/aws-serverless/package.json index 6107a3db0cea..70bcc3824544 100644 --- a/packages/aws-serverless/package.json +++ b/packages/aws-serverless/package.json @@ -65,7 +65,7 @@ }, "dependencies": { "@opentelemetry/api": "^1.9.0", - "@opentelemetry/instrumentation": "^0.200.0-dev.0", + "@opentelemetry/instrumentation": "^0.200.0-rc.1", "@opentelemetry/instrumentation-aws-lambda": "0.50.3", "@opentelemetry/instrumentation-aws-sdk": "0.49.1", "@sentry/core": "9.10.1", diff --git a/packages/nestjs/package.json b/packages/nestjs/package.json index c88091cc96c4..3dbfaf2f4c1c 100644 --- a/packages/nestjs/package.json +++ b/packages/nestjs/package.json @@ -45,8 +45,8 @@ }, "dependencies": { "@opentelemetry/api": "^1.9.0", - "@opentelemetry/core": "^2.0.0-dev.0", - "@opentelemetry/instrumentation": "0.200.0-dev.0", + "@opentelemetry/core": "^2.0.0-rc.1", + "@opentelemetry/instrumentation": "0.200.0-rc.1", "@opentelemetry/instrumentation-nestjs-core": "0.44.1", "@opentelemetry/semantic-conventions": "^1.30.0", "@sentry/core": "9.10.1", diff --git a/packages/node/package.json b/packages/node/package.json index d1b29a44ef2a..3b6339f7a4ec 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -66,9 +66,9 @@ }, "dependencies": { "@opentelemetry/api": "^1.9.0", - "@opentelemetry/context-async-hooks": "^2.0.0-dev.0", - "@opentelemetry/core": "^2.0.0-dev.0", - "@opentelemetry/instrumentation": "^0.200.0-dev.0", + "@opentelemetry/context-async-hooks": "^2.0.0-rc.1", + "@opentelemetry/core": "^2.0.0-rc.1", + "@opentelemetry/instrumentation": "^0.200.0-rc.1", "@opentelemetry/instrumentation-amqplib": "^0.46.1", "@opentelemetry/instrumentation-connect": "0.43.1", "@opentelemetry/instrumentation-dataloader": "0.16.1", @@ -78,7 +78,7 @@ "@opentelemetry/instrumentation-generic-pool": "0.43.1", "@opentelemetry/instrumentation-graphql": "0.47.1", "@opentelemetry/instrumentation-hapi": "0.45.2", - "@opentelemetry/instrumentation-http": "0.200.0-dev.0", + "@opentelemetry/instrumentation-http": "0.200.0-rc.1", "@opentelemetry/instrumentation-ioredis": "0.47.1", "@opentelemetry/instrumentation-kafkajs": "0.7.1", "@opentelemetry/instrumentation-knex": "0.44.1", @@ -92,8 +92,8 @@ "@opentelemetry/instrumentation-redis-4": "0.46.1", "@opentelemetry/instrumentation-tedious": "0.18.1", "@opentelemetry/instrumentation-undici": "0.10.1", - "@opentelemetry/resources": "^2.0.0-dev.0", - "@opentelemetry/sdk-trace-base": "^2.0.0-dev.0", + "@opentelemetry/resources": "^2.0.0-rc.1", + "@opentelemetry/sdk-trace-base": "^2.0.0-rc.1", "@opentelemetry/semantic-conventions": "^1.30.0", "@prisma/instrumentation": "6.5.0", "@sentry/core": "9.10.1", diff --git a/packages/node/src/integrations/http/SentryHttpInstrumentation.ts b/packages/node/src/integrations/http/SentryHttpInstrumentation.ts index 8d3eca3ebc1c..15f1c3d4ce6c 100644 --- a/packages/node/src/integrations/http/SentryHttpInstrumentation.ts +++ b/packages/node/src/integrations/http/SentryHttpInstrumentation.ts @@ -91,7 +91,7 @@ const MAX_BODY_BYTE_LENGTH = 1024 * 1024; */ export class SentryHttpInstrumentation extends InstrumentationBase { public constructor(config: SentryHttpInstrumentationOptions = {}) { - super('@sentry/instrumentation-http', '2.0.0-dev.0', config); + super('@sentry/instrumentation-http', '2.0.0-rc.1', config); } /** @inheritdoc */ diff --git a/packages/node/src/integrations/node-fetch/SentryNodeFetchInstrumentation.ts b/packages/node/src/integrations/node-fetch/SentryNodeFetchInstrumentation.ts index 7bb9f401162b..decd43d6f2a9 100644 --- a/packages/node/src/integrations/node-fetch/SentryNodeFetchInstrumentation.ts +++ b/packages/node/src/integrations/node-fetch/SentryNodeFetchInstrumentation.ts @@ -55,7 +55,7 @@ export class SentryNodeFetchInstrumentation extends InstrumentationBase; public constructor(config: SentryNodeFetchInstrumentationOptions = {}) { - super('@sentry/instrumentation-node-fetch', '2.0.0-dev.0', config); + super('@sentry/instrumentation-node-fetch', '2.0.0-rc.1', config); this._channelSubs = []; this._propagationDecisionMap = new LRUMap(100); } diff --git a/packages/opentelemetry/package.json b/packages/opentelemetry/package.json index a69fc6ed3f8b..bf4fc65c9ec1 100644 --- a/packages/opentelemetry/package.json +++ b/packages/opentelemetry/package.json @@ -43,18 +43,18 @@ }, "peerDependencies": { "@opentelemetry/api": "^1.9.0", - "@opentelemetry/context-async-hooks": "^2.0.0-dev.0", - "@opentelemetry/core": "^2.0.0-dev.0", - "@opentelemetry/instrumentation": "^0.200.0-dev.0", - "@opentelemetry/sdk-trace-node": "^2.0.0-dev.0", + "@opentelemetry/context-async-hooks": "^2.0.0-rc.1", + "@opentelemetry/core": "^2.0.0-rc.1", + "@opentelemetry/instrumentation": "^0.200.0-rc.1", + "@opentelemetry/sdk-trace-node": "^2.0.0-rc.1", "@opentelemetry/semantic-conventions": "^1.28.0" }, "devDependencies": { "@opentelemetry/api": "^1.9.0", - "@opentelemetry/context-async-hooks": "^2.0.0-dev.0", - "@opentelemetry/core": "^2.0.0-dev.0", - "@opentelemetry/instrumentation": "^0.200.0-dev.0", - "@opentelemetry/sdk-trace-node": "^2.0.0-dev.0", + "@opentelemetry/context-async-hooks": "^2.0.0-rc.1", + "@opentelemetry/core": "^2.0.0-rc.1", + "@opentelemetry/instrumentation": "^0.200.0-rc.1", + "@opentelemetry/sdk-trace-node": "^2.0.0-rc.1", "@opentelemetry/semantic-conventions": "^1.30.0" }, "scripts": { diff --git a/packages/vercel-edge/package.json b/packages/vercel-edge/package.json index 4a4d3e64ad03..9d544bfed5fb 100644 --- a/packages/vercel-edge/package.json +++ b/packages/vercel-edge/package.json @@ -44,9 +44,9 @@ }, "devDependencies": { "@edge-runtime/types": "3.0.1", - "@opentelemetry/core": "^2.0.0-dev.0", - "@opentelemetry/resources": "^2.0.0-dev.0", - "@opentelemetry/sdk-trace-base": "^2.0.0-dev.0", + "@opentelemetry/core": "^2.0.0-rc.1", + "@opentelemetry/resources": "^2.0.0-rc.1", + "@opentelemetry/sdk-trace-node": "^2.0.0-rc.1", "@opentelemetry/semantic-conventions": "^1.28.0", "@sentry/opentelemetry": "9.10.1" }, diff --git a/yarn.lock b/yarn.lock index f47644f79b93..bbcf5f4d2166 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5420,10 +5420,17 @@ dependencies: "@octokit/openapi-types" "^18.0.0" -"@opentelemetry/api-logs@0.200.0-dev.0": - version "0.200.0-dev.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.200.0-dev.0.tgz#1522df44b17bf68b8f709d6251418d8082fb8808" - integrity sha512-wZzFxB2MSY9aYV0e845vphACuln0MYoiDJLhklnv2nhJqOn5pLMz0GfIK78VP7BVI0+fVW1rlskr7Aw7Aq4oQA== +"@opentelemetry/api-logs@0.200.0": + version "0.200.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.200.0.tgz#f9015fd844920c13968715b3cdccf5a4d4ff907e" + integrity sha512-IKJBQxh91qJ+3ssRly5hYEJ8NDHu9oY/B1PXVSCWf7zytmYO9RNLB0Ox9XQ/fJ8m6gY6Q6NtBWlmXfaXt5Uc4Q== + dependencies: + "@opentelemetry/api" "^1.3.0" + +"@opentelemetry/api-logs@0.200.0-rc.1": + version "0.200.0-rc.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.200.0-rc.1.tgz#b5af8f3b2533edf106d16ff919d8cfa4b50b1eca" + integrity sha512-V1CCvM+pSZWsSwCw1PmeB5NyX3Ysubje5pxoaV7p556g4ym8mOptX7PE4lF8vhb7MHbtkAfVJ9EpbXbu9w3gzw== dependencies: "@opentelemetry/api" "^1.3.0" @@ -5446,27 +5453,22 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.0.tgz#d03eba68273dc0f7509e2a3d5cba21eae10379fe" integrity sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg== -"@opentelemetry/context-async-hooks@2.0.0": +"@opentelemetry/context-async-hooks@2.0.0", "@opentelemetry/context-async-hooks@^2.0.0-rc.1": version "2.0.0" resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-2.0.0.tgz#c98a727238ca199cda943780acf6124af8d8cd80" integrity sha512-IEkJGzK1A9v3/EHjXh3s2IiFc6L4jfK+lNgKVgUjeUJQRRhnVFMIO3TAvKwonm9O1HebCuoOt98v8bZW7oVQHA== -"@opentelemetry/context-async-hooks@^2.0.0-dev.0": - version "2.0.0-dev.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-2.0.0-dev.0.tgz#1b4d011c7e74b5fe647c3d06254c7a893a30f79e" - integrity sha512-5myaYGXVBVIP4wZVoUpMcI80+Wn4sG64kuwc3OO2LVi4jZxMv/hKZA7IO8WvgQMP9gHSWDSS4FN2VXuOyoYmcw== - -"@opentelemetry/core@2.0.0": +"@opentelemetry/core@2.0.0", "@opentelemetry/core@^2.0.0-rc.1": version "2.0.0" resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-2.0.0.tgz#37e9f0e9ddec4479b267aca6f32d88757c941b3a" integrity sha512-SLX36allrcnVaPYG3R78F/UZZsBsvbc7lMCLx37LyH5MJ1KAAZ2E3mW9OAD3zGz0G8q/BtoS5VUrjzDydhD6LQ== dependencies: "@opentelemetry/semantic-conventions" "^1.29.0" -"@opentelemetry/core@2.0.0-dev.0", "@opentelemetry/core@^2.0.0-dev.0": - version "2.0.0-dev.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-2.0.0-dev.0.tgz#c5437ecee5055c8a195ad88d13f757100588e62f" - integrity sha512-uDNKPs29s8P54bP+ol/nFaRujClCeyan5/klpZYUGMt7InwITqRW93gDYdmnlJjFKVh8/tyWjUvyWMe1HdLdAg== +"@opentelemetry/core@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-2.0.0-rc.1.tgz#3a117d68f7b0cc2402438dd7a79ab684f29e0c0c" + integrity sha512-JfXBuCKmo2wPAnZM/iadMkjZj6Em7B6CyeonEbwkJ91/RrZgojAtv8T9VaX77DO8zsjfC8+Y1cJWoH15hYy3xA== dependencies: "@opentelemetry/semantic-conventions" "^1.29.0" @@ -5571,13 +5573,13 @@ "@opentelemetry/instrumentation" "^0.57.1" "@opentelemetry/semantic-conventions" "^1.27.0" -"@opentelemetry/instrumentation-http@0.200.0-dev.0": - version "0.200.0-dev.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-http/-/instrumentation-http-0.200.0-dev.0.tgz#a74b441160588cc6a69d7b8c8d780bcd2f7eb196" - integrity sha512-kBe9XqcfpWonxGWskO+QFnTr+ALehojAuvYEEzsKkME3xm9lnzkZoYPXg5CMg7tEqVAWBZmtQ/A9Q1nRRjyfeQ== +"@opentelemetry/instrumentation-http@0.200.0-rc.1": + version "0.200.0-rc.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-http/-/instrumentation-http-0.200.0-rc.1.tgz#f5ce7e2bd060c4a1af94f7c3cb34c0b367317362" + integrity sha512-VN/NKb1RBfK3t/AtggjkjB1zVYv8IP1MA6odnyRm+AInhv4dM0DUquPCpUxkX+j6F/jQ+VCVidWK0ObAKz/7Rg== dependencies: - "@opentelemetry/core" "2.0.0-dev.0" - "@opentelemetry/instrumentation" "0.200.0-dev.0" + "@opentelemetry/core" "2.0.0-rc.1" + "@opentelemetry/instrumentation" "0.200.0-rc.1" "@opentelemetry/semantic-conventions" "^1.29.0" forwarded-parse "2.1.2" @@ -5703,12 +5705,23 @@ "@opentelemetry/core" "^1.8.0" "@opentelemetry/instrumentation" "^0.57.1" -"@opentelemetry/instrumentation@0.200.0-dev.0", "@opentelemetry/instrumentation@^0.200.0-dev.0": - version "0.200.0-dev.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.200.0-dev.0.tgz#a2387daba680931bd88b6473fadcc2cea5f24bf8" - integrity sha512-t1Z0lRQVYDnBEim3QY4df1SkdqEgEESYSyXemQWQNWsWtx2H6PhK+yEI8nQtU/J0KPJ0MfZ1xWoxJRRY5NRKbA== +"@opentelemetry/instrumentation@0.200.0-rc.1": + version "0.200.0-rc.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.200.0-rc.1.tgz#749301d2f65c30680f4521c8f85b797d7b1f5f72" + integrity sha512-Sq+bD3mEoK60k1n124CDV4OJHaiMpukh2/xnPGj/wxpXo9Q9WcneaOmRRMvlHSkr3L7oBXekZ4JFzwVhFO66EA== + dependencies: + "@opentelemetry/api-logs" "0.200.0-rc.1" + "@types/shimmer" "^1.2.0" + import-in-the-middle "^1.8.1" + require-in-the-middle "^7.1.1" + shimmer "^1.2.1" + +"@opentelemetry/instrumentation@^0.200.0-rc.1": + version "0.200.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.200.0.tgz#29d1d4f70cbf0cb1ca9f2f78966379b0be96bddc" + integrity sha512-pmPlzfJd+vvgaZd/reMsC8RWgTXn2WY1OWT5RT42m3aOn5532TozwXNDhg1vzqJ+jnvmkREcdLr27ebJEQt0Jg== dependencies: - "@opentelemetry/api-logs" "0.200.0-dev.0" + "@opentelemetry/api-logs" "0.200.0" "@types/shimmer" "^1.2.0" import-in-the-middle "^1.8.1" require-in-the-middle "^7.1.1" @@ -5748,7 +5761,7 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/redis-common/-/redis-common-0.36.2.tgz#906ac8e4d804d4109f3ebd5c224ac988276fdc47" integrity sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g== -"@opentelemetry/resources@2.0.0": +"@opentelemetry/resources@2.0.0", "@opentelemetry/resources@^2.0.0-rc.1": version "2.0.0" resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-2.0.0.tgz#15c04794c32b7d0b3c7589225ece6ae9bba25989" integrity sha512-rnZr6dML2z4IARI4zPGQV4arDikF/9OXZQzrC01dLmn0CZxU5U5OLd/m1T7YkGRj5UitjeoCtg/zorlgMQcdTg== @@ -5756,15 +5769,7 @@ "@opentelemetry/core" "2.0.0" "@opentelemetry/semantic-conventions" "^1.29.0" -"@opentelemetry/resources@2.0.0-dev.0", "@opentelemetry/resources@^2.0.0-dev.0": - version "2.0.0-dev.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-2.0.0-dev.0.tgz#1983d56e84fdfbdced0a5b76b325740049f45d62" - integrity sha512-TpJtctWmdIxDATecqMd92Qv0MifzgvI0YN4uEKQgAdioHJ44Rl1zTOrheUYz/66Y4iUGWUP5bm3irFOb1ymt9A== - dependencies: - "@opentelemetry/core" "2.0.0-dev.0" - "@opentelemetry/semantic-conventions" "^1.29.0" - -"@opentelemetry/sdk-trace-base@2.0.0": +"@opentelemetry/sdk-trace-base@2.0.0", "@opentelemetry/sdk-trace-base@^2.0.0-rc.1": version "2.0.0" resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.0.0.tgz#ebc06ea7537dea62f3882f8236c1234f4faf6b23" integrity sha512-qQnYdX+ZCkonM7tA5iU4fSRsVxbFGml8jbxOgipRGMFHKaXKHQ30js03rTobYjKjIfnOsZSbHKWF0/0v0OQGfw== @@ -5773,16 +5778,7 @@ "@opentelemetry/resources" "2.0.0" "@opentelemetry/semantic-conventions" "^1.29.0" -"@opentelemetry/sdk-trace-base@^2.0.0-dev.0": - version "2.0.0-dev.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.0.0-dev.0.tgz#320a259ea4332b4d9452e6bd309862c4c2d08e9e" - integrity sha512-zULpgNZNGS6LM+rI6fw2fraAVvIm3aI/DfcuwxRvPa6Yqf9kR7FQk1EdB8Tf2AJm+UWakGPpRbEhkv1KqPVu2w== - dependencies: - "@opentelemetry/core" "2.0.0-dev.0" - "@opentelemetry/resources" "2.0.0-dev.0" - "@opentelemetry/semantic-conventions" "^1.29.0" - -"@opentelemetry/sdk-trace-node@^2.0.0-dev.0": +"@opentelemetry/sdk-trace-node@^2.0.0-rc.1": version "2.0.0" resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-node/-/sdk-trace-node-2.0.0.tgz#ef9f8ab77ccb41a9c9ff272f6bf4bb6999491f5b" integrity sha512-omdilCZozUjQwY3uZRBwbaRMJ3p09l4t187Lsdf0dGMye9WKD4NGcpgZRvqhI1dwcH6og+YXQEtoO9Wx3ykilg== From 73efda3a433c29e2482e57cc64af0a9d48509f51 Mon Sep 17 00:00:00 2001 From: Andrei Borza Date: Mon, 17 Mar 2025 14:00:37 +0900 Subject: [PATCH 06/11] Merge default otel resource when creating new provider --- .../opentelemetry/test/helpers/initOtel.ts | 16 +++-- packages/vercel-edge/package.json | 2 +- yarn.lock | 65 +++++++++---------- 3 files changed, 42 insertions(+), 41 deletions(-) diff --git a/packages/opentelemetry/test/helpers/initOtel.ts b/packages/opentelemetry/test/helpers/initOtel.ts index 5a7e9eddebd1..e57fab424a02 100644 --- a/packages/opentelemetry/test/helpers/initOtel.ts +++ b/packages/opentelemetry/test/helpers/initOtel.ts @@ -1,6 +1,6 @@ import { DiagLogLevel, context, diag, propagation, trace } from '@opentelemetry/api'; import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks'; -import { resourceFromAttributes } from '@opentelemetry/resources'; +import { defaultResource, resourceFromAttributes } from '@opentelemetry/resources'; import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import { ATTR_SERVICE_NAME, @@ -56,12 +56,14 @@ export function setupOtel(client: TestClientInterface): NodeTracerProvider { // Create and configure NodeTracerProvider const provider = new NodeTracerProvider({ sampler: new SentrySampler(client), - resource: resourceFromAttributes({ - [ATTR_SERVICE_NAME]: 'opentelemetry-test', - // eslint-disable-next-line deprecation/deprecation - [SEMRESATTRS_SERVICE_NAMESPACE]: 'sentry', - [ATTR_SERVICE_VERSION]: SDK_VERSION, - }), + resource: defaultResource().merge( + resourceFromAttributes({ + [ATTR_SERVICE_NAME]: 'opentelemetry-test', + // eslint-disable-next-line deprecation/deprecation + [SEMRESATTRS_SERVICE_NAMESPACE]: 'sentry', + [ATTR_SERVICE_VERSION]: SDK_VERSION, + }), + ), forceFlushTimeoutMillis: 500, spanProcessors: [new SentrySpanProcessor()], }); diff --git a/packages/vercel-edge/package.json b/packages/vercel-edge/package.json index 9d544bfed5fb..067a1c629c2b 100644 --- a/packages/vercel-edge/package.json +++ b/packages/vercel-edge/package.json @@ -46,7 +46,7 @@ "@edge-runtime/types": "3.0.1", "@opentelemetry/core": "^2.0.0-rc.1", "@opentelemetry/resources": "^2.0.0-rc.1", - "@opentelemetry/sdk-trace-node": "^2.0.0-rc.1", + "@opentelemetry/sdk-trace-base": "^2.0.0-rc.1", "@opentelemetry/semantic-conventions": "^1.28.0", "@sentry/opentelemetry": "9.10.1" }, diff --git a/yarn.lock b/yarn.lock index bbcf5f4d2166..4af6b7ae55d3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5420,13 +5420,6 @@ dependencies: "@octokit/openapi-types" "^18.0.0" -"@opentelemetry/api-logs@0.200.0": - version "0.200.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.200.0.tgz#f9015fd844920c13968715b3cdccf5a4d4ff907e" - integrity sha512-IKJBQxh91qJ+3ssRly5hYEJ8NDHu9oY/B1PXVSCWf7zytmYO9RNLB0Ox9XQ/fJ8m6gY6Q6NtBWlmXfaXt5Uc4Q== - dependencies: - "@opentelemetry/api" "^1.3.0" - "@opentelemetry/api-logs@0.200.0-rc.1": version "0.200.0-rc.1" resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.200.0-rc.1.tgz#b5af8f3b2533edf106d16ff919d8cfa4b50b1eca" @@ -5453,19 +5446,19 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.0.tgz#d03eba68273dc0f7509e2a3d5cba21eae10379fe" integrity sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg== -"@opentelemetry/context-async-hooks@2.0.0", "@opentelemetry/context-async-hooks@^2.0.0-rc.1": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-2.0.0.tgz#c98a727238ca199cda943780acf6124af8d8cd80" - integrity sha512-IEkJGzK1A9v3/EHjXh3s2IiFc6L4jfK+lNgKVgUjeUJQRRhnVFMIO3TAvKwonm9O1HebCuoOt98v8bZW7oVQHA== +"@opentelemetry/context-async-hooks@2.0.0-rc.1", "@opentelemetry/context-async-hooks@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-2.0.0-rc.1.tgz#607fac045f9f01c2b88f14c6c5eb2fddcc9604f3" + integrity sha512-/qjRw0NqbwoQK8tmxcbtNtAPaMvE+fKG3dQdh7vdRd4D8bxrAfIzBSe6HemuKqwObsB2buCMl/47vPbThrLR+w== -"@opentelemetry/core@2.0.0", "@opentelemetry/core@^2.0.0-rc.1": +"@opentelemetry/core@2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-2.0.0.tgz#37e9f0e9ddec4479b267aca6f32d88757c941b3a" integrity sha512-SLX36allrcnVaPYG3R78F/UZZsBsvbc7lMCLx37LyH5MJ1KAAZ2E3mW9OAD3zGz0G8q/BtoS5VUrjzDydhD6LQ== dependencies: "@opentelemetry/semantic-conventions" "^1.29.0" -"@opentelemetry/core@2.0.0-rc.1": +"@opentelemetry/core@2.0.0-rc.1", "@opentelemetry/core@^2.0.0-rc.1": version "2.0.0-rc.1" resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-2.0.0-rc.1.tgz#3a117d68f7b0cc2402438dd7a79ab684f29e0c0c" integrity sha512-JfXBuCKmo2wPAnZM/iadMkjZj6Em7B6CyeonEbwkJ91/RrZgojAtv8T9VaX77DO8zsjfC8+Y1cJWoH15hYy3xA== @@ -5705,7 +5698,7 @@ "@opentelemetry/core" "^1.8.0" "@opentelemetry/instrumentation" "^0.57.1" -"@opentelemetry/instrumentation@0.200.0-rc.1": +"@opentelemetry/instrumentation@0.200.0-rc.1", "@opentelemetry/instrumentation@^0.200.0-rc.1": version "0.200.0-rc.1" resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.200.0-rc.1.tgz#749301d2f65c30680f4521c8f85b797d7b1f5f72" integrity sha512-Sq+bD3mEoK60k1n124CDV4OJHaiMpukh2/xnPGj/wxpXo9Q9WcneaOmRRMvlHSkr3L7oBXekZ4JFzwVhFO66EA== @@ -5716,17 +5709,6 @@ require-in-the-middle "^7.1.1" shimmer "^1.2.1" -"@opentelemetry/instrumentation@^0.200.0-rc.1": - version "0.200.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.200.0.tgz#29d1d4f70cbf0cb1ca9f2f78966379b0be96bddc" - integrity sha512-pmPlzfJd+vvgaZd/reMsC8RWgTXn2WY1OWT5RT42m3aOn5532TozwXNDhg1vzqJ+jnvmkREcdLr27ebJEQt0Jg== - dependencies: - "@opentelemetry/api-logs" "0.200.0" - "@types/shimmer" "^1.2.0" - import-in-the-middle "^1.8.1" - require-in-the-middle "^7.1.1" - shimmer "^1.2.1" - "@opentelemetry/instrumentation@^0.52.0 || ^0.53.0 || ^0.54.0 || ^0.55.0 || ^0.56.0 || ^0.57.0", "@opentelemetry/instrumentation@^0.57.1": version "0.57.2" resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz#8924549d7941ba1b5c6f04d5529cf48330456d1d" @@ -5761,7 +5743,7 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/redis-common/-/redis-common-0.36.2.tgz#906ac8e4d804d4109f3ebd5c224ac988276fdc47" integrity sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g== -"@opentelemetry/resources@2.0.0", "@opentelemetry/resources@^2.0.0-rc.1": +"@opentelemetry/resources@2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-2.0.0.tgz#15c04794c32b7d0b3c7589225ece6ae9bba25989" integrity sha512-rnZr6dML2z4IARI4zPGQV4arDikF/9OXZQzrC01dLmn0CZxU5U5OLd/m1T7YkGRj5UitjeoCtg/zorlgMQcdTg== @@ -5769,7 +5751,24 @@ "@opentelemetry/core" "2.0.0" "@opentelemetry/semantic-conventions" "^1.29.0" -"@opentelemetry/sdk-trace-base@2.0.0", "@opentelemetry/sdk-trace-base@^2.0.0-rc.1": +"@opentelemetry/resources@2.0.0-rc.1", "@opentelemetry/resources@^2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-2.0.0-rc.1.tgz#74467a0c4cf0f75d5180faa0d2cab870497684ba" + integrity sha512-ETqGg9rvdb0zSDmtvgt3R4Q2b1UdWx9M4XWIfoZgzTfV+Bj9LJFtE/YYQxY8Z1ygdI560SmuctgQWrafpLrFFQ== + dependencies: + "@opentelemetry/core" "2.0.0-rc.1" + "@opentelemetry/semantic-conventions" "^1.29.0" + +"@opentelemetry/sdk-trace-base@2.0.0-rc.1": + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.0.0-rc.1.tgz#3d28a512027daffc4fc9206ef5bd67a9f8459b98" + integrity sha512-0sHZrmn5v3bWRRK6hMQeiRcJizMR79rTq+PnpaOOBXKPCPTCJotO4VYfk7Ro19HMRpyrP45Q4e2emlY7pZv+sw== + dependencies: + "@opentelemetry/core" "2.0.0-rc.1" + "@opentelemetry/resources" "2.0.0-rc.1" + "@opentelemetry/semantic-conventions" "^1.29.0" + +"@opentelemetry/sdk-trace-base@^2.0.0-rc.1": version "2.0.0" resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.0.0.tgz#ebc06ea7537dea62f3882f8236c1234f4faf6b23" integrity sha512-qQnYdX+ZCkonM7tA5iU4fSRsVxbFGml8jbxOgipRGMFHKaXKHQ30js03rTobYjKjIfnOsZSbHKWF0/0v0OQGfw== @@ -5779,13 +5778,13 @@ "@opentelemetry/semantic-conventions" "^1.29.0" "@opentelemetry/sdk-trace-node@^2.0.0-rc.1": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-node/-/sdk-trace-node-2.0.0.tgz#ef9f8ab77ccb41a9c9ff272f6bf4bb6999491f5b" - integrity sha512-omdilCZozUjQwY3uZRBwbaRMJ3p09l4t187Lsdf0dGMye9WKD4NGcpgZRvqhI1dwcH6og+YXQEtoO9Wx3ykilg== + version "2.0.0-rc.1" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-node/-/sdk-trace-node-2.0.0-rc.1.tgz#00df5a0e1311f7cab002542abd1c64ee135167cc" + integrity sha512-yhX8xNCucL3z+FobTEl7sZ3myh+YRJf/vAIS+lyeiV2qT30fVX2sv7AMVH+xjDYlYV/YVLZAqXOImVkJEFcMjA== dependencies: - "@opentelemetry/context-async-hooks" "2.0.0" - "@opentelemetry/core" "2.0.0" - "@opentelemetry/sdk-trace-base" "2.0.0" + "@opentelemetry/context-async-hooks" "2.0.0-rc.1" + "@opentelemetry/core" "2.0.0-rc.1" + "@opentelemetry/sdk-trace-base" "2.0.0-rc.1" "@opentelemetry/semantic-conventions@1.28.0": version "1.28.0" From d070c0c0eae8e824f250144c6a4362652d951c70 Mon Sep 17 00:00:00 2001 From: Andrei Borza Date: Tue, 18 Mar 2025 10:17:43 +0900 Subject: [PATCH 07/11] Bump to 2.0.0/0.200.0 --- packages/aws-serverless/package.json | 2 +- packages/nestjs/package.json | 4 +- packages/node/package.json | 12 +-- .../http/SentryHttpInstrumentation.ts | 2 +- .../SentryNodeFetchInstrumentation.ts | 2 +- packages/opentelemetry/package.json | 16 ++-- packages/vercel-edge/package.json | 6 +- yarn.lock | 82 +++++++------------ 8 files changed, 51 insertions(+), 75 deletions(-) diff --git a/packages/aws-serverless/package.json b/packages/aws-serverless/package.json index 70bcc3824544..9bdff7eb58b2 100644 --- a/packages/aws-serverless/package.json +++ b/packages/aws-serverless/package.json @@ -65,7 +65,7 @@ }, "dependencies": { "@opentelemetry/api": "^1.9.0", - "@opentelemetry/instrumentation": "^0.200.0-rc.1", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/instrumentation-aws-lambda": "0.50.3", "@opentelemetry/instrumentation-aws-sdk": "0.49.1", "@sentry/core": "9.10.1", diff --git a/packages/nestjs/package.json b/packages/nestjs/package.json index 3dbfaf2f4c1c..f60877c2efea 100644 --- a/packages/nestjs/package.json +++ b/packages/nestjs/package.json @@ -45,8 +45,8 @@ }, "dependencies": { "@opentelemetry/api": "^1.9.0", - "@opentelemetry/core": "^2.0.0-rc.1", - "@opentelemetry/instrumentation": "0.200.0-rc.1", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "0.200.0", "@opentelemetry/instrumentation-nestjs-core": "0.44.1", "@opentelemetry/semantic-conventions": "^1.30.0", "@sentry/core": "9.10.1", diff --git a/packages/node/package.json b/packages/node/package.json index 3b6339f7a4ec..3dd5082f124b 100644 --- a/packages/node/package.json +++ b/packages/node/package.json @@ -66,9 +66,9 @@ }, "dependencies": { "@opentelemetry/api": "^1.9.0", - "@opentelemetry/context-async-hooks": "^2.0.0-rc.1", - "@opentelemetry/core": "^2.0.0-rc.1", - "@opentelemetry/instrumentation": "^0.200.0-rc.1", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", "@opentelemetry/instrumentation-amqplib": "^0.46.1", "@opentelemetry/instrumentation-connect": "0.43.1", "@opentelemetry/instrumentation-dataloader": "0.16.1", @@ -78,7 +78,7 @@ "@opentelemetry/instrumentation-generic-pool": "0.43.1", "@opentelemetry/instrumentation-graphql": "0.47.1", "@opentelemetry/instrumentation-hapi": "0.45.2", - "@opentelemetry/instrumentation-http": "0.200.0-rc.1", + "@opentelemetry/instrumentation-http": "0.200.0", "@opentelemetry/instrumentation-ioredis": "0.47.1", "@opentelemetry/instrumentation-kafkajs": "0.7.1", "@opentelemetry/instrumentation-knex": "0.44.1", @@ -92,8 +92,8 @@ "@opentelemetry/instrumentation-redis-4": "0.46.1", "@opentelemetry/instrumentation-tedious": "0.18.1", "@opentelemetry/instrumentation-undici": "0.10.1", - "@opentelemetry/resources": "^2.0.0-rc.1", - "@opentelemetry/sdk-trace-base": "^2.0.0-rc.1", + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.30.0", "@prisma/instrumentation": "6.5.0", "@sentry/core": "9.10.1", diff --git a/packages/node/src/integrations/http/SentryHttpInstrumentation.ts b/packages/node/src/integrations/http/SentryHttpInstrumentation.ts index 15f1c3d4ce6c..14031fdd536e 100644 --- a/packages/node/src/integrations/http/SentryHttpInstrumentation.ts +++ b/packages/node/src/integrations/http/SentryHttpInstrumentation.ts @@ -91,7 +91,7 @@ const MAX_BODY_BYTE_LENGTH = 1024 * 1024; */ export class SentryHttpInstrumentation extends InstrumentationBase { public constructor(config: SentryHttpInstrumentationOptions = {}) { - super('@sentry/instrumentation-http', '2.0.0-rc.1', config); + super('@sentry/instrumentation-http', '2.0.0', config); } /** @inheritdoc */ diff --git a/packages/node/src/integrations/node-fetch/SentryNodeFetchInstrumentation.ts b/packages/node/src/integrations/node-fetch/SentryNodeFetchInstrumentation.ts index decd43d6f2a9..02d6ed6f6752 100644 --- a/packages/node/src/integrations/node-fetch/SentryNodeFetchInstrumentation.ts +++ b/packages/node/src/integrations/node-fetch/SentryNodeFetchInstrumentation.ts @@ -55,7 +55,7 @@ export class SentryNodeFetchInstrumentation extends InstrumentationBase; public constructor(config: SentryNodeFetchInstrumentationOptions = {}) { - super('@sentry/instrumentation-node-fetch', '2.0.0-rc.1', config); + super('@sentry/instrumentation-node-fetch', '2.0.0', config); this._channelSubs = []; this._propagationDecisionMap = new LRUMap(100); } diff --git a/packages/opentelemetry/package.json b/packages/opentelemetry/package.json index bf4fc65c9ec1..cc693c098004 100644 --- a/packages/opentelemetry/package.json +++ b/packages/opentelemetry/package.json @@ -43,18 +43,18 @@ }, "peerDependencies": { "@opentelemetry/api": "^1.9.0", - "@opentelemetry/context-async-hooks": "^2.0.0-rc.1", - "@opentelemetry/core": "^2.0.0-rc.1", - "@opentelemetry/instrumentation": "^0.200.0-rc.1", - "@opentelemetry/sdk-trace-node": "^2.0.0-rc.1", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.28.0" }, "devDependencies": { "@opentelemetry/api": "^1.9.0", - "@opentelemetry/context-async-hooks": "^2.0.0-rc.1", - "@opentelemetry/core": "^2.0.0-rc.1", - "@opentelemetry/instrumentation": "^0.200.0-rc.1", - "@opentelemetry/sdk-trace-node": "^2.0.0-rc.1", + "@opentelemetry/context-async-hooks": "^2.0.0", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/instrumentation": "^0.200.0", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.30.0" }, "scripts": { diff --git a/packages/vercel-edge/package.json b/packages/vercel-edge/package.json index 067a1c629c2b..6d8fb786d7be 100644 --- a/packages/vercel-edge/package.json +++ b/packages/vercel-edge/package.json @@ -44,9 +44,9 @@ }, "devDependencies": { "@edge-runtime/types": "3.0.1", - "@opentelemetry/core": "^2.0.0-rc.1", - "@opentelemetry/resources": "^2.0.0-rc.1", - "@opentelemetry/sdk-trace-base": "^2.0.0-rc.1", + "@opentelemetry/core": "^2.0.0", + "@opentelemetry/resources": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.28.0", "@sentry/opentelemetry": "9.10.1" }, diff --git a/yarn.lock b/yarn.lock index 4af6b7ae55d3..52c10bebe7dd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5420,10 +5420,10 @@ dependencies: "@octokit/openapi-types" "^18.0.0" -"@opentelemetry/api-logs@0.200.0-rc.1": - version "0.200.0-rc.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.200.0-rc.1.tgz#b5af8f3b2533edf106d16ff919d8cfa4b50b1eca" - integrity sha512-V1CCvM+pSZWsSwCw1PmeB5NyX3Ysubje5pxoaV7p556g4ym8mOptX7PE4lF8vhb7MHbtkAfVJ9EpbXbu9w3gzw== +"@opentelemetry/api-logs@0.200.0": + version "0.200.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/api-logs/-/api-logs-0.200.0.tgz#f9015fd844920c13968715b3cdccf5a4d4ff907e" + integrity sha512-IKJBQxh91qJ+3ssRly5hYEJ8NDHu9oY/B1PXVSCWf7zytmYO9RNLB0Ox9XQ/fJ8m6gY6Q6NtBWlmXfaXt5Uc4Q== dependencies: "@opentelemetry/api" "^1.3.0" @@ -5446,25 +5446,18 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.0.tgz#d03eba68273dc0f7509e2a3d5cba21eae10379fe" integrity sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg== -"@opentelemetry/context-async-hooks@2.0.0-rc.1", "@opentelemetry/context-async-hooks@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-2.0.0-rc.1.tgz#607fac045f9f01c2b88f14c6c5eb2fddcc9604f3" - integrity sha512-/qjRw0NqbwoQK8tmxcbtNtAPaMvE+fKG3dQdh7vdRd4D8bxrAfIzBSe6HemuKqwObsB2buCMl/47vPbThrLR+w== +"@opentelemetry/context-async-hooks@2.0.0", "@opentelemetry/context-async-hooks@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-2.0.0.tgz#c98a727238ca199cda943780acf6124af8d8cd80" + integrity sha512-IEkJGzK1A9v3/EHjXh3s2IiFc6L4jfK+lNgKVgUjeUJQRRhnVFMIO3TAvKwonm9O1HebCuoOt98v8bZW7oVQHA== -"@opentelemetry/core@2.0.0": +"@opentelemetry/core@2.0.0", "@opentelemetry/core@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-2.0.0.tgz#37e9f0e9ddec4479b267aca6f32d88757c941b3a" integrity sha512-SLX36allrcnVaPYG3R78F/UZZsBsvbc7lMCLx37LyH5MJ1KAAZ2E3mW9OAD3zGz0G8q/BtoS5VUrjzDydhD6LQ== dependencies: "@opentelemetry/semantic-conventions" "^1.29.0" -"@opentelemetry/core@2.0.0-rc.1", "@opentelemetry/core@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-2.0.0-rc.1.tgz#3a117d68f7b0cc2402438dd7a79ab684f29e0c0c" - integrity sha512-JfXBuCKmo2wPAnZM/iadMkjZj6Em7B6CyeonEbwkJ91/RrZgojAtv8T9VaX77DO8zsjfC8+Y1cJWoH15hYy3xA== - dependencies: - "@opentelemetry/semantic-conventions" "^1.29.0" - "@opentelemetry/core@^1.1.0", "@opentelemetry/core@^1.26.0", "@opentelemetry/core@^1.8.0": version "1.30.1" resolved "https://registry.yarnpkg.com/@opentelemetry/core/-/core-1.30.1.tgz#a0b468bb396358df801881709ea38299fc30ab27" @@ -5566,13 +5559,13 @@ "@opentelemetry/instrumentation" "^0.57.1" "@opentelemetry/semantic-conventions" "^1.27.0" -"@opentelemetry/instrumentation-http@0.200.0-rc.1": - version "0.200.0-rc.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-http/-/instrumentation-http-0.200.0-rc.1.tgz#f5ce7e2bd060c4a1af94f7c3cb34c0b367317362" - integrity sha512-VN/NKb1RBfK3t/AtggjkjB1zVYv8IP1MA6odnyRm+AInhv4dM0DUquPCpUxkX+j6F/jQ+VCVidWK0ObAKz/7Rg== +"@opentelemetry/instrumentation-http@0.200.0": + version "0.200.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation-http/-/instrumentation-http-0.200.0.tgz#b5bda869afad4e6933120c34c98e201d5b6e0a24" + integrity sha512-9tqGbCJikhYU68y3k9mi6yWsMyMeCcwoQuHvIXan5VvvPPQ5WIZaV6Mxu/MCVe4swRNoFs8Th+qyj0TZV5ELvw== dependencies: - "@opentelemetry/core" "2.0.0-rc.1" - "@opentelemetry/instrumentation" "0.200.0-rc.1" + "@opentelemetry/core" "2.0.0" + "@opentelemetry/instrumentation" "0.200.0" "@opentelemetry/semantic-conventions" "^1.29.0" forwarded-parse "2.1.2" @@ -5698,12 +5691,12 @@ "@opentelemetry/core" "^1.8.0" "@opentelemetry/instrumentation" "^0.57.1" -"@opentelemetry/instrumentation@0.200.0-rc.1", "@opentelemetry/instrumentation@^0.200.0-rc.1": - version "0.200.0-rc.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.200.0-rc.1.tgz#749301d2f65c30680f4521c8f85b797d7b1f5f72" - integrity sha512-Sq+bD3mEoK60k1n124CDV4OJHaiMpukh2/xnPGj/wxpXo9Q9WcneaOmRRMvlHSkr3L7oBXekZ4JFzwVhFO66EA== +"@opentelemetry/instrumentation@0.200.0", "@opentelemetry/instrumentation@^0.200.0": + version "0.200.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/instrumentation/-/instrumentation-0.200.0.tgz#29d1d4f70cbf0cb1ca9f2f78966379b0be96bddc" + integrity sha512-pmPlzfJd+vvgaZd/reMsC8RWgTXn2WY1OWT5RT42m3aOn5532TozwXNDhg1vzqJ+jnvmkREcdLr27ebJEQt0Jg== dependencies: - "@opentelemetry/api-logs" "0.200.0-rc.1" + "@opentelemetry/api-logs" "0.200.0" "@types/shimmer" "^1.2.0" import-in-the-middle "^1.8.1" require-in-the-middle "^7.1.1" @@ -5743,7 +5736,7 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/redis-common/-/redis-common-0.36.2.tgz#906ac8e4d804d4109f3ebd5c224ac988276fdc47" integrity sha512-faYX1N0gpLhej/6nyp6bgRjzAKXn5GOEMYY7YhciSfCoITAktLUtQ36d24QEWNA1/WA1y6qQunCe0OhHRkVl9g== -"@opentelemetry/resources@2.0.0": +"@opentelemetry/resources@2.0.0", "@opentelemetry/resources@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-2.0.0.tgz#15c04794c32b7d0b3c7589225ece6ae9bba25989" integrity sha512-rnZr6dML2z4IARI4zPGQV4arDikF/9OXZQzrC01dLmn0CZxU5U5OLd/m1T7YkGRj5UitjeoCtg/zorlgMQcdTg== @@ -5751,24 +5744,7 @@ "@opentelemetry/core" "2.0.0" "@opentelemetry/semantic-conventions" "^1.29.0" -"@opentelemetry/resources@2.0.0-rc.1", "@opentelemetry/resources@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/resources/-/resources-2.0.0-rc.1.tgz#74467a0c4cf0f75d5180faa0d2cab870497684ba" - integrity sha512-ETqGg9rvdb0zSDmtvgt3R4Q2b1UdWx9M4XWIfoZgzTfV+Bj9LJFtE/YYQxY8Z1ygdI560SmuctgQWrafpLrFFQ== - dependencies: - "@opentelemetry/core" "2.0.0-rc.1" - "@opentelemetry/semantic-conventions" "^1.29.0" - -"@opentelemetry/sdk-trace-base@2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.0.0-rc.1.tgz#3d28a512027daffc4fc9206ef5bd67a9f8459b98" - integrity sha512-0sHZrmn5v3bWRRK6hMQeiRcJizMR79rTq+PnpaOOBXKPCPTCJotO4VYfk7Ro19HMRpyrP45Q4e2emlY7pZv+sw== - dependencies: - "@opentelemetry/core" "2.0.0-rc.1" - "@opentelemetry/resources" "2.0.0-rc.1" - "@opentelemetry/semantic-conventions" "^1.29.0" - -"@opentelemetry/sdk-trace-base@^2.0.0-rc.1": +"@opentelemetry/sdk-trace-base@2.0.0", "@opentelemetry/sdk-trace-base@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.0.0.tgz#ebc06ea7537dea62f3882f8236c1234f4faf6b23" integrity sha512-qQnYdX+ZCkonM7tA5iU4fSRsVxbFGml8jbxOgipRGMFHKaXKHQ30js03rTobYjKjIfnOsZSbHKWF0/0v0OQGfw== @@ -5777,14 +5753,14 @@ "@opentelemetry/resources" "2.0.0" "@opentelemetry/semantic-conventions" "^1.29.0" -"@opentelemetry/sdk-trace-node@^2.0.0-rc.1": - version "2.0.0-rc.1" - resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-node/-/sdk-trace-node-2.0.0-rc.1.tgz#00df5a0e1311f7cab002542abd1c64ee135167cc" - integrity sha512-yhX8xNCucL3z+FobTEl7sZ3myh+YRJf/vAIS+lyeiV2qT30fVX2sv7AMVH+xjDYlYV/YVLZAqXOImVkJEFcMjA== +"@opentelemetry/sdk-trace-node@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-node/-/sdk-trace-node-2.0.0.tgz#ef9f8ab77ccb41a9c9ff272f6bf4bb6999491f5b" + integrity sha512-omdilCZozUjQwY3uZRBwbaRMJ3p09l4t187Lsdf0dGMye9WKD4NGcpgZRvqhI1dwcH6og+YXQEtoO9Wx3ykilg== dependencies: - "@opentelemetry/context-async-hooks" "2.0.0-rc.1" - "@opentelemetry/core" "2.0.0-rc.1" - "@opentelemetry/sdk-trace-base" "2.0.0-rc.1" + "@opentelemetry/context-async-hooks" "2.0.0" + "@opentelemetry/core" "2.0.0" + "@opentelemetry/sdk-trace-base" "2.0.0" "@opentelemetry/semantic-conventions@1.28.0": version "1.28.0" From 5e422d1a126b4b589922a667110fd1979d4fa892 Mon Sep 17 00:00:00 2001 From: Andrei Borza Date: Tue, 18 Mar 2025 12:05:08 +0900 Subject: [PATCH 08/11] Update spanTypes tests --- packages/opentelemetry/src/utils/spanTypes.ts | 4 ++-- packages/opentelemetry/test/utils/spanTypes.test.ts | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/opentelemetry/src/utils/spanTypes.ts b/packages/opentelemetry/src/utils/spanTypes.ts index 870eb201e62d..a04c66eb5dd2 100644 --- a/packages/opentelemetry/src/utils/spanTypes.ts +++ b/packages/opentelemetry/src/utils/spanTypes.ts @@ -1,4 +1,4 @@ -import type { SpanContext, SpanKind, SpanStatus } from '@opentelemetry/api'; +import type { SpanKind, SpanStatus } from '@opentelemetry/api'; import type { ReadableSpan, TimedEvent } from '@opentelemetry/sdk-trace-node'; import type { AbstractSpan } from '../types'; @@ -54,7 +54,7 @@ export function spanHasName(span: SpanType): span */ export function spanHasParentId( span: SpanType, -): span is SpanType & { spanContext?: SpanContext } { +): span is SpanType { const castSpan = span as ReadableSpan; return !!castSpan.parentSpanContext?.spanId; } diff --git a/packages/opentelemetry/test/utils/spanTypes.test.ts b/packages/opentelemetry/test/utils/spanTypes.test.ts index 1849f24ce412..7eedd3d68a81 100644 --- a/packages/opentelemetry/test/utils/spanTypes.test.ts +++ b/packages/opentelemetry/test/utils/spanTypes.test.ts @@ -43,8 +43,8 @@ describe('spanTypes', () => { describe('spanHasParentId', () => { it.each([ [{}, false], - [{ parentSpanId: null }, false], - [{ parentSpanId: 'TEST_PARENT_ID' }, true], + [{ parentSpanContext: { spanId: null } }, false], + [{ parentSpanContext: { spanId: 'TEST_PARENT_ID' } }, true], ])('works with %p', (span, expected) => { const castSpan = span as unknown as Span; const actual = spanHasParentId(castSpan); @@ -52,7 +52,7 @@ describe('spanTypes', () => { expect(actual).toBe(expected); if (actual) { - expect(castSpan.parentSpanId).toBeDefined(); + expect(castSpan.parentSpanContext?.spanId).toBeDefined(); } }); }); From 498a2aef42645824c8e6baf3361c70da6bd04a50 Mon Sep 17 00:00:00 2001 From: Andrei Borza Date: Wed, 19 Mar 2025 13:17:19 +0900 Subject: [PATCH 09/11] Switch back to BasicTracerProvider in otel test helper --- packages/opentelemetry/package.json | 4 ++-- packages/opentelemetry/test/helpers/initOtel.ts | 6 +++--- yarn.lock | 13 ++----------- 3 files changed, 7 insertions(+), 16 deletions(-) diff --git a/packages/opentelemetry/package.json b/packages/opentelemetry/package.json index cc693c098004..716df2c26d20 100644 --- a/packages/opentelemetry/package.json +++ b/packages/opentelemetry/package.json @@ -46,7 +46,7 @@ "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.200.0", - "@opentelemetry/sdk-trace-node": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.28.0" }, "devDependencies": { @@ -54,7 +54,7 @@ "@opentelemetry/context-async-hooks": "^2.0.0", "@opentelemetry/core": "^2.0.0", "@opentelemetry/instrumentation": "^0.200.0", - "@opentelemetry/sdk-trace-node": "^2.0.0", + "@opentelemetry/sdk-trace-base": "^2.0.0", "@opentelemetry/semantic-conventions": "^1.30.0" }, "scripts": { diff --git a/packages/opentelemetry/test/helpers/initOtel.ts b/packages/opentelemetry/test/helpers/initOtel.ts index e57fab424a02..b94d778d59f5 100644 --- a/packages/opentelemetry/test/helpers/initOtel.ts +++ b/packages/opentelemetry/test/helpers/initOtel.ts @@ -1,7 +1,7 @@ import { DiagLogLevel, context, diag, propagation, trace } from '@opentelemetry/api'; import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks'; import { defaultResource, resourceFromAttributes } from '@opentelemetry/resources'; -import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; +import { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION, @@ -52,9 +52,9 @@ export function initOtel(): void { } /** Just exported for tests. */ -export function setupOtel(client: TestClientInterface): NodeTracerProvider { +export function setupOtel(client: TestClientInterface): BasicTracerProvider { // Create and configure NodeTracerProvider - const provider = new NodeTracerProvider({ + const provider = new BasicTracerProvider({ sampler: new SentrySampler(client), resource: defaultResource().merge( resourceFromAttributes({ diff --git a/yarn.lock b/yarn.lock index 52c10bebe7dd..202e7d9d5a8a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5446,7 +5446,7 @@ resolved "https://registry.yarnpkg.com/@opentelemetry/api/-/api-1.9.0.tgz#d03eba68273dc0f7509e2a3d5cba21eae10379fe" integrity sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg== -"@opentelemetry/context-async-hooks@2.0.0", "@opentelemetry/context-async-hooks@^2.0.0": +"@opentelemetry/context-async-hooks@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@opentelemetry/context-async-hooks/-/context-async-hooks-2.0.0.tgz#c98a727238ca199cda943780acf6124af8d8cd80" integrity sha512-IEkJGzK1A9v3/EHjXh3s2IiFc6L4jfK+lNgKVgUjeUJQRRhnVFMIO3TAvKwonm9O1HebCuoOt98v8bZW7oVQHA== @@ -5744,7 +5744,7 @@ "@opentelemetry/core" "2.0.0" "@opentelemetry/semantic-conventions" "^1.29.0" -"@opentelemetry/sdk-trace-base@2.0.0", "@opentelemetry/sdk-trace-base@^2.0.0": +"@opentelemetry/sdk-trace-base@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.0.0.tgz#ebc06ea7537dea62f3882f8236c1234f4faf6b23" integrity sha512-qQnYdX+ZCkonM7tA5iU4fSRsVxbFGml8jbxOgipRGMFHKaXKHQ30js03rTobYjKjIfnOsZSbHKWF0/0v0OQGfw== @@ -5753,15 +5753,6 @@ "@opentelemetry/resources" "2.0.0" "@opentelemetry/semantic-conventions" "^1.29.0" -"@opentelemetry/sdk-trace-node@^2.0.0": - version "2.0.0" - resolved "https://registry.yarnpkg.com/@opentelemetry/sdk-trace-node/-/sdk-trace-node-2.0.0.tgz#ef9f8ab77ccb41a9c9ff272f6bf4bb6999491f5b" - integrity sha512-omdilCZozUjQwY3uZRBwbaRMJ3p09l4t187Lsdf0dGMye9WKD4NGcpgZRvqhI1dwcH6og+YXQEtoO9Wx3ykilg== - dependencies: - "@opentelemetry/context-async-hooks" "2.0.0" - "@opentelemetry/core" "2.0.0" - "@opentelemetry/sdk-trace-base" "2.0.0" - "@opentelemetry/semantic-conventions@1.28.0": version "1.28.0" resolved "https://registry.yarnpkg.com/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz#337fb2bca0453d0726696e745f50064411f646d6" From 7cc00062ce3ac65ba7fd19a8a2187189d3138e1d Mon Sep 17 00:00:00 2001 From: Andrei Borza Date: Wed, 19 Mar 2025 14:09:42 +0900 Subject: [PATCH 10/11] Remove leftover NodeTracerProvider --- .../node-otel-custom-sampler/package.json | 2 +- .../node-otel-sdk-node/package.json | 4 ++-- .../node-otel-without-tracing/package.json | 8 ++++---- .../test-applications/node-otel/package.json | 4 ++-- packages/node/src/sdk/client.ts | 4 ++-- packages/node/src/sdk/initOtel.ts | 2 +- packages/node/src/types.ts | 2 +- packages/node/test/helpers/mockSdkInit.ts | 8 ++++---- packages/node/test/integration/transactions.test.ts | 2 +- packages/opentelemetry/src/custom/client.ts | 4 ++-- packages/opentelemetry/src/sampler.ts | 4 ++-- packages/opentelemetry/src/spanExporter.ts | 2 +- packages/opentelemetry/src/spanProcessor.ts | 2 +- packages/opentelemetry/src/types.ts | 4 ++-- .../opentelemetry/src/utils/getRequestSpanData.ts | 2 +- .../opentelemetry/src/utils/groupSpansWithParents.ts | 2 +- packages/opentelemetry/src/utils/spanTypes.ts | 6 ++---- .../opentelemetry/test/asyncContextStrategy.test.ts | 4 ++-- packages/opentelemetry/test/helpers/mockSdkInit.ts | 12 ++++++------ .../test/integration/transactions.test.ts | 2 +- packages/opentelemetry/test/sampler.test.ts | 2 +- packages/opentelemetry/test/trace.test.ts | 4 ++-- .../opentelemetry/test/utils/getActiveSpan.test.ts | 6 +++--- packages/opentelemetry/test/utils/setupCheck.test.ts | 6 +++--- .../test/utils/setupEventContextTrace.test.ts | 4 ++-- packages/vercel-edge/src/client.ts | 4 ++-- 26 files changed, 52 insertions(+), 54 deletions(-) diff --git a/dev-packages/e2e-tests/test-applications/node-otel-custom-sampler/package.json b/dev-packages/e2e-tests/test-applications/node-otel-custom-sampler/package.json index c5fe928a931e..fab00c1feeba 100644 --- a/dev-packages/e2e-tests/test-applications/node-otel-custom-sampler/package.json +++ b/dev-packages/e2e-tests/test-applications/node-otel-custom-sampler/package.json @@ -12,7 +12,7 @@ }, "dependencies": { "@opentelemetry/api": "^1.9.0", - "@opentelemetry/sdk-trace-node": "^1.25.1", + "@opentelemetry/sdk-trace-node": "^2.0.0", "@sentry/node": "latest || *", "@sentry/opentelemetry": "latest || *", "@types/express": "4.17.17", diff --git a/dev-packages/e2e-tests/test-applications/node-otel-sdk-node/package.json b/dev-packages/e2e-tests/test-applications/node-otel-sdk-node/package.json index efb74e7346ad..92ec78f47837 100644 --- a/dev-packages/e2e-tests/test-applications/node-otel-sdk-node/package.json +++ b/dev-packages/e2e-tests/test-applications/node-otel-sdk-node/package.json @@ -11,8 +11,8 @@ "test:assert": "pnpm test" }, "dependencies": { - "@opentelemetry/sdk-node": "0.52.1", - "@opentelemetry/exporter-trace-otlp-http": "0.52.1", + "@opentelemetry/sdk-node": "0.200.0", + "@opentelemetry/exporter-trace-otlp-http": "0.200.0", "@sentry/core": "latest || *", "@sentry/node": "latest || *", "@sentry/opentelemetry": "latest || *", diff --git a/dev-packages/e2e-tests/test-applications/node-otel-without-tracing/package.json b/dev-packages/e2e-tests/test-applications/node-otel-without-tracing/package.json index b097e5b91930..73bd0240c5a2 100644 --- a/dev-packages/e2e-tests/test-applications/node-otel-without-tracing/package.json +++ b/dev-packages/e2e-tests/test-applications/node-otel-without-tracing/package.json @@ -11,11 +11,11 @@ "test:assert": "pnpm test" }, "dependencies": { - "@opentelemetry/sdk-trace-node": "1.26.0", - "@opentelemetry/exporter-trace-otlp-http": "0.53.0", + "@opentelemetry/sdk-trace-node": "2.0.0", + "@opentelemetry/exporter-trace-otlp-http": "0.200.0", "@opentelemetry/instrumentation-undici": "0.6.0", - "@opentelemetry/instrumentation-http": "0.53.0", - "@opentelemetry/instrumentation": "0.53.0", + "@opentelemetry/instrumentation-http": "0.200.0", + "@opentelemetry/instrumentation": "0.200.0", "@sentry/core": "latest || *", "@sentry/node": "latest || *", "@sentry/opentelemetry": "latest || *", diff --git a/dev-packages/e2e-tests/test-applications/node-otel/package.json b/dev-packages/e2e-tests/test-applications/node-otel/package.json index 3112ce669479..9aee4f42a043 100644 --- a/dev-packages/e2e-tests/test-applications/node-otel/package.json +++ b/dev-packages/e2e-tests/test-applications/node-otel/package.json @@ -11,8 +11,8 @@ "test:assert": "pnpm test" }, "dependencies": { - "@opentelemetry/sdk-node": "0.52.1", - "@opentelemetry/exporter-trace-otlp-http": "0.52.1", + "@opentelemetry/sdk-node": "0.200.0", + "@opentelemetry/exporter-trace-otlp-http": "0.200.0", "@sentry/core": "latest || *", "@sentry/node": "latest || *", "@sentry/opentelemetry": "latest || *", diff --git a/packages/node/src/sdk/client.ts b/packages/node/src/sdk/client.ts index ce97c0590cae..8e317c2bd6b0 100644 --- a/packages/node/src/sdk/client.ts +++ b/packages/node/src/sdk/client.ts @@ -2,7 +2,7 @@ import * as os from 'node:os'; import type { Tracer } from '@opentelemetry/api'; import { trace } from '@opentelemetry/api'; import { registerInstrumentations } from '@opentelemetry/instrumentation'; -import type { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; +import type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; import type { DynamicSamplingContext, Scope, ServerRuntimeClientOptions, TraceContext } from '@sentry/core'; import { SDK_VERSION, ServerRuntimeClient, applySdkMetadata, logger } from '@sentry/core'; import { getTraceContextForScope } from '@sentry/opentelemetry'; @@ -14,7 +14,7 @@ const DEFAULT_CLIENT_REPORT_FLUSH_INTERVAL_MS = 60_000; // 60s was chosen arbitr /** A client for using Sentry with Node & OpenTelemetry. */ export class NodeClient extends ServerRuntimeClient { - public traceProvider: NodeTracerProvider | undefined; + public traceProvider: BasicTracerProvider | undefined; private _tracer: Tracer | undefined; private _clientReportInterval: NodeJS.Timeout | undefined; private _clientReportOnExitFlushListener: (() => void) | undefined; diff --git a/packages/node/src/sdk/initOtel.ts b/packages/node/src/sdk/initOtel.ts index 536af1f8ff4e..e59f3879948f 100644 --- a/packages/node/src/sdk/initOtel.ts +++ b/packages/node/src/sdk/initOtel.ts @@ -108,7 +108,7 @@ function getPreloadMethods(integrationNames?: string[]): ((() => void) & { id: s } /** Just exported for tests. */ -export function setupOtel(client: NodeClient, options: AdditionalOpenTelemetryOptions = {}): NodeTracerProvider { +export function setupOtel(client: NodeClient, options: AdditionalOpenTelemetryOptions = {}): BasicTracerProvider { // Create and configure NodeTracerProvider const provider = new BasicTracerProvider({ sampler: new SentrySampler(client), diff --git a/packages/node/src/types.ts b/packages/node/src/types.ts index 56c225ff643f..9223619522e6 100644 --- a/packages/node/src/types.ts +++ b/packages/node/src/types.ts @@ -1,6 +1,6 @@ import type { Span as WriteableSpan } from '@opentelemetry/api'; import type { Instrumentation } from '@opentelemetry/instrumentation'; -import type { ReadableSpan, SpanProcessor } from '@opentelemetry/sdk-trace-node'; +import type { ReadableSpan, SpanProcessor } from '@opentelemetry/sdk-trace-base'; import type { ClientOptions, Options, SamplingContext, Scope, Span, TracePropagationTargets } from '@sentry/core'; import type { NodeTransportOptions } from './transports'; diff --git a/packages/node/test/helpers/mockSdkInit.ts b/packages/node/test/helpers/mockSdkInit.ts index c6142d4062ba..e482dac6ed08 100644 --- a/packages/node/test/helpers/mockSdkInit.ts +++ b/packages/node/test/helpers/mockSdkInit.ts @@ -1,5 +1,5 @@ import { ProxyTracerProvider, context, propagation, trace } from '@opentelemetry/api'; -import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; +import { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; import { getClient, getCurrentScope, getGlobalScope, getIsolationScope } from '@sentry/core'; import type { NodeClient } from '../../src'; @@ -27,7 +27,7 @@ export function mockSdkInit(options?: Partial) { }); } -export function cleanupOtel(_provider?: NodeTracerProvider): void { +export function cleanupOtel(_provider?: BasicTracerProvider): void { const provider = getProvider(_provider); if (!provider) { @@ -43,14 +43,14 @@ export function cleanupOtel(_provider?: NodeTracerProvider): void { propagation.disable(); } -export function getProvider(_provider?: NodeTracerProvider): NodeTracerProvider | undefined { +export function getProvider(_provider?: BasicTracerProvider): BasicTracerProvider | undefined { let provider = _provider || getClient()?.traceProvider || trace.getTracerProvider(); if (provider instanceof ProxyTracerProvider) { provider = provider.getDelegate(); } - if (!(provider instanceof NodeTracerProvider)) { + if (!(provider instanceof BasicTracerProvider)) { return undefined; } diff --git a/packages/node/test/integration/transactions.test.ts b/packages/node/test/integration/transactions.test.ts index 4fc8965df523..a7207d30cbac 100644 --- a/packages/node/test/integration/transactions.test.ts +++ b/packages/node/test/integration/transactions.test.ts @@ -1,5 +1,5 @@ import { TraceFlags, context, trace } from '@opentelemetry/api'; -import type { SpanProcessor } from '@opentelemetry/sdk-trace-node'; +import type { SpanProcessor } from '@opentelemetry/sdk-trace-base'; import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '@sentry/core'; import { logger } from '@sentry/core'; import type { TransactionEvent } from '@sentry/core'; diff --git a/packages/opentelemetry/src/custom/client.ts b/packages/opentelemetry/src/custom/client.ts index d64804facb94..533146263220 100644 --- a/packages/opentelemetry/src/custom/client.ts +++ b/packages/opentelemetry/src/custom/client.ts @@ -1,6 +1,6 @@ import type { Tracer } from '@opentelemetry/api'; import { trace } from '@opentelemetry/api'; -import type { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; +import type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; import type { Client } from '@sentry/core'; import { SDK_VERSION } from '@sentry/core'; import type { OpenTelemetryClient as OpenTelemetryClientInterface } from '../types'; @@ -23,7 +23,7 @@ export function wrapClientClass< >(ClientClass: ClassConstructor): WrappedClassConstructor { // @ts-expect-error We just assume that this is non-abstract, if you pass in an abstract class this would make it non-abstract class OpenTelemetryClient extends ClientClass implements OpenTelemetryClientInterface { - public traceProvider: NodeTracerProvider | undefined; + public traceProvider: BasicTracerProvider | undefined; private _tracer: Tracer | undefined; public constructor(...args: any[]) { diff --git a/packages/opentelemetry/src/sampler.ts b/packages/opentelemetry/src/sampler.ts index 88f9656ae42d..20a04f9cc9e7 100644 --- a/packages/opentelemetry/src/sampler.ts +++ b/packages/opentelemetry/src/sampler.ts @@ -2,8 +2,8 @@ import type { Context, Span, TraceState as TraceStateInterface } from '@opentelemetry/api'; import { SpanKind, isSpanContextValid, trace } from '@opentelemetry/api'; import { TraceState } from '@opentelemetry/core'; -import type { Sampler, SamplingResult } from '@opentelemetry/sdk-trace-node'; -import { SamplingDecision } from '@opentelemetry/sdk-trace-node'; +import type { Sampler, SamplingResult } from '@opentelemetry/sdk-trace-base'; +import { SamplingDecision } from '@opentelemetry/sdk-trace-base'; import { ATTR_HTTP_REQUEST_METHOD, ATTR_URL_FULL, diff --git a/packages/opentelemetry/src/spanExporter.ts b/packages/opentelemetry/src/spanExporter.ts index 480714f03774..799b48a72e7c 100644 --- a/packages/opentelemetry/src/spanExporter.ts +++ b/packages/opentelemetry/src/spanExporter.ts @@ -1,7 +1,7 @@ /* eslint-disable max-lines */ import type { Span } from '@opentelemetry/api'; import { SpanKind } from '@opentelemetry/api'; -import type { ReadableSpan } from '@opentelemetry/sdk-trace-node'; +import type { ReadableSpan } from '@opentelemetry/sdk-trace-base'; import { ATTR_HTTP_RESPONSE_STATUS_CODE, SEMATTRS_HTTP_STATUS_CODE } from '@opentelemetry/semantic-conventions'; import type { SpanAttributes, diff --git a/packages/opentelemetry/src/spanProcessor.ts b/packages/opentelemetry/src/spanProcessor.ts index 365e1a81a3a6..3430456caaee 100644 --- a/packages/opentelemetry/src/spanProcessor.ts +++ b/packages/opentelemetry/src/spanProcessor.ts @@ -1,6 +1,6 @@ import type { Context } from '@opentelemetry/api'; import { ROOT_CONTEXT, trace } from '@opentelemetry/api'; -import type { ReadableSpan, Span, SpanProcessor as SpanProcessorInterface } from '@opentelemetry/sdk-trace-node'; +import type { ReadableSpan, Span, SpanProcessor as SpanProcessorInterface } from '@opentelemetry/sdk-trace-base'; import { addChildSpanToSpan, getClient, diff --git a/packages/opentelemetry/src/types.ts b/packages/opentelemetry/src/types.ts index 1b4e95bfac57..807e9b1d857f 100644 --- a/packages/opentelemetry/src/types.ts +++ b/packages/opentelemetry/src/types.ts @@ -1,10 +1,10 @@ import type { Span as WriteableSpan, SpanKind, Tracer } from '@opentelemetry/api'; -import type { NodeTracerProvider, ReadableSpan } from '@opentelemetry/sdk-trace-node'; +import type { BasicTracerProvider, ReadableSpan } from '@opentelemetry/sdk-trace-base'; import type { Scope, Span, StartSpanOptions } from '@sentry/core'; export interface OpenTelemetryClient { tracer: Tracer; - traceProvider: NodeTracerProvider | undefined; + traceProvider: BasicTracerProvider | undefined; } export interface OpenTelemetrySpanContext extends StartSpanOptions { diff --git a/packages/opentelemetry/src/utils/getRequestSpanData.ts b/packages/opentelemetry/src/utils/getRequestSpanData.ts index f848f8f0b9b7..cc27aadf7a78 100644 --- a/packages/opentelemetry/src/utils/getRequestSpanData.ts +++ b/packages/opentelemetry/src/utils/getRequestSpanData.ts @@ -1,5 +1,5 @@ import type { Span } from '@opentelemetry/api'; -import type { ReadableSpan } from '@opentelemetry/sdk-trace-node'; +import type { ReadableSpan } from '@opentelemetry/sdk-trace-base'; import { ATTR_HTTP_REQUEST_METHOD, ATTR_URL_FULL, diff --git a/packages/opentelemetry/src/utils/groupSpansWithParents.ts b/packages/opentelemetry/src/utils/groupSpansWithParents.ts index 12cbd4efcc03..0d0daf112493 100644 --- a/packages/opentelemetry/src/utils/groupSpansWithParents.ts +++ b/packages/opentelemetry/src/utils/groupSpansWithParents.ts @@ -1,4 +1,4 @@ -import type { ReadableSpan } from '@opentelemetry/sdk-trace-node'; +import type { ReadableSpan } from '@opentelemetry/sdk-trace-base'; import { SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE } from '../semanticAttributes'; export interface SpanNode { diff --git a/packages/opentelemetry/src/utils/spanTypes.ts b/packages/opentelemetry/src/utils/spanTypes.ts index a04c66eb5dd2..c9036d930720 100644 --- a/packages/opentelemetry/src/utils/spanTypes.ts +++ b/packages/opentelemetry/src/utils/spanTypes.ts @@ -1,5 +1,5 @@ import type { SpanKind, SpanStatus } from '@opentelemetry/api'; -import type { ReadableSpan, TimedEvent } from '@opentelemetry/sdk-trace-node'; +import type { ReadableSpan, TimedEvent } from '@opentelemetry/sdk-trace-base'; import type { AbstractSpan } from '../types'; @@ -52,9 +52,7 @@ export function spanHasName(span: SpanType): span * This is necessary because the base `Span` type does not have a kind, * so in places where we are passed a generic span, we need to check if we want to access it. */ -export function spanHasParentId( - span: SpanType, -): span is SpanType { +export function spanHasParentId(span: SpanType): span is SpanType { const castSpan = span as ReadableSpan; return !!castSpan.parentSpanContext?.spanId; } diff --git a/packages/opentelemetry/test/asyncContextStrategy.test.ts b/packages/opentelemetry/test/asyncContextStrategy.test.ts index fd91017ddbd1..cdbb91774561 100644 --- a/packages/opentelemetry/test/asyncContextStrategy.test.ts +++ b/packages/opentelemetry/test/asyncContextStrategy.test.ts @@ -1,4 +1,4 @@ -import type { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; +import type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; import { Scope as ScopeClass, getCurrentScope, @@ -16,7 +16,7 @@ import { setupOtel } from './helpers/initOtel'; import { cleanupOtel } from './helpers/mockSdkInit'; describe('asyncContextStrategy', () => { - let provider: NodeTracerProvider | undefined; + let provider: BasicTracerProvider | undefined; beforeEach(() => { getCurrentScope().clear(); diff --git a/packages/opentelemetry/test/helpers/mockSdkInit.ts b/packages/opentelemetry/test/helpers/mockSdkInit.ts index 6d3a2f5dc7e7..c5787296953b 100644 --- a/packages/opentelemetry/test/helpers/mockSdkInit.ts +++ b/packages/opentelemetry/test/helpers/mockSdkInit.ts @@ -1,5 +1,5 @@ import { ProxyTracerProvider, context, propagation, trace } from '@opentelemetry/api'; -import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; +import { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; import type { ClientOptions, Options } from '@sentry/core'; import { getClient } from '@sentry/core'; @@ -7,8 +7,8 @@ import { getCurrentScope, getGlobalScope, getIsolationScope, flush } from '@sent import { setOpenTelemetryContextAsyncContextStrategy } from '../../src/asyncContextStrategy'; import { clearOpenTelemetrySetupCheck } from '../../src/utils/setupCheck'; import { init as initTestClient } from './TestClient'; +import type { TestClientInterface } from './TestClient'; import { initOtel } from './initOtel'; -import type { OpenTelemetryClient } from '../../src/types'; const PUBLIC_DSN = 'https://username@domain/123'; @@ -35,7 +35,7 @@ export function mockSdkInit(options?: Partial) { init({ dsn: PUBLIC_DSN, ...options }); } -export async function cleanupOtel(_provider?: NodeTracerProvider): Promise { +export async function cleanupOtel(_provider?: BasicTracerProvider): Promise { clearOpenTelemetrySetupCheck(); const provider = getProvider(_provider); @@ -53,14 +53,14 @@ export async function cleanupOtel(_provider?: NodeTracerProvider): Promise await flush(); } -export function getProvider(_provider?: NodeTracerProvider): NodeTracerProvider | undefined { - let provider = _provider || getClient()?.traceProvider || trace.getTracerProvider(); +export function getProvider(_provider?: BasicTracerProvider): BasicTracerProvider | undefined { + let provider = _provider || getClient()?.traceProvider || trace.getTracerProvider(); if (provider instanceof ProxyTracerProvider) { provider = provider.getDelegate(); } - if (!(provider instanceof NodeTracerProvider)) { + if (!(provider instanceof BasicTracerProvider)) { return undefined; } diff --git a/packages/opentelemetry/test/integration/transactions.test.ts b/packages/opentelemetry/test/integration/transactions.test.ts index 7b4e6ec9d126..a745b9187e57 100644 --- a/packages/opentelemetry/test/integration/transactions.test.ts +++ b/packages/opentelemetry/test/integration/transactions.test.ts @@ -1,7 +1,7 @@ import type { SpanContext } from '@opentelemetry/api'; import { ROOT_CONTEXT } from '@opentelemetry/api'; import { TraceFlags, context, trace } from '@opentelemetry/api'; -import type { SpanProcessor } from '@opentelemetry/sdk-trace-node'; +import type { SpanProcessor } from '@opentelemetry/sdk-trace-base'; import { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, diff --git a/packages/opentelemetry/test/sampler.test.ts b/packages/opentelemetry/test/sampler.test.ts index 56f31b409f95..984a65a50a04 100644 --- a/packages/opentelemetry/test/sampler.test.ts +++ b/packages/opentelemetry/test/sampler.test.ts @@ -1,6 +1,6 @@ import { SpanKind, context, trace } from '@opentelemetry/api'; import { TraceState } from '@opentelemetry/core'; -import { SamplingDecision } from '@opentelemetry/sdk-trace-node'; +import { SamplingDecision } from '@opentelemetry/sdk-trace-base'; import { ATTR_HTTP_REQUEST_METHOD } from '@opentelemetry/semantic-conventions'; import { generateSpanId, generateTraceId } from '@sentry/core'; import { describe, afterEach, vi, expect, it } from 'vitest'; diff --git a/packages/opentelemetry/test/trace.test.ts b/packages/opentelemetry/test/trace.test.ts index 10421e2bafb1..f2924ea2fb16 100644 --- a/packages/opentelemetry/test/trace.test.ts +++ b/packages/opentelemetry/test/trace.test.ts @@ -3,8 +3,8 @@ import type { Span, TimeInput } from '@opentelemetry/api'; import { ROOT_CONTEXT } from '@opentelemetry/api'; import { SpanKind } from '@opentelemetry/api'; import { TraceFlags, context, trace } from '@opentelemetry/api'; -import type { ReadableSpan } from '@opentelemetry/sdk-trace-node'; -import { Span as SpanClass } from '@opentelemetry/sdk-trace-node'; +import type { ReadableSpan } from '@opentelemetry/sdk-trace-base'; +import { Span as SpanClass } from '@opentelemetry/sdk-trace-base'; import { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, diff --git a/packages/opentelemetry/test/utils/getActiveSpan.test.ts b/packages/opentelemetry/test/utils/getActiveSpan.test.ts index d2bbe181a982..964c75bc4ed9 100644 --- a/packages/opentelemetry/test/utils/getActiveSpan.test.ts +++ b/packages/opentelemetry/test/utils/getActiveSpan.test.ts @@ -1,5 +1,5 @@ import { trace } from '@opentelemetry/api'; -import type { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; +import type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; import { getRootSpan } from '@sentry/core'; import { describe, afterEach, beforeEach, expect, it } from 'vitest'; @@ -9,7 +9,7 @@ import { setupOtel } from '../helpers/initOtel'; import { cleanupOtel } from '../helpers/mockSdkInit'; describe('getActiveSpan', () => { - let provider: NodeTracerProvider | undefined; + let provider: BasicTracerProvider | undefined; beforeEach(() => { const client = new TestClient(getDefaultTestClientOptions()); @@ -94,7 +94,7 @@ describe('getActiveSpan', () => { }); describe('getRootSpan', () => { - let provider: NodeTracerProvider | undefined; + let provider: BasicTracerProvider | undefined; beforeEach(() => { const client = new TestClient(getDefaultTestClientOptions({ tracesSampleRate: 1 })); diff --git a/packages/opentelemetry/test/utils/setupCheck.test.ts b/packages/opentelemetry/test/utils/setupCheck.test.ts index 2c3d4bcf228b..bc66c2eebaa2 100644 --- a/packages/opentelemetry/test/utils/setupCheck.test.ts +++ b/packages/opentelemetry/test/utils/setupCheck.test.ts @@ -1,4 +1,4 @@ -import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; +import { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; import { describe, afterEach, beforeEach, expect, it } from 'vitest'; import { SentrySampler } from '../../src/sampler'; @@ -9,7 +9,7 @@ import { setupOtel } from '../helpers/initOtel'; import { cleanupOtel } from '../helpers/mockSdkInit'; describe('openTelemetrySetupCheck', () => { - let provider: NodeTracerProvider | undefined; + let provider: BasicTracerProvider | undefined; beforeEach(() => { cleanupOtel(provider); @@ -34,7 +34,7 @@ describe('openTelemetrySetupCheck', () => { it('returns partial setup parts', () => { const client = new TestClient(getDefaultTestClientOptions()); - provider = new NodeTracerProvider({ + provider = new BasicTracerProvider({ sampler: new SentrySampler(client), spanProcessors: [new SentrySpanProcessor()], }); diff --git a/packages/opentelemetry/test/utils/setupEventContextTrace.test.ts b/packages/opentelemetry/test/utils/setupEventContextTrace.test.ts index e0d25cbb6158..21f7279fd48d 100644 --- a/packages/opentelemetry/test/utils/setupEventContextTrace.test.ts +++ b/packages/opentelemetry/test/utils/setupEventContextTrace.test.ts @@ -1,4 +1,4 @@ -import type { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; +import type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; import { captureException, setCurrentClient } from '@sentry/core'; import { describe, afterEach, beforeEach, expect, it, vi, afterAll } from 'vitest'; @@ -13,7 +13,7 @@ const PUBLIC_DSN = 'https://username@domain/123'; describe('setupEventContextTrace', () => { const beforeSend = vi.fn(() => null); let client: TestClientInterface; - let provider: NodeTracerProvider | undefined; + let provider: BasicTracerProvider | undefined; beforeEach(() => { client = new TestClient( diff --git a/packages/vercel-edge/src/client.ts b/packages/vercel-edge/src/client.ts index 0eb52b3865da..469ed82b3da8 100644 --- a/packages/vercel-edge/src/client.ts +++ b/packages/vercel-edge/src/client.ts @@ -2,7 +2,7 @@ import type { ServerRuntimeClientOptions } from '@sentry/core'; import { applySdkMetadata } from '@sentry/core'; import { ServerRuntimeClient } from '@sentry/core'; -import type { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; +import type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base'; import type { VercelEdgeClientOptions } from './types'; declare const process: { @@ -16,7 +16,7 @@ declare const process: { * @see ServerRuntimeClient for usage documentation. */ export class VercelEdgeClient extends ServerRuntimeClient { - public traceProvider: NodeTracerProvider | undefined; + public traceProvider: BasicTracerProvider | undefined; /** * Creates a new Vercel Edge Runtime SDK instance. From f2314d4d8daf9c6f2b53b340d513bde8947727c1 Mon Sep 17 00:00:00 2001 From: Andrei Borza Date: Wed, 19 Mar 2025 14:29:59 +0900 Subject: [PATCH 11/11] Replace SpanClass with isSpan helper --- packages/opentelemetry/test/helpers/isSpan.ts | 12 ++++++++++++ packages/opentelemetry/test/trace.test.ts | 14 +++++++------- 2 files changed, 19 insertions(+), 7 deletions(-) create mode 100644 packages/opentelemetry/test/helpers/isSpan.ts diff --git a/packages/opentelemetry/test/helpers/isSpan.ts b/packages/opentelemetry/test/helpers/isSpan.ts new file mode 100644 index 000000000000..3146551e3da7 --- /dev/null +++ b/packages/opentelemetry/test/helpers/isSpan.ts @@ -0,0 +1,12 @@ +import type { Span } from '@opentelemetry/api'; +import { INVALID_TRACEID, INVALID_SPANID, type SpanContext } from '@opentelemetry/api'; + +export const isSpan = (value: unknown): value is Span => { + return ( + typeof value === 'object' && + value !== null && + 'spanContext' in value && + (value.spanContext as () => SpanContext)().traceId !== INVALID_TRACEID && + (value.spanContext as () => SpanContext)().spanId !== INVALID_SPANID + ); +}; diff --git a/packages/opentelemetry/test/trace.test.ts b/packages/opentelemetry/test/trace.test.ts index f2924ea2fb16..daca1df6f15c 100644 --- a/packages/opentelemetry/test/trace.test.ts +++ b/packages/opentelemetry/test/trace.test.ts @@ -4,7 +4,6 @@ import { ROOT_CONTEXT } from '@opentelemetry/api'; import { SpanKind } from '@opentelemetry/api'; import { TraceFlags, context, trace } from '@opentelemetry/api'; import type { ReadableSpan } from '@opentelemetry/sdk-trace-base'; -import { Span as SpanClass } from '@opentelemetry/sdk-trace-base'; import { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, @@ -32,6 +31,7 @@ import { getSpanKind } from '../src/utils/getSpanKind'; import { makeTraceState } from '../src/utils/makeTraceState'; import { spanHasAttributes, spanHasName } from '../src/utils/spanTypes'; import { cleanupOtel, mockSdkInit } from './helpers/mockSdkInit'; +import { isSpan } from './helpers/isSpan'; describe('trace', () => { beforeEach(() => { @@ -537,7 +537,7 @@ describe('trace', () => { return span; }); - expect(span).not.toBeInstanceOf(SpanClass); + expect(isSpan(span)).toEqual(false); }); it('creates a span if there is a parent', () => { @@ -549,7 +549,7 @@ describe('trace', () => { return span; }); - expect(span).toBeInstanceOf(SpanClass); + expect(isSpan(span)).toEqual(true); }); }); }); @@ -829,7 +829,7 @@ describe('trace', () => { it('does not create a span if there is no parent', () => { const span = startInactiveSpan({ name: 'test span', onlyIfParent: true }); - expect(span).not.toBeInstanceOf(SpanClass); + expect(isSpan(span)).toEqual(false); }); it('creates a span if there is a parent', () => { @@ -839,7 +839,7 @@ describe('trace', () => { return span; }); - expect(span).toBeInstanceOf(SpanClass); + expect(isSpan(span)).toEqual(true); }); }); @@ -1199,7 +1199,7 @@ describe('trace', () => { return span; }); - expect(span).not.toBeInstanceOf(SpanClass); + expect(isSpan(span)).toEqual(false); }); it('creates a span if there is a parent', () => { @@ -1211,7 +1211,7 @@ describe('trace', () => { return span; }); - expect(span).toBeInstanceOf(SpanClass); + expect(isSpan(span)).toEqual(true); }); }); });