Skip to content

Commit 2de71df

Browse files
feat(deps): Bump OpenTelemetry instrumentations (#18934)
- Bump @opentelemetry/context-async-hooks from 2.4.0 to 2.5.0 - Bump @opentelemetry/core from 2.4.0 to 2.5.0 - Bump @opentelemetry/instrumentation from 0.210.0 to 0.211.0 - Bump @opentelemetry/instrumentation-amqplib from 0.57.0 to 0.58.0 - Bump @opentelemetry/instrumentation-aws-sdk from 0.65.0 to 0.66.0 - Bump @opentelemetry/instrumentation-connect from 0.53.0 to 0.54.0 - Bump @opentelemetry/instrumentation-dataloader from 0.27.0 to 0.28.0 - Bump @opentelemetry/instrumentation-express from 0.58.0 to 0.59.0 - Bump @opentelemetry/instrumentation-fs from 0.29.0 to 0.30.0 - Bump @opentelemetry/instrumentation-generic-pool from 0.53.0 to 0.54.0 - Bump @opentelemetry/instrumentation-graphql from 0.57.0 to 0.58.0 - Bump @opentelemetry/instrumentation-hapi from 0.56.0 to 0.57.0 - Bump @opentelemetry/instrumentation-http from 0.210.0 to 0.211.0 - Bump @opentelemetry/instrumentation-ioredis from 0.58.0 to 0.59.0 - Bump @opentelemetry/instrumentation-kafkajs from 0.19.0 to 0.20.0 - Bump @opentelemetry/instrumentation-knex from 0.54.0 to 0.55.0 - Bump @opentelemetry/instrumentation-koa from 0.58.0 to 0.59.0 - Bump @opentelemetry/instrumentation-lru-memoizer from 0.54.0 to 0.55.0 - Bump @opentelemetry/instrumentation-mongodb from 0.63.0 to 0.64.0 - Bump @opentelemetry/instrumentation-mongoose from 0.56.0 to 0.57.0 - Bump @opentelemetry/instrumentation-mysql from 0.56.0 to 0.57.0 - Bump @opentelemetry/instrumentation-mysql2 from 0.56.0 to 0.57.0 - Bump @opentelemetry/instrumentation-nestjs-core from 0.56.0 to 0.57.0 - Bump @opentelemetry/instrumentation-pg from 0.62.0 to 0.63.0 - Bump @opentelemetry/instrumentation-redis from 0.58.0 to 0.59.0 - Bump @opentelemetry/instrumentation-tedious from 0.29.0 to 0.30.0 - Bump @opentelemetry/instrumentation-undici from 0.20.0 to 0.21.0 - Bump @opentelemetry/resources from 2.4.0 to 2.5.0 - Bump @opentelemetry/sdk-trace-base from 2.4.0 to 2.5.0 - Bump @opentelemetry/semantic-conventions from 1.37.0 to 1.39.0 Closes #18958 (added automatically) --------- Co-authored-by: Charly Gomez <charly.gomez@sentry.io>
1 parent 2c9def0 commit 2de71df

File tree

22 files changed

+323
-487
lines changed

22 files changed

+323
-487
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ Work in this release was contributed by @sebws and @harshit078. Thank you for yo
2323
This is particularly useful for tracking multiple AI API calls that are part of the same conversation, allowing you to analyze entire conversation flows in Sentry.
2424
The conversation ID is stored on the isolation scope and automatically applied to spans via the new `conversationIdIntegration`.
2525

26+
### Important Changes
27+
2628
- **feat(tanstackstart-react): Auto-instrument global middleware in `sentryTanstackStart` Vite plugin ([#18884](https://github.com/getsentry/sentry-javascript/pull/18844))**
2729

2830
The `sentryTanstackStart` Vite plugin now automatically instruments `requestMiddleware` and `functionMiddleware` arrays in `createStart()`. This captures performance data without requiring manual wrapping.
@@ -41,6 +43,8 @@ Work in this release was contributed by @sebws and @harshit078. Thank you for yo
4143

4244
### Other Changes
4345

46+
- feat(deps): Bump OpenTelemetry instrumentations ([#18934](https://github.com/getsentry/sentry-javascript/pull/18934))
47+
4448
## 10.36.0
4549

4650
- feat(node): Add Prisma v7 support ([#18908](https://github.com/getsentry/sentry-javascript/pull/18908))

dev-packages/e2e-tests/test-applications/node-core-express-otel-v2-custom-sampler/package.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@
1212
},
1313
"dependencies": {
1414
"@opentelemetry/api": "^1.9.0",
15-
"@opentelemetry/context-async-hooks": "^2.4.0",
16-
"@opentelemetry/core": "^2.4.0",
17-
"@opentelemetry/instrumentation": "^0.210.0",
18-
"@opentelemetry/instrumentation-http": "^0.210.0",
19-
"@opentelemetry/resources": "^2.4.0",
20-
"@opentelemetry/sdk-trace-node": "^2.4.0",
21-
"@opentelemetry/semantic-conventions": "^1.37.0",
15+
"@opentelemetry/context-async-hooks": "^2.5.0",
16+
"@opentelemetry/core": "^2.5.0",
17+
"@opentelemetry/instrumentation": "^0.211.0",
18+
"@opentelemetry/instrumentation-http": "^0.211.0",
19+
"@opentelemetry/resources": "^2.5.0",
20+
"@opentelemetry/sdk-trace-node": "^2.5.0",
21+
"@opentelemetry/semantic-conventions": "^1.39.0",
2222
"@sentry/node-core": "latest || *",
2323
"@sentry/opentelemetry": "latest || *",
2424
"@types/express": "4.17.17",

dev-packages/e2e-tests/test-applications/node-core-express-otel-v2-sdk-node/package.json

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@
1212
},
1313
"dependencies": {
1414
"@opentelemetry/api": "^1.9.0",
15-
"@opentelemetry/context-async-hooks": "^2.4.0",
16-
"@opentelemetry/core": "^2.4.0",
17-
"@opentelemetry/instrumentation": "^0.210.0",
18-
"@opentelemetry/instrumentation-http": "^0.210.0",
19-
"@opentelemetry/resources": "^2.4.0",
20-
"@opentelemetry/sdk-trace-node": "^2.4.0",
21-
"@opentelemetry/semantic-conventions": "^1.37.0",
22-
"@opentelemetry/sdk-node": "^0.210.0",
23-
"@opentelemetry/exporter-trace-otlp-http": "^0.210.0",
15+
"@opentelemetry/context-async-hooks": "^2.5.0",
16+
"@opentelemetry/core": "^2.5.0",
17+
"@opentelemetry/instrumentation": "^0.211.0",
18+
"@opentelemetry/instrumentation-http": "^0.211.0",
19+
"@opentelemetry/resources": "^2.5.0",
20+
"@opentelemetry/sdk-trace-node": "^2.5.0",
21+
"@opentelemetry/semantic-conventions": "^1.39.0",
22+
"@opentelemetry/sdk-node": "^0.211.0",
23+
"@opentelemetry/exporter-trace-otlp-http": "^0.211.0",
2424
"@sentry/node-core": "latest || *",
2525
"@sentry/opentelemetry": "latest || *",
2626
"@types/express": "4.17.17",

dev-packages/e2e-tests/test-applications/node-core-express-otel-v2/package.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,13 @@
1414
"@sentry/node-core": "latest || *",
1515
"@sentry/opentelemetry": "latest || *",
1616
"@opentelemetry/api": "^1.9.0",
17-
"@opentelemetry/context-async-hooks": "^2.4.0",
18-
"@opentelemetry/core": "^2.4.0",
19-
"@opentelemetry/instrumentation": "^0.210.0",
20-
"@opentelemetry/instrumentation-http": "^0.210.0",
21-
"@opentelemetry/resources": "^2.4.0",
22-
"@opentelemetry/sdk-trace-node": "^2.4.0",
23-
"@opentelemetry/semantic-conventions": "^1.37.0",
17+
"@opentelemetry/context-async-hooks": "^2.5.0",
18+
"@opentelemetry/core": "^2.5.0",
19+
"@opentelemetry/instrumentation": "^0.211.0",
20+
"@opentelemetry/instrumentation-http": "^0.211.0",
21+
"@opentelemetry/resources": "^2.5.0",
22+
"@opentelemetry/sdk-trace-node": "^2.5.0",
23+
"@opentelemetry/semantic-conventions": "^1.39.0",
2424
"@types/express": "^4.17.21",
2525
"@types/node": "^18.19.1",
2626
"express": "^4.21.2",

dev-packages/e2e-tests/test-applications/node-otel-without-tracing/package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@
1212
},
1313
"dependencies": {
1414
"@opentelemetry/api": "1.9.0",
15-
"@opentelemetry/sdk-trace-node": "2.4.0",
16-
"@opentelemetry/exporter-trace-otlp-http": "0.210.0",
17-
"@opentelemetry/instrumentation-undici": "0.20.0",
18-
"@opentelemetry/instrumentation-http": "0.210.0",
19-
"@opentelemetry/instrumentation": "0.210.0",
15+
"@opentelemetry/sdk-trace-node": "2.5.0",
16+
"@opentelemetry/exporter-trace-otlp-http": "0.211.0",
17+
"@opentelemetry/instrumentation-undici": "0.21.0",
18+
"@opentelemetry/instrumentation-http": "0.211.0",
19+
"@opentelemetry/instrumentation": "0.211.0",
2020
"@sentry/node": "latest || *",
2121
"@types/express": "4.17.17",
2222
"@types/node": "^18.19.1",

dev-packages/node-core-integration-tests/package.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,13 @@
2727
"@nestjs/core": "^11",
2828
"@nestjs/platform-express": "^11",
2929
"@opentelemetry/api": "^1.9.0",
30-
"@opentelemetry/context-async-hooks": "^2.4.0",
31-
"@opentelemetry/core": "^2.4.0",
32-
"@opentelemetry/instrumentation": "^0.210.0",
33-
"@opentelemetry/instrumentation-http": "0.210.0",
34-
"@opentelemetry/resources": "^2.4.0",
35-
"@opentelemetry/sdk-trace-base": "^2.4.0",
36-
"@opentelemetry/semantic-conventions": "^1.37.0",
30+
"@opentelemetry/context-async-hooks": "^2.5.0",
31+
"@opentelemetry/core": "^2.5.0",
32+
"@opentelemetry/instrumentation": "^0.211.0",
33+
"@opentelemetry/instrumentation-http": "0.211.0",
34+
"@opentelemetry/resources": "^2.5.0",
35+
"@opentelemetry/sdk-trace-base": "^2.5.0",
36+
"@opentelemetry/semantic-conventions": "^1.39.0",
3737
"@sentry/core": "10.36.0",
3838
"@sentry/node-core": "10.36.0",
3939
"body-parser": "^1.20.3",

packages/aws-serverless/package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,9 @@
6666
},
6767
"dependencies": {
6868
"@opentelemetry/api": "^1.9.0",
69-
"@opentelemetry/instrumentation": "^0.210.0",
70-
"@opentelemetry/instrumentation-aws-sdk": "0.65.0",
71-
"@opentelemetry/semantic-conventions": "^1.37.0",
69+
"@opentelemetry/instrumentation": "^0.211.0",
70+
"@opentelemetry/instrumentation-aws-sdk": "0.66.0",
71+
"@opentelemetry/semantic-conventions": "^1.39.0",
7272
"@sentry/core": "10.36.0",
7373
"@sentry/node": "10.36.0",
7474
"@sentry/node-core": "10.36.0",

packages/nestjs/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,10 @@
4545
},
4646
"dependencies": {
4747
"@opentelemetry/api": "^1.9.0",
48-
"@opentelemetry/core": "^2.4.0",
49-
"@opentelemetry/instrumentation": "^0.210.0",
50-
"@opentelemetry/instrumentation-nestjs-core": "0.56.0",
51-
"@opentelemetry/semantic-conventions": "^1.37.0",
48+
"@opentelemetry/core": "^2.5.0",
49+
"@opentelemetry/instrumentation": "^0.211.0",
50+
"@opentelemetry/instrumentation-nestjs-core": "0.57.0",
51+
"@opentelemetry/semantic-conventions": "^1.39.0",
5252
"@sentry/core": "10.36.0",
5353
"@sentry/node": "10.36.0"
5454
},

packages/nextjs/src/common/utils/dropMiddlewareTunnelRequests.ts

Lines changed: 2 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,6 @@
11
import { SEMATTRS_HTTP_TARGET } from '@opentelemetry/semantic-conventions';
2-
import {
3-
getClient,
4-
GLOBAL_OBJ,
5-
isSentryRequestUrl,
6-
SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,
7-
type Span,
8-
type SpanAttributes,
9-
} from '@sentry/core';
2+
import { GLOBAL_OBJ, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, type Span, type SpanAttributes } from '@sentry/core';
3+
import { isSentryRequestSpan } from '@sentry/opentelemetry';
104
import { ATTR_NEXT_SPAN_TYPE } from '../nextSpanAttributes';
115
import { TRANSACTION_ATTR_SHOULD_DROP_TRANSACTION } from '../span-attributes-with-logic-attached';
126

@@ -42,36 +36,6 @@ export function dropMiddlewareTunnelRequests(span: Span, attrs: SpanAttributes |
4236
}
4337
}
4438

45-
/**
46-
* Local copy of `@sentry/opentelemetry`'s `isSentryRequestSpan`, to avoid pulling the whole package into Edge bundles.
47-
*/
48-
function isSentryRequestSpan(span: Span): boolean {
49-
const attributes = spanToAttributes(span);
50-
if (!attributes) {
51-
return false;
52-
}
53-
54-
const httpUrl = attributes['http.url'] || attributes['url.full'];
55-
if (!httpUrl) {
56-
return false;
57-
}
58-
59-
return isSentryRequestUrl(httpUrl.toString(), getClient());
60-
}
61-
62-
function spanToAttributes(span: Span): Record<string, unknown> | undefined {
63-
// OTEL spans expose attributes in different shapes depending on implementation.
64-
// We only need best-effort read access.
65-
type MaybeSpanAttributes = {
66-
attributes?: Record<string, unknown>;
67-
_attributes?: Record<string, unknown>;
68-
};
69-
70-
const maybeSpan = span as unknown as MaybeSpanAttributes;
71-
const attrs = maybeSpan.attributes || maybeSpan._attributes;
72-
return attrs;
73-
}
74-
7539
/**
7640
* Checks if a span's HTTP target matches the tunnel route.
7741
*/

packages/nextjs/src/edge/index.ts

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// import/export got a false positive, and affects most of our index barrel files
22
// can be removed once following issue is fixed: https://github.com/import-js/eslint-plugin-import/issues/703
33
/* eslint-disable import/export */
4-
import { context, createContextKey } from '@opentelemetry/api';
4+
import { context } from '@opentelemetry/api';
55
import {
66
applySdkMetadata,
77
type EventProcessor,
@@ -12,14 +12,14 @@ import {
1212
getRootSpan,
1313
GLOBAL_OBJ,
1414
registerSpanErrorInstrumentation,
15-
type Scope,
1615
SEMANTIC_ATTRIBUTE_SENTRY_OP,
1716
SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN,
1817
SEMANTIC_ATTRIBUTE_SENTRY_SOURCE,
1918
setCapturedScopesOnSpan,
2019
spanToJSON,
2120
stripUrlQueryAndFragment,
2221
} from '@sentry/core';
22+
import { getScopesFromContext } from '@sentry/opentelemetry';
2323
import type { VercelEdgeOptions } from '@sentry/vercel-edge';
2424
import { getDefaultIntegrations, init as vercelEdgeInit } from '@sentry/vercel-edge';
2525
import { DEBUG_BUILD } from '../common/debug-build';
@@ -42,32 +42,6 @@ export { wrapApiHandlerWithSentry } from './wrapApiHandlerWithSentry';
4242

4343
export type EdgeOptions = VercelEdgeOptions;
4444

45-
type CurrentScopes = {
46-
scope: Scope;
47-
isolationScope: Scope;
48-
};
49-
50-
// This key must match `@sentry/opentelemetry`'s `SENTRY_SCOPES_CONTEXT_KEY`.
51-
// We duplicate it here so the Edge bundle does not need to import the full `@sentry/opentelemetry` package.
52-
const SENTRY_SCOPES_CONTEXT_KEY = createContextKey('sentry_scopes');
53-
54-
type ContextWithGetValue = {
55-
getValue(key: unknown): unknown;
56-
};
57-
58-
function getScopesFromContext(otelContext: unknown): CurrentScopes | undefined {
59-
if (!otelContext || typeof otelContext !== 'object') {
60-
return undefined;
61-
}
62-
63-
const maybeContext = otelContext as Partial<ContextWithGetValue>;
64-
if (typeof maybeContext.getValue !== 'function') {
65-
return undefined;
66-
}
67-
68-
return maybeContext.getValue(SENTRY_SCOPES_CONTEXT_KEY) as CurrentScopes | undefined;
69-
}
70-
7145
const globalWithInjectedValues = GLOBAL_OBJ as typeof GLOBAL_OBJ & {
7246
_sentryRewriteFramesDistDir?: string;
7347
_sentryRelease?: string;

0 commit comments

Comments
 (0)