Skip to content

Commit 6f082a1

Browse files
authored
Merge pull request #8682 from getsentry/prepare-release/7.61.0
meta(changelog): Update changelog for 7.61.0
2 parents 4269df8 + 1ccb8d2 commit 6f082a1

Some content is hidden

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

70 files changed

+1896
-203
lines changed

.craft.yml

Lines changed: 32 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -6,102 +6,107 @@ targets:
66
## 1. Base Packages, node or browser SDKs depend on
77
## 1.1 Types
88
- name: npm
9-
id: "@sentry/types"
9+
id: '@sentry/types'
1010
includeNames: /^sentry-types-\d.*\.tgz$/
1111
## 1.2 Utils
1212
- name: npm
13-
id: "@sentry/utils"
13+
id: '@sentry/utils'
1414
includeNames: /^sentry-utils-\d.*\.tgz$/
1515
## 1.3 Core SDK
1616
- name: npm
17-
id: "@sentry/core"
17+
id: '@sentry/core'
1818
includeNames: /^sentry-core-\d.*\.tgz$/
1919
## 1.4 Tracing package
2020
- name: npm
21-
id: "@sentry-internal/tracing"
21+
id: '@sentry-internal/tracing'
2222
includeNames: /^sentry-internal-tracing-\d.*\.tgz$/
2323
## 1.5 Replay package (browser only)
2424
- name: npm
25-
id: "@sentry/replay"
25+
id: '@sentry/replay'
2626
includeNames: /^sentry-replay-\d.*\.tgz$/
2727

2828
## 2. Browser & Node SDKs
2929
- name: npm
30-
id: "@sentry/browser"
30+
id: '@sentry/browser'
3131
includeNames: /^sentry-browser-\d.*\.tgz$/
3232
- name: npm
33-
id: "@sentry/node"
33+
id: '@sentry/node'
3434
includeNames: /^sentry-node-\d.*\.tgz$/
3535

3636
## 3 Browser-based Packages
3737
- name: npm
38-
id: "@sentry/angular-ivy"
38+
id: '@sentry/angular-ivy'
3939
includeNames: /^sentry-angular-ivy-\d.*\.tgz$/
4040
- name: npm
41-
id: "@sentry/angular"
41+
id: '@sentry/angular'
4242
includeNames: /^sentry-angular-\d.*\.tgz$/
4343
- name: npm
44-
id: "@sentry/ember"
44+
id: '@sentry/ember'
4545
includeNames: /^sentry-ember-\d.*\.tgz$/
4646
- name: npm
47-
id: "@sentry/react"
47+
id: '@sentry/react'
4848
includeNames: /^sentry-react-\d.*\.tgz$/
4949
- name: npm
50-
id: "@sentry/svelte"
50+
id: '@sentry/svelte'
5151
includeNames: /^sentry-svelte-\d.*\.tgz$/
5252
- name: npm
53-
id: "@sentry/vue"
53+
id: '@sentry/vue'
5454
includeNames: /^sentry-vue-\d.*\.tgz$/
5555
- name: npm
56-
id: "@sentry/wasm"
56+
id: '@sentry/wasm'
5757
includeNames: /^sentry-wasm-\d.*\.tgz$/
5858
- name: npm
59-
id: "@sentry/integrations"
59+
id: '@sentry/integrations'
6060
includeNames: /^sentry-integrations-\d.*\.tgz$/
6161

6262
## 4. Node-based Packages
6363
- name: npm
64-
id: "@sentry/serverless"
64+
id: '@sentry/serverless'
6565
includeNames: /^sentry-serverless-\d.*\.tgz$/
6666
- name: npm
67-
id: "@sentry/opentelemetry-node"
67+
id: '@sentry/opentelemetry-node'
6868
includeNames: /^sentry-opentelemetry-node-\d.*\.tgz$/
6969

7070
## 5. Fullstack/Meta Frameworks (depending on Node and Browser or Framework SDKs)
7171
- name: npm
72-
id: "@sentry/nextjs"
72+
id: '@sentry/nextjs'
7373
includeNames: /^sentry-nextjs-\d.*\.tgz$/
7474
- name: npm
75-
id: "@sentry/remix"
75+
id: '@sentry/remix'
7676
includeNames: /^sentry-remix-\d.*\.tgz$/
7777
- name: npm
78-
id: "@sentry/sveltekit"
78+
id: '@sentry/sveltekit'
7979
includeNames: /^sentry-sveltekit-\d.*\.tgz$/
8080
- name: npm
81-
id: "@sentry/gatsby"
81+
id: '@sentry/gatsby'
8282
includeNames: /^sentry-gatsby-\d.*\.tgz$/
8383

8484
## 6. Other Packages
8585
## 6.1
8686
- name: npm
87-
id: "@sentry-internal/typescript"
87+
id: '@sentry-internal/typescript'
8888
includeNames: /^sentry-internal-typescript-\d.*\.tgz$/
8989
- name: npm
90-
id: "@sentry-internal/eslint-plugin-sdk"
90+
id: '@sentry-internal/eslint-plugin-sdk'
9191
includeNames: /^sentry-internal-eslint-plugin-sdk-\d.*\.tgz$/
9292
## 6.2
9393
- name: npm
94-
id: "@sentry-internal/eslint-config-sdk"
94+
id: '@sentry-internal/eslint-config-sdk'
9595
includeNames: /^sentry-internal-eslint-config-sdk-\d.*\.tgz$/
9696

9797
## 7. Deprecated packages we still release (but no packages depend on them anymore)
9898
- name: npm
99-
id: "@sentry/hub"
99+
id: '@sentry/hub'
100100
includeNames: /^sentry-hub-\d.*\.tgz$/
101101
- name: npm
102-
id: "@sentry/tracing"
102+
id: '@sentry/tracing'
103103
includeNames: /^sentry-tracing-\d.*\.tgz$/
104104

105+
## 8. Experimental packages
106+
- name: npm
107+
id: '@sentry/node-experimental'
108+
includeNames: /^sentry-node-experimental-\d.*\.tgz$/
109+
105110
# AWS Lambda Layer target
106111
- name: aws-lambda-layer
107112
includeNames: /^sentry-node-serverless-\d+.\d+.\d+(-(beta|alpha)\.\d+)?\.zip$/
@@ -118,7 +123,7 @@ targets:
118123

119124
# CDN Bundle Target
120125
- name: gcs
121-
id: "browser-cdn-bundles"
126+
id: 'browser-cdn-bundles'
122127
includeNames: /.*\.js.*$/
123128
bucket: sentry-js-sdk
124129
paths:

.github/workflows/label-last-commenter.yml

Lines changed: 0 additions & 31 deletions
This file was deleted.

CHANGELOG.md

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

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

7+
## 7.61.0
8+
9+
### Important Changes
10+
11+
- **feat(node-experimental): Add `@sentry/node-experimental` package as MVP for POTEL (#8609)**
12+
13+
This introduces a new, *experimental* package, `@sentry/node-experimental`.
14+
This is a variant of the Node SDK which uses OpenTelemetry under the hood for performance instrumentation.
15+
16+
Note that this package is very much WIP, considered unstable and may change at any time.
17+
**No SemVer guarantees apply whatsoever.** Still, if you're brave enough you can give it a try.
18+
[Read more about @sentry/node-experimental](./packages/node-experimental/README.md)
19+
20+
### Other Changes
21+
22+
- fix(node): Don't set extra baggage headers (#8657)
23+
- fix(tracing): Trim idle transaction spans if they exceed final timeout (#8653)
24+
725
## 7.60.1
826

927
- fix(nextjs): Match folder paths with trailing separator (#8615)

docs/new-sdk-release-checklist.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ When you’re ready to make the first release, there are a couple of steps that
6161
- [ ] 3) Add an `npm` target in `craft.yml` for the new package. Make sure to insert it in the right place, after all the Sentry dependencies of your package but before packages that depend on your new package (if applicable).
6262
```yml
6363
- name: npm
64-
id: npm:@sentry/[yourPackage]
64+
id: '@sentry/[yourPackage]'
6565
includeNames: /^sentry-[yourPackage]-\d.*\.tgz$/
6666
```
6767
- [ ] 4) Cut a new release (as usual, see [Publishing Release](https://github.com/getsentry/sentry-javascript/blob/develop/docs/publishing-a-release.md))

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
"postpublish": "lerna run --stream --concurrency 1 postpublish",
2828
"test": "lerna run --ignore \"@sentry-internal/{browser-integration-tests,e2e-tests,integration-shims,node-integration-tests,overhead-metrics}\" test",
2929
"test:unit": "lerna run --ignore \"@sentry-internal/{browser-integration-tests,e2e-tests,integration-shims,node-integration-tests,overhead-metrics}\" test:unit",
30-
"test-ci-browser": "lerna run test --ignore \"@sentry/{node,opentelemetry-node,serverless,nextjs,remix,gatsby,sveltekit}\" --ignore \"@sentry-internal/{browser-integration-tests,e2e-tests,integration-shims,node-integration-tests,overhead-metrics}\"",
30+
"test-ci-browser": "lerna run test --ignore \"@sentry/{node,node-experimental,opentelemetry-node,serverless,nextjs,remix,gatsby,sveltekit}\" --ignore \"@sentry-internal/{browser-integration-tests,e2e-tests,integration-shims,node-integration-tests,overhead-metrics}\"",
3131
"test-ci-node": "ts-node ./scripts/node-unit-tests.ts",
3232
"test:update-snapshots": "lerna run test:update-snapshots",
3333
"yalc:publish": "lerna run yalc:publish"
@@ -54,6 +54,7 @@
5454
"packages/nextjs",
5555
"packages/node",
5656
"packages/node-integration-tests",
57+
"packages/node-experimental",
5758
"packages/opentelemetry-node",
5859
"packages/react",
5960
"packages/remix",

packages/core/src/baseclient.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,9 @@ export abstract class BaseClient<O extends ClientOptions> implements Client<O> {
388388
/** @inheritdoc */
389389
public on(hook: 'createDsc', callback: (dsc: DynamicSamplingContext) => void): void;
390390

391+
/** @inheritdoc */
392+
public on(hook: 'otelSpanEnd', callback: (otelSpan: unknown, mutableOptions: { drop: boolean }) => void): void;
393+
391394
/** @inheritdoc */
392395
public on(hook: string, callback: unknown): void {
393396
if (!this._hooks[hook]) {
@@ -413,6 +416,9 @@ export abstract class BaseClient<O extends ClientOptions> implements Client<O> {
413416
/** @inheritdoc */
414417
public emit(hook: 'createDsc', dsc: DynamicSamplingContext): void;
415418

419+
/** @inheritdoc */
420+
public emit(hook: 'otelSpanEnd', otelSpan: unknown, mutableOptions: { drop: boolean }): void;
421+
416422
/** @inheritdoc */
417423
public emit(hook: string, ...rest: unknown[]): void {
418424
if (this._hooks[hook]) {

packages/core/src/tracing/idletransaction.ts

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -158,15 +158,22 @@ export class IdleTransaction extends Transaction {
158158
logger.log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));
159159
}
160160

161-
const keepSpan = span.startTimestamp < endTimestamp;
162-
if (!keepSpan) {
163-
__DEBUG_BUILD__ &&
164-
logger.log(
165-
'[Tracing] discarding Span since it happened after Transaction was finished',
166-
JSON.stringify(span, undefined, 2),
167-
);
161+
const spanStartedBeforeTransactionFinish = span.startTimestamp < endTimestamp;
162+
163+
// Add a delta with idle timeout so that we prevent false positives
164+
const timeoutWithMarginOfError = (this._finalTimeout + this._idleTimeout) / 1000;
165+
const spanEndedBeforeFinalTimeout = span.endTimestamp - this.startTimestamp < timeoutWithMarginOfError;
166+
167+
if (__DEBUG_BUILD__) {
168+
const stringifiedSpan = JSON.stringify(span, undefined, 2);
169+
if (!spanStartedBeforeTransactionFinish) {
170+
logger.log('[Tracing] discarding Span since it happened after Transaction was finished', stringifiedSpan);
171+
} else if (!spanEndedBeforeFinalTimeout) {
172+
logger.log('[Tracing] discarding Span since it finished after Transaction final timeout', stringifiedSpan);
173+
}
168174
}
169-
return keepSpan;
175+
176+
return spanStartedBeforeTransactionFinish && spanEndedBeforeFinalTimeout;
170177
});
171178

172179
__DEBUG_BUILD__ && logger.log('[Tracing] flushing IdleTransaction');

packages/e2e-tests/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@
2020
"test:validate-test-app-setups": "ts-node validate-test-app-setups.ts",
2121
"test:prepare": "ts-node prepare.ts",
2222
"test:validate": "run-s test:validate-configuration test:validate-test-app-setups",
23-
"clean": "rimraf tmp test-applications/**/{node_modules,dist,build,.next,.sveltekit,pnpm-lock.yaml}"
23+
"clean": "rimraf tmp node_modules && yarn clean:test-applications",
24+
"clean:test-applications": "rimraf test-applications/**/{node_modules,dist,build,.next,.sveltekit,pnpm-lock.yaml}"
2425
},
2526
"devDependencies": {
2627
"@types/glob": "8.0.0",

packages/e2e-tests/run.ts

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,37 @@
11
/* eslint-disable max-lines */
22
/* eslint-disable no-console */
3-
import { exec } from 'child_process';
3+
import { spawn } from 'child_process';
44
import * as dotenv from 'dotenv';
55
import { sync as globSync } from 'glob';
66
import { resolve } from 'path';
7-
import { promisify } from 'util';
87

98
import { validate } from './lib/validate';
109
import { registrySetup } from './registrySetup';
1110

12-
const asyncExec = promisify(exec);
11+
function asyncExec(command: string, options: { env: Record<string, string | undefined>; cwd: string }): Promise<void> {
12+
return new Promise((resolve, reject) => {
13+
const process = spawn(command, { ...options, shell: true });
14+
15+
process.stdout.on('data', data => {
16+
console.log(`${data}`);
17+
});
18+
19+
process.stderr.on('data', data => {
20+
console.error(`${data}`);
21+
});
22+
23+
process.on('error', error => {
24+
reject(error);
25+
});
26+
27+
process.on('close', code => {
28+
if (code !== 0) {
29+
return reject();
30+
}
31+
resolve();
32+
});
33+
});
34+
}
1335

1436
async function run(): Promise<void> {
1537
// Load environment variables from .env file locally
@@ -31,8 +53,13 @@ async function run(): Promise<void> {
3153
const env = { ...process.env, ...envVarsToInject };
3254

3355
try {
56+
console.log('Cleaning test-applications...');
57+
console.log('');
58+
3459
registrySetup();
3560

61+
await asyncExec('pnpm clean:test-applications', { env, cwd: __dirname });
62+
3663
const testAppPaths = appName ? [appName.trim()] : globSync('*', { cwd: `${__dirname}/test-applications/` });
3764

3865
console.log(`Runnings tests for: ${testAppPaths.join(', ')}`);

packages/e2e-tests/test-applications/create-next-app/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"private": true,
55
"scripts": {
66
"build": "next build",
7+
"clean": "npx rimraf node_modules,pnpm-lock.yaml",
78
"test:prod": "TEST_ENV=prod playwright test",
89
"test:dev": "TEST_ENV=dev playwright test",
910
"test:build": "pnpm install && npx playwright install && pnpm build",

packages/e2e-tests/test-applications/create-react-app/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
"build": "react-scripts build",
2424
"test": "react-scripts test",
2525
"eject": "react-scripts eject",
26+
"clean": "npx rimraf node_modules,pnpm-lock.yaml",
2627
"test:build": "pnpm install && pnpm build",
2728
"test:build-ts3.8": "pnpm install && pnpm add [email protected] && pnpm build",
2829
"test:build-canary": "pnpm install && pnpm add react@canary react-dom@canary && pnpm build",

packages/e2e-tests/test-applications/create-remix-app/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"dev": "remix dev",
77
"start": "remix-serve build",
88
"typecheck": "tsc",
9+
"clean": "npx rimraf node_modules,pnpm-lock.yaml",
910
"test:build": "pnpm install && npx playwright install && pnpm build",
1011
"test:assert": "pnpm playwright test"
1112
},

packages/e2e-tests/test-applications/nextjs-app-dir/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"private": true,
55
"scripts": {
66
"build": "next build > .tmp_build_output",
7+
"clean": "npx rimraf node_modules,pnpm-lock.yaml",
78
"test:prod": "TEST_ENV=production playwright test",
89
"test:dev": "TEST_ENV=development playwright test",
910
"test:build": "pnpm install && npx playwright install && pnpm build",

packages/e2e-tests/test-applications/node-express-app/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"build": "tsc",
77
"start": "node dist/app.js",
88
"test": "playwright test",
9+
"clean": "npx rimraf node_modules,pnpm-lock.yaml",
910
"test:build": "pnpm install && pnpm build",
1011
"test:assert": "pnpm test"
1112
},

packages/e2e-tests/test-applications/react-create-hash-router/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
"build": "react-scripts build",
2323
"start": "serve -s build",
2424
"test": "playwright test",
25+
"clean": "npx rimraf node_modules,pnpm-lock.yaml",
2526
"test:build": "pnpm install && npx playwright install && pnpm build",
2627
"test:build-canary": "pnpm install && pnpm add react@canary react-dom@canary && npx playwright install && pnpm build",
2728
"test:assert": "pnpm test"

packages/e2e-tests/test-applications/standard-frontend-react-tracing-import/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
"build": "react-scripts build",
2424
"start": "serve -s build",
2525
"test": "playwright test",
26+
"clean": "npx rimraf node_modules,pnpm-lock.yaml",
2627
"test:build": "pnpm install && npx playwright install && pnpm build",
2728
"test:assert": "pnpm test"
2829
},

0 commit comments

Comments
 (0)