Skip to content

Commit 8d2fad2

Browse files
committed
chore: Bump otel 2.0.0
1 parent 317782c commit 8d2fad2

21 files changed

+121
-92
lines changed

packages/aws-serverless/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@
6565
},
6666
"dependencies": {
6767
"@opentelemetry/api": "^1.9.0",
68-
"@opentelemetry/instrumentation": "^0.57.2",
68+
"@opentelemetry/instrumentation": "^0.200.0-dev.0",
6969
"@opentelemetry/instrumentation-aws-lambda": "0.50.3",
7070
"@opentelemetry/instrumentation-aws-sdk": "0.49.1",
7171
"@sentry/core": "9.2.0",

packages/nestjs/package.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@
4545
},
4646
"dependencies": {
4747
"@opentelemetry/api": "^1.9.0",
48-
"@opentelemetry/core": "^1.30.1",
49-
"@opentelemetry/instrumentation": "0.57.2",
48+
"@opentelemetry/core": "^2.0.0-dev.0",
49+
"@opentelemetry/instrumentation": "0.200.0-dev.0",
5050
"@opentelemetry/instrumentation-nestjs-core": "0.44.1",
5151
"@opentelemetry/semantic-conventions": "^1.30.0",
5252
"@sentry/core": "9.2.0",

packages/nestjs/src/integrations/sentry-nest-event-instrumentation.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { isWrapped } from '@opentelemetry/core';
21
import type { InstrumentationConfig } from '@opentelemetry/instrumentation';
32
import {
43
InstrumentationBase,
54
InstrumentationNodeModuleDefinition,
65
InstrumentationNodeModuleFile,
6+
isWrapped,
77
} from '@opentelemetry/instrumentation';
88
import { SDK_VERSION, captureException, startSpan } from '@sentry/core';
99
import { getEventSpanOptions } from './helpers';

packages/nestjs/src/integrations/sentry-nest-instrumentation.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { isWrapped } from '@opentelemetry/core';
21
import type { InstrumentationConfig } from '@opentelemetry/instrumentation';
32
import {
43
InstrumentationBase,
54
InstrumentationNodeModuleDefinition,
65
InstrumentationNodeModuleFile,
6+
isWrapped,
77
} from '@opentelemetry/instrumentation';
88
import type { Span } from '@sentry/core';
99
import {

packages/node/package.json

+6-6
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,9 @@
6666
},
6767
"dependencies": {
6868
"@opentelemetry/api": "^1.9.0",
69-
"@opentelemetry/context-async-hooks": "^1.30.1",
70-
"@opentelemetry/core": "^1.30.1",
71-
"@opentelemetry/instrumentation": "^0.57.2",
69+
"@opentelemetry/context-async-hooks": "^2.0.0-dev.0",
70+
"@opentelemetry/core": "^2.0.0-dev.0",
71+
"@opentelemetry/instrumentation": "^0.200.0-dev.0",
7272
"@opentelemetry/instrumentation-amqplib": "^0.46.1",
7373
"@opentelemetry/instrumentation-connect": "0.43.1",
7474
"@opentelemetry/instrumentation-dataloader": "0.16.1",
@@ -78,7 +78,7 @@
7878
"@opentelemetry/instrumentation-generic-pool": "0.43.1",
7979
"@opentelemetry/instrumentation-graphql": "0.47.1",
8080
"@opentelemetry/instrumentation-hapi": "0.45.2",
81-
"@opentelemetry/instrumentation-http": "0.57.2",
81+
"@opentelemetry/instrumentation-http": "0.200.0-dev.0",
8282
"@opentelemetry/instrumentation-ioredis": "0.47.1",
8383
"@opentelemetry/instrumentation-kafkajs": "0.7.1",
8484
"@opentelemetry/instrumentation-knex": "0.44.1",
@@ -92,8 +92,8 @@
9292
"@opentelemetry/instrumentation-redis-4": "0.46.1",
9393
"@opentelemetry/instrumentation-tedious": "0.18.1",
9494
"@opentelemetry/instrumentation-undici": "0.10.1",
95-
"@opentelemetry/resources": "^1.30.1",
96-
"@opentelemetry/sdk-trace-base": "^1.30.1",
95+
"@opentelemetry/resources": "^2.0.0-dev.0",
96+
"@opentelemetry/sdk-trace-node": "^2.0.0-dev.0",
9797
"@opentelemetry/semantic-conventions": "^1.30.0",
9898
"@prisma/instrumentation": "6.4.1",
9999
"@sentry/core": "9.2.0",

packages/node/src/integrations/http/SentryHttpInstrumentation.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import type * as http from 'node:http';
33
import type { IncomingMessage, RequestOptions } from 'node:http';
44
import type * as https from 'node:https';
55
import type { EventEmitter } from 'node:stream';
6-
import { VERSION } from '@opentelemetry/core';
76
import type { InstrumentationConfig } from '@opentelemetry/instrumentation';
87
import { InstrumentationBase, InstrumentationNodeModuleDefinition } from '@opentelemetry/instrumentation';
98
import type { AggregationCounts, Client, RequestEventData, SanitizedRequestData, Scope } from '@sentry/core';
@@ -81,7 +80,7 @@ const MAX_BODY_BYTE_LENGTH = 1024 * 1024;
8180
*/
8281
export class SentryHttpInstrumentation extends InstrumentationBase<SentryHttpInstrumentationOptions> {
8382
public constructor(config: SentryHttpInstrumentationOptions = {}) {
84-
super('@sentry/instrumentation-http', VERSION, config);
83+
super('@sentry/instrumentation-http', '2.0.0-dev.0', config);
8584
}
8685

8786
/** @inheritdoc */

packages/node/src/integrations/node-fetch/SentryNodeFetchInstrumentation.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { VERSION } from '@opentelemetry/core';
21
import type { InstrumentationConfig } from '@opentelemetry/instrumentation';
32
import { InstrumentationBase } from '@opentelemetry/instrumentation';
43
import type { SanitizedRequestData } from '@sentry/core';
@@ -56,7 +55,7 @@ export class SentryNodeFetchInstrumentation extends InstrumentationBase<SentryNo
5655
private _propagationDecisionMap: LRUMap<string, boolean>;
5756

5857
public constructor(config: SentryNodeFetchInstrumentationOptions = {}) {
59-
super('@sentry/instrumentation-node-fetch', VERSION, config);
58+
super('@sentry/instrumentation-node-fetch', '2.0.0-dev.0', config);
6059
this._channelSubs = [];
6160
this._propagationDecisionMap = new LRUMap<string, boolean>(100);
6261
}

packages/node/src/sdk/client.ts

+4-5
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import * as os from 'node:os';
22
import type { Tracer } from '@opentelemetry/api';
33
import { trace } from '@opentelemetry/api';
44
import { registerInstrumentations } from '@opentelemetry/instrumentation';
5-
import type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base';
5+
import type { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';
66
import type { DynamicSamplingContext, Scope, ServerRuntimeClientOptions, TraceContext } from '@sentry/core';
77
import { SDK_VERSION, ServerRuntimeClient, applySdkMetadata, logger } from '@sentry/core';
88
import { getTraceContextForScope } from '@sentry/opentelemetry';
@@ -14,7 +14,7 @@ const DEFAULT_CLIENT_REPORT_FLUSH_INTERVAL_MS = 60_000; // 60s was chosen arbitr
1414

1515
/** A client for using Sentry with Node & OpenTelemetry. */
1616
export class NodeClient extends ServerRuntimeClient<NodeClientOptions> {
17-
public traceProvider: BasicTracerProvider | undefined;
17+
public traceProvider: NodeTracerProvider | undefined;
1818
private _tracer: Tracer | undefined;
1919
private _clientReportInterval: NodeJS.Timeout | undefined;
2020
private _clientReportOnExitFlushListener: (() => void) | undefined;
@@ -60,10 +60,9 @@ export class NodeClient extends ServerRuntimeClient<NodeClientOptions> {
6060
// eslint-disable-next-line jsdoc/require-jsdoc
6161
public async flush(timeout?: number): Promise<boolean> {
6262
const provider = this.traceProvider;
63-
const spanProcessor = provider?.activeSpanProcessor;
6463

65-
if (spanProcessor) {
66-
await spanProcessor.forceFlush();
64+
if (provider) {
65+
await provider.forceFlush();
6766
}
6867

6968
if (this.getOptions().sendClientReports) {

packages/node/src/sdk/initOtel.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import moduleModule from 'module';
22
import { DiagLogLevel, diag } from '@opentelemetry/api';
3-
import { Resource } from '@opentelemetry/resources';
4-
import type { SpanProcessor } from '@opentelemetry/sdk-trace-base';
5-
import { BasicTracerProvider } from '@opentelemetry/sdk-trace-base';
3+
import { resourceFromAttributes } from '@opentelemetry/resources';
4+
import type { SpanProcessor } from '@opentelemetry/sdk-trace-node';
5+
import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';
66
import {
77
ATTR_SERVICE_NAME,
88
ATTR_SERVICE_VERSION,
@@ -108,11 +108,11 @@ function getPreloadMethods(integrationNames?: string[]): ((() => void) & { id: s
108108
}
109109

110110
/** Just exported for tests. */
111-
export function setupOtel(client: NodeClient, options: AdditionalOpenTelemetryOptions = {}): BasicTracerProvider {
111+
export function setupOtel(client: NodeClient, options: AdditionalOpenTelemetryOptions = {}): NodeTracerProvider {
112112
// Create and configure NodeTracerProvider
113-
const provider = new BasicTracerProvider({
113+
const provider = new NodeTracerProvider({
114114
sampler: new SentrySampler(client),
115-
resource: new Resource({
115+
resource: resourceFromAttributes({
116116
[ATTR_SERVICE_NAME]: 'node',
117117
// eslint-disable-next-line deprecation/deprecation
118118
[SEMRESATTRS_SERVICE_NAMESPACE]: 'sentry',

packages/node/src/utils/ensureIsWrapped.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { isWrapped } from '@opentelemetry/core';
1+
import { isWrapped } from '@opentelemetry/instrumentation';
22
import { consoleSandbox, getClient, getGlobalScope, hasSpansEnabled, isEnabled } from '@sentry/core';
33
import type { NodeClient } from '../sdk/client';
44
import { isCjs } from './commonjs';

packages/opentelemetry/package.json

+8-8
Original file line numberDiff line numberDiff line change
@@ -43,18 +43,18 @@
4343
},
4444
"peerDependencies": {
4545
"@opentelemetry/api": "^1.9.0",
46-
"@opentelemetry/context-async-hooks": "^1.30.1",
47-
"@opentelemetry/core": "^1.30.1",
48-
"@opentelemetry/instrumentation": "^0.57.1",
49-
"@opentelemetry/sdk-trace-base": "^1.30.1",
46+
"@opentelemetry/context-async-hooks": "^2.0.0-dev.0",
47+
"@opentelemetry/core": "^2.0.0-dev.0",
48+
"@opentelemetry/instrumentation": "^0.200.0-dev.0",
49+
"@opentelemetry/sdk-trace-base": "^2.0.0-dev.0",
5050
"@opentelemetry/semantic-conventions": "^1.28.0"
5151
},
5252
"devDependencies": {
5353
"@opentelemetry/api": "^1.9.0",
54-
"@opentelemetry/context-async-hooks": "^1.30.1",
55-
"@opentelemetry/core": "^1.30.1",
56-
"@opentelemetry/instrumentation": "^0.57.2",
57-
"@opentelemetry/sdk-trace-base": "^1.30.1",
54+
"@opentelemetry/context-async-hooks": "^2.0.0-dev.0",
55+
"@opentelemetry/core": "^2.0.0-dev.0",
56+
"@opentelemetry/instrumentation": "^0.200.0-dev.0",
57+
"@opentelemetry/sdk-trace-base": "^2.0.0-dev.0",
5858
"@opentelemetry/semantic-conventions": "^1.30.0"
5959
},
6060
"scripts": {

packages/opentelemetry/src/custom/client.ts

+3-4
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import type { OpenTelemetryClient as OpenTelemetryClientInterface } from '../typ
1010
/* eslint-disable @typescript-eslint/no-explicit-any */
1111

1212
/**
13-
* Wrap an Client class with things we need for OpenTelemetry support.
13+
* Wrap a Client class with things we need for OpenTelemetry support.
1414
* Make sure that the Client class passed in is non-abstract!
1515
*
1616
* Usage:
@@ -49,10 +49,9 @@ export function wrapClientClass<
4949
*/
5050
public async flush(timeout?: number): Promise<boolean> {
5151
const provider = this.traceProvider;
52-
const spanProcessor = provider?.activeSpanProcessor;
5352

54-
if (spanProcessor) {
55-
await spanProcessor.forceFlush();
53+
if (provider) {
54+
await provider.forceFlush();
5655
}
5756

5857
return super.flush(timeout);

packages/opentelemetry/src/spanExporter.ts

+4-3
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,7 @@ export function createTransactionForOtelSpan(span: ReadableSpan): TransactionEve
256256
// even if `span.parentSpanId` is set
257257
// this is the case when we are starting a new trace, where we have a virtual span based on the propagationContext
258258
// We only want to continue the traceId in this case, but ignore the parent span
259-
const parent_span_id = span.parentSpanId;
259+
const parent_span_id = span.parentSpanContext?.spanId;
260260

261261
const status = mapStatus(span);
262262

@@ -324,8 +324,9 @@ function createAndFinishSpanForOtelSpan(node: SpanNode, spans: SpanJSON[], sentS
324324

325325
const span_id = span.spanContext().spanId;
326326
const trace_id = span.spanContext().traceId;
327+
const parent_span_id = span.parentSpanContext?.spanId;
327328

328-
const { attributes, startTime, endTime, parentSpanId, links } = span;
329+
const { attributes, startTime, endTime, links } = span;
329330

330331
const { op, description, data, origin = 'manual' } = getSpanData(span);
331332
const allData = dropUndefinedKeys({
@@ -342,7 +343,7 @@ function createAndFinishSpanForOtelSpan(node: SpanNode, spans: SpanJSON[], sentS
342343
trace_id,
343344
data: allData,
344345
description,
345-
parent_span_id: parentSpanId,
346+
parent_span_id,
346347
start_timestamp: spanTimeInputToSeconds(startTime),
347348
// This is [0,0] by default in OTEL, in which case we want to interpret this as no end time
348349
timestamp: spanTimeInputToSeconds(endTime) || undefined,

packages/opentelemetry/src/utils/groupSpansWithParents.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export function getLocalParentId(span: ReadableSpan): string | undefined {
3333
const parentIsRemote = span.attributes[SEMANTIC_ATTRIBUTE_SENTRY_PARENT_IS_REMOTE] === true;
3434
// If the parentId is the trace parent ID, we pretend it's undefined
3535
// As this means the parent exists somewhere else
36-
return !parentIsRemote ? span.parentSpanId : undefined;
36+
return !parentIsRemote ? span.parentSpanContext?.spanId : undefined;
3737
}
3838

3939
function createOrUpdateSpanNodeAndRefs(nodeMap: SpanMap, span: ReadableSpan): void {

packages/opentelemetry/src/utils/spanTypes.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ export function spanHasParentId<SpanType extends AbstractSpan>(
5656
span: SpanType,
5757
): span is SpanType & { parentSpanId: string } {
5858
const castSpan = span as ReadableSpan;
59-
return !!castSpan.parentSpanId;
59+
return !!castSpan.parentSpanContext?.spanId;
6060
}
6161

6262
/**

packages/opentelemetry/test/helpers/initOtel.ts

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { DiagLogLevel, diag } from '@opentelemetry/api';
22
import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';
3-
import { Resource } from '@opentelemetry/resources';
4-
import { BasicTracerProvider } from '@opentelemetry/sdk-trace-base';
3+
import { resourceFromAttributes } from '@opentelemetry/resources';
4+
import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';
55
import {
66
ATTR_SERVICE_NAME,
77
ATTR_SERVICE_VERSION,
@@ -52,11 +52,11 @@ export function initOtel(): void {
5252
}
5353

5454
/** Just exported for tests. */
55-
export function setupOtel(client: TestClientInterface): BasicTracerProvider {
55+
export function setupOtel(client: TestClientInterface): NodeTracerProvider {
5656
// Create and configure NodeTracerProvider
57-
const provider = new BasicTracerProvider({
57+
const provider = new NodeTracerProvider({
5858
sampler: new SentrySampler(client),
59-
resource: new Resource({
59+
resource: resourceFromAttributes({
6060
[ATTR_SERVICE_NAME]: 'opentelemetry-test',
6161
// eslint-disable-next-line deprecation/deprecation
6262
[SEMRESATTRS_SERVICE_NAMESPACE]: 'sentry',

packages/opentelemetry/test/trace.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1927,5 +1927,5 @@ function getSpanAttributes(span: AbstractSpan): Record<string, unknown> | undefi
19271927
}
19281928

19291929
function getSpanParentSpanId(span: AbstractSpan): string | undefined {
1930-
return (span as ReadableSpan).parentSpanId;
1930+
return (span as ReadableSpan).parentSpanContext?.spanId;
19311931
}

packages/vercel-edge/package.json

+3-3
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,9 @@
4444
},
4545
"devDependencies": {
4646
"@edge-runtime/types": "3.0.1",
47-
"@opentelemetry/core": "^1.30.1",
48-
"@opentelemetry/resources": "^1.30.1",
49-
"@opentelemetry/sdk-trace-base": "^1.30.1",
47+
"@opentelemetry/core": "^2.0.0-dev.0",
48+
"@opentelemetry/resources": "^2.0.0-dev.0",
49+
"@opentelemetry/sdk-trace-node": "^2.0.0-dev.0",
5050
"@opentelemetry/semantic-conventions": "^1.28.0",
5151
"@sentry/opentelemetry": "9.2.0"
5252
},

packages/vercel-edge/src/client.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,9 @@ export class VercelEdgeClient extends ServerRuntimeClient<VercelEdgeClientOption
4141
// eslint-disable-next-line jsdoc/require-jsdoc
4242
public async flush(timeout?: number): Promise<boolean> {
4343
const provider = this.traceProvider;
44-
const spanProcessor = provider?.activeSpanProcessor;
4544

46-
if (spanProcessor) {
47-
await spanProcessor.forceFlush();
45+
if (provider) {
46+
await provider.forceFlush();
4847
}
4948

5049
if (this.getOptions().sendClientReports) {

packages/vercel-edge/src/sdk.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { DiagLogLevel, diag } from '@opentelemetry/api';
2-
import { Resource } from '@opentelemetry/resources';
3-
import { BasicTracerProvider } from '@opentelemetry/sdk-trace-base';
2+
import { resourceFromAttributes } from '@opentelemetry/resources';
3+
import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';
44
import {
55
ATTR_SERVICE_NAME,
66
ATTR_SERVICE_VERSION,
@@ -151,9 +151,9 @@ export function setupOtel(client: VercelEdgeClient): void {
151151
}
152152

153153
// Create and configure NodeTracerProvider
154-
const provider = new BasicTracerProvider({
154+
const provider = new NodeTracerProvider({
155155
sampler: new SentrySampler(client),
156-
resource: new Resource({
156+
resource: resourceFromAttributes({
157157
[ATTR_SERVICE_NAME]: 'edge',
158158
// eslint-disable-next-line deprecation/deprecation
159159
[SEMRESATTRS_SERVICE_NAMESPACE]: 'sentry',

0 commit comments

Comments
 (0)