Skip to content

Commit 8d14096

Browse files
committed
feat(opentelemetry): Vendor AsyncLocalStorageContextManager
This vendors in the required code from `@opentelemetry/context-async-hooks`
1 parent 45d7b06 commit 8d14096

File tree

19 files changed

+287
-93
lines changed

19 files changed

+287
-93
lines changed

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
},
1313
"dependencies": {
1414
"@opentelemetry/api": "^1.9.0",
15-
"@opentelemetry/context-async-hooks": "^1.30.1",
1615
"@opentelemetry/core": "^1.30.1",
1716
"@opentelemetry/instrumentation": "^0.57.1",
1817
"@opentelemetry/instrumentation-http": "^0.57.1",

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
},
1313
"dependencies": {
1414
"@opentelemetry/api": "^1.9.0",
15-
"@opentelemetry/context-async-hooks": "^1.30.1",
1615
"@opentelemetry/core": "^1.30.1",
1716
"@opentelemetry/instrumentation": "^0.57.2",
1817
"@opentelemetry/instrumentation-http": "^0.57.2",

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
"@sentry/node-core": "latest || *",
1515
"@sentry/opentelemetry": "latest || *",
1616
"@opentelemetry/api": "^1.9.0",
17-
"@opentelemetry/context-async-hooks": "^1.30.1",
1817
"@opentelemetry/core": "^1.30.1",
1918
"@opentelemetry/instrumentation": "^0.57.1",
2019
"@opentelemetry/instrumentation-http": "^0.57.1",

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
},
1313
"dependencies": {
1414
"@opentelemetry/api": "^1.9.0",
15-
"@opentelemetry/context-async-hooks": "^2.6.0",
1615
"@opentelemetry/core": "^2.6.0",
1716
"@opentelemetry/instrumentation": "^0.214.0",
1817
"@opentelemetry/instrumentation-http": "^0.214.0",

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
},
1313
"dependencies": {
1414
"@opentelemetry/api": "^1.9.0",
15-
"@opentelemetry/context-async-hooks": "^2.6.0",
1615
"@opentelemetry/core": "^2.6.0",
1716
"@opentelemetry/instrumentation": "^0.214.0",
1817
"@opentelemetry/instrumentation-http": "^0.214.0",

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
"@sentry/node-core": "latest || *",
1515
"@sentry/opentelemetry": "latest || *",
1616
"@opentelemetry/api": "^1.9.0",
17-
"@opentelemetry/context-async-hooks": "^2.6.0",
1817
"@opentelemetry/core": "^2.6.0",
1918
"@opentelemetry/instrumentation": "^0.214.0",
2019
"@opentelemetry/instrumentation-http": "^0.214.0",

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
"@nestjs/core": "^11",
2828
"@nestjs/platform-express": "^11",
2929
"@opentelemetry/api": "^1.9.1",
30-
"@opentelemetry/context-async-hooks": "^2.6.1",
3130
"@opentelemetry/core": "^2.6.1",
3231
"@opentelemetry/instrumentation": "^0.214.0",
3332
"@opentelemetry/instrumentation-http": "0.214.0",

packages/node-core/README.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
Unlike the `@sentry/node` SDK, this SDK comes with no OpenTelemetry auto-instrumentation out of the box. It requires the following OpenTelemetry dependencies and supports both v1 and v2 of OpenTelemetry:
1414

1515
- `@opentelemetry/api`
16-
- `@opentelemetry/context-async-hooks`
1716
- `@opentelemetry/core`
1817
- `@opentelemetry/instrumentation`
1918
- `@opentelemetry/resources`
@@ -23,10 +22,10 @@ Unlike the `@sentry/node` SDK, this SDK comes with no OpenTelemetry auto-instrum
2322
## Installation
2423

2524
```bash
26-
npm install @sentry/node-core @sentry/opentelemetry @opentelemetry/api @opentelemetry/core @opentelemetry/context-async-hooks @opentelemetry/instrumentation @opentelemetry/resources @opentelemetry/sdk-trace-base @opentelemetry/semantic-conventions
25+
npm install @sentry/node-core @sentry/opentelemetry @opentelemetry/api @opentelemetry/core @opentelemetry/instrumentation @opentelemetry/resources @opentelemetry/sdk-trace-base @opentelemetry/semantic-conventions
2726

2827
# Or yarn
29-
yarn add @sentry/node-core @sentry/opentelemetry @opentelemetry/api @opentelemetry/core @opentelemetry/context-async-hooks @opentelemetry/instrumentation @opentelemetry/resources @opentelemetry/sdk-trace-base @opentelemetry/semantic-conventions
28+
yarn add @sentry/node-core @sentry/opentelemetry @opentelemetry/api @opentelemetry/core @opentelemetry/instrumentation @opentelemetry/resources @opentelemetry/sdk-trace-base @opentelemetry/semantic-conventions
3029
```
3130

3231
## Usage

packages/node-core/package.json

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,6 @@
7878
},
7979
"peerDependencies": {
8080
"@opentelemetry/api": "^1.9.0",
81-
"@opentelemetry/context-async-hooks": "^1.30.1 || ^2.1.0",
8281
"@opentelemetry/core": "^1.30.1 || ^2.1.0",
8382
"@opentelemetry/instrumentation": ">=0.57.1 <1",
8483
"@opentelemetry/resources": "^1.30.1 || ^2.1.0",
@@ -90,9 +89,6 @@
9089
"@opentelemetry/api": {
9190
"optional": true
9291
},
93-
"@opentelemetry/context-async-hooks": {
94-
"optional": true
95-
},
9692
"@opentelemetry/core": {
9793
"optional": true
9894
},
@@ -119,7 +115,6 @@
119115
},
120116
"devDependencies": {
121117
"@opentelemetry/api": "^1.9.1",
122-
"@opentelemetry/context-async-hooks": "^2.6.1",
123118
"@opentelemetry/core": "^2.6.1",
124119
"@opentelemetry/exporter-trace-otlp-http": "^0.214.0",
125120
"@opentelemetry/instrumentation": "^0.214.0",
Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
1-
import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';
2-
import { wrapContextManagerClass } from '@sentry/opentelemetry';
1+
import { SentryAsyncLocalStorageContextManager } from '@sentry/opentelemetry';
32

43
/**
5-
* This is a custom ContextManager for OpenTelemetry, which extends the default AsyncLocalStorageContextManager.
4+
* This is a custom ContextManager for OpenTelemetry & Sentry.
65
* It ensures that we create a new hub per context, so that the OTEL Context & the Sentry Scopes are always in sync.
7-
*
8-
* Note that we currently only support AsyncHooks with this,
9-
* but since this should work for Node 14+ anyhow that should be good enough.
106
*/
11-
export const SentryContextManager = wrapContextManagerClass(AsyncLocalStorageContextManager);
7+
export const SentryContextManager = SentryAsyncLocalStorageContextManager;

0 commit comments

Comments
 (0)