Skip to content

Commit 2585231

Browse files
Merge remote-tracking branch 'origin/v10' into backport/v10-25345-cloudflare-default-reexport
Co-Authored-By: Isaac Schlueter <isaac.schlueter@sentry.io>
2 parents e020687 + d08a8ed commit 2585231

66 files changed

Lines changed: 1027 additions & 113 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎CHANGELOG.md‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,20 @@
44

55
- "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott
66

7+
### Important Changes
8+
9+
- **fix(v10/deps)!: Limit `@opentelemetry/api` to `<1.10.0` and the OpenTelemetry SDK to `<3.0.0` ([#25715](https://github.com/getsentry/sentry-javascript/pull/25715))**
10+
11+
**Breaking change**
12+
13+
If your app uses `@opentelemetry/api` 1.10.0 or OpenTelemetry SDK v3 together with v10 of the Sentry SDK, you must stay on `@opentelemetry/api` below 1.10.0 and OpenTelemetry SDK v2, or upgrade to v11.
14+
15+
`@opentelemetry/api` 1.10.0 only works with OpenTelemetry SDK v3 (`@opentelemetry/core` 3.x, `@opentelemetry/instrumentation` 0.300.x). The SDK v2 packages that v10 uses only support `@opentelemetry/api` below 1.10.0, and SDK v3 needs Node.js 22.15.0 or newer, while v10 supports Node.js 18 and newer. For this reason, v10 now limits `@opentelemetry/api` to `<1.10.0`, and the `@opentelemetry/instrumentation` and `@opentelemetry/exporter-trace-otlp-http` peer dependencies of `@sentry/node-core` to `<0.300.0`.
16+
17+
If your app depends on `@opentelemetry/api` directly, use a version below 1.10.0 (for example `~1.9.1`). With 1.10.0, your app and the Sentry SDK use different copies of the API, and the OpenTelemetry calls of your app do not see the tracer provider of the Sentry SDK.
18+
19+
To use `@opentelemetry/api` 1.10.0 and OpenTelemetry SDK v3, upgrade to v11 of the Sentry SDK. For the upgrade steps, see the [migration guide](https://docs.sentry.io/platforms/javascript/migration/v10-to-v11/).
20+
721
## 10.77.0
822

923
### Important Changes

‎dev-packages/browser-integration-tests/suites/replay/customEvents/test.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ sentryTest(
9797
expect.arrayContaining([
9898
{
9999
...expectedClickBreadcrumb,
100-
message: 'body > div#error.btn.btn-error[aria-label="An Error in aria-label"]',
100+
message: 'body > div#error.btn.btn-error[aria-label="** ***** ** **********"]',
101101
data: {
102102
nodeId: expect.any(Number),
103103
node: {
@@ -124,7 +124,7 @@ sentryTest(
124124
expect.arrayContaining([
125125
{
126126
...expectedClickBreadcrumb,
127-
message: 'body > button#img-button[title="Button title"]',
127+
message: 'body > button#img-button[title="****** *****"]',
128128
data: {
129129
nodeId: expect.any(Number),
130130
node: {
Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,19 @@
11
// Callback-style handler `(event, context, callback)` to exercise the wrapped-callback span path.
2+
// `event.callbackDelayMs` makes the handler return before it calls back, like most real callback-style handlers.
23
exports.handler = (event, context, callback) => {
3-
if (event.shouldError) {
4-
callback(new Error('callback error'));
4+
const respond = () => {
5+
if (event.shouldError) {
6+
callback(new Error('callback error'));
7+
return;
8+
}
9+
10+
callback(null, { ok: true });
11+
};
12+
13+
if (event.callbackDelayMs) {
14+
setTimeout(respond, event.callbackDelayMs);
515
return;
616
}
717

8-
callback(null, { ok: true });
18+
respond();
919
};

‎dev-packages/e2e-tests/test-applications/aws-serverless-layer/tests/layer.test.ts‎

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,48 @@ test.describe('Lambda layer', () => {
312312
);
313313
});
314314

315+
test('ends the span when a callback-style handler calls back after it returned', async ({ lambdaClient }) => {
316+
const transactionEventPromise = waitForTransaction('aws-serverless-layer', transactionEvent => {
317+
return transactionEvent?.transaction === 'LayerCallback';
318+
});
319+
320+
await lambdaClient.send(
321+
new InvokeCommand({
322+
FunctionName: 'LayerCallback',
323+
Payload: JSON.stringify({ callbackDelayMs: 200 }),
324+
}),
325+
);
326+
327+
const transactionEvent = await transactionEventPromise;
328+
329+
expect(transactionEvent.contexts?.trace?.status).toBe('ok');
330+
expect(transactionEvent.timestamp! - transactionEvent.start_timestamp!).toBeGreaterThanOrEqual(0.2);
331+
});
332+
333+
test('sets error status when a callback-style handler calls back with an error after it returned', async ({
334+
lambdaClient,
335+
}) => {
336+
const errorEventPromise = waitForError('aws-serverless-layer', errorEvent => {
337+
return errorEvent?.exception?.values?.[0]?.value === 'callback error';
338+
});
339+
const transactionEventPromise = waitForTransaction('aws-serverless-layer', transactionEvent => {
340+
return transactionEvent?.transaction === 'LayerCallback';
341+
});
342+
343+
await lambdaClient.send(
344+
new InvokeCommand({
345+
FunctionName: 'LayerCallback',
346+
Payload: JSON.stringify({ shouldError: true, callbackDelayMs: 200 }),
347+
}),
348+
);
349+
350+
const [errorEvent, transactionEvent] = await Promise.all([errorEventPromise, transactionEventPromise]);
351+
352+
expect(transactionEvent.contexts?.trace?.status).toBe('internal_error');
353+
expect(transactionEvent.timestamp! - transactionEvent.start_timestamp!).toBeGreaterThanOrEqual(0.2);
354+
expect(errorEvent.contexts?.trace?.trace_id).toBe(transactionEvent.contexts?.trace?.trace_id);
355+
});
356+
315357
test('continues a trace from incoming headers', async ({ lambdaClient }) => {
316358
const traceId = 'd4cda95b652f4a1592b449d5929fda1b';
317359
const parentSpanId = '6e0c63257de34c92';

‎dev-packages/e2e-tests/test-applications/deno-streamed/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
},
1212
"dependencies": {
1313
"@sentry/deno": "file:../../packed/sentry-deno-packed.tgz",
14-
"@opentelemetry/api": "^1.9.0",
14+
"@opentelemetry/api": ">=1.9.0 <1.10.0",
1515
"ai": "^3.0.0",
1616
"zod": "^3.22.4"
1717
},

‎dev-packages/e2e-tests/test-applications/deno/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
},
1212
"dependencies": {
1313
"@sentry/deno": "file:../../packed/sentry-deno-packed.tgz",
14-
"@opentelemetry/api": "^1.9.0",
14+
"@opentelemetry/api": ">=1.9.0 <1.10.0",
1515
"ai": "^3.0.0",
1616
"zod": "^3.22.4"
1717
},

‎dev-packages/e2e-tests/test-applications/nextjs-custom-otel/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
"test:assert-webpack": "pnpm test:prod && pnpm test:dev-webpack"
2020
},
2121
"dependencies": {
22-
"@opentelemetry/api": "^1.9.1",
22+
"@opentelemetry/api": ">=1.9.1 <1.10.0",
2323
"@opentelemetry/exporter-metrics-otlp-http": "^0.220.0",
2424
"@opentelemetry/exporter-trace-otlp-http": "^0.220.0",
2525
"@opentelemetry/resources": "^2.9.0",

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"test:assert": "pnpm test"
1212
},
1313
"dependencies": {
14-
"@opentelemetry/api": "^1.9.0",
14+
"@opentelemetry/api": ">=1.9.0 <1.10.0",
1515
"@opentelemetry/core": "^1.30.1",
1616
"@opentelemetry/instrumentation": "^0.57.1",
1717
"@opentelemetry/instrumentation-http": "^0.57.1",

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"test:assert": "pnpm test"
1212
},
1313
"dependencies": {
14-
"@opentelemetry/api": "^1.9.0",
14+
"@opentelemetry/api": ">=1.9.0 <1.10.0",
1515
"@opentelemetry/core": "^1.30.1",
1616
"@opentelemetry/instrumentation": "^0.57.2",
1717
"@opentelemetry/instrumentation-http": "^0.57.2",

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
"dependencies": {
1414
"@sentry/node-core": "file:../../packed/sentry-node-core-packed.tgz",
1515
"@sentry/opentelemetry": "file:../../packed/sentry-opentelemetry-packed.tgz",
16-
"@opentelemetry/api": "^1.9.0",
16+
"@opentelemetry/api": ">=1.9.0 <1.10.0",
1717
"@opentelemetry/core": "^1.30.1",
1818
"@opentelemetry/instrumentation": "^0.57.1",
1919
"@opentelemetry/instrumentation-http": "^0.57.1",

0 commit comments

Comments
 (0)