-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(browser): Avoid recording long task spans starting before their parent span #14183
Conversation
continue; | ||
} | ||
|
||
startAndEndSpan(parent, startTime, startTime + duration, { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
small refactor: I switched from manually starting and ending the span to using the startAndEndSpan
helper which does just that. However, the helper would also adjust the navigation span start time stamp if the stamp was started beforehand.
I medium-strongly feel we should not adjust this start time stamp b/c the long task might have nothing to do with the navigation but it would look like it otherwise.
If reviewers prefer the other way around (i.e. actually record the span and adjust the transaction start time), I'm also fine with that.
size-limit report 📦
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
☀️
@@ -40,7 +40,7 @@ module.exports = [ | |||
path: 'packages/browser/build/npm/esm/index.js', | |||
import: createImport('init', 'browserTracingIntegration'), | |||
gzip: true, | |||
limit: '36 KB', | |||
limit: '36.5 KB', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
we're just ~15 bytes over the previous limit but I figured I'd give the limit a slightly bigger bump as we usually do
…ore their parent span (#14186) - Check for start time of parent navigation span and don't start long animation frame span if its start timestamp is earlier than the navigation start time stamp - Refactor span starting logic to use common helper function to compensate the bundle size increase - Add regression test that failed previously - Improve regression test from #14183 to avoid flakes and improve the in-test navigation
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [@sentry/node](https://github.com/getsentry/sentry-javascript/tree/master/packages/node) ([source](https://github.com/getsentry/sentry-javascript)) | dependencies | minor | [`8.36.0` -> `8.37.1`](https://renovatebot.com/diffs/npm/@sentry%2fnode/8.36.0/8.37.1) | | [@sentry/react](https://github.com/getsentry/sentry-javascript/tree/master/packages/react) ([source](https://github.com/getsentry/sentry-javascript)) | dependencies | minor | [`8.36.0` -> `8.37.1`](https://renovatebot.com/diffs/npm/@sentry%2freact/8.36.0/8.37.1) | --- ### Release Notes <details> <summary>getsentry/sentry-javascript (@​sentry/node)</summary> ### [`v8.37.1`](https://github.com/getsentry/sentry-javascript/blob/HEAD/CHANGELOG.md#8371) [Compare Source](getsentry/sentry-javascript@8.37.0...8.37.1) - feat(deps): Bump [@​opentelemetry/instrumentation](https://github.com/opentelemetry/instrumentation) from 0.53.0 to 0.54.0 for [@​sentry/opentelemetry](https://github.com/sentry/opentelemetry) ([#​14187](getsentry/sentry-javascript#14187)) ### [`v8.37.0`](https://github.com/getsentry/sentry-javascript/blob/HEAD/CHANGELOG.md#8370) [Compare Source](getsentry/sentry-javascript@8.36.0...8.37.0) ##### Important Changes - **feat(nuxt): Add `piniaIntegration` ([#​14138](getsentry/sentry-javascript#14138 The Nuxt SDK now allows you to track Pinia state for captured errors. To enable the Pinia plugin, add the `piniaIntegration` to your client config: ```ts // sentry.client.config.ts import { usePinia } from '#imports'; Sentry.init({ integrations: [ Sentry.piniaIntegration(usePinia(), { /* optional Pinia plugin options */ }), ], }); ``` - **feat: Deprecate metrics API ([#​14157](getsentry/sentry-javascript#14157 The Sentry Metrics beta has ended in favour of revisiting metrics in another form at a later date. This new approach will include different APIs, making the current metrics API unnecessary. This release deprecates the metrics API with the plan to remove in the next SDK major version. If you currently use the metrics API in your code, you can safely continue to do so but sent data will no longer be processed by Sentry. [Learn more](https://sentry.zendesk.com/hc/en-us/articles/26369339769883-Metrics-Beta-Ended-on-October-7th) about the end of the Metrics beta. ##### Other Changes - feat(browser): Add `http.response_delivery_type` attribute to resource spans ([#​14056](getsentry/sentry-javascript#14056)) - feat(browser): Add `skipBrowserExtensionCheck` escape hatch option ([#​14147](getsentry/sentry-javascript#14147)) - feat(deps): Bump [@​opentelemetry/instrumentation](https://github.com/opentelemetry/instrumentation) from 0.53.0 to 0.54.0 ([#​14174](getsentry/sentry-javascript#14174)) - feat(deps): Bump [@​opentelemetry/instrumentation-fastify](https://github.com/opentelemetry/instrumentation-fastify) from 0.40.0 to 0.41.0 ([#​14175](getsentry/sentry-javascript#14175)) - feat(deps): Bump [@​opentelemetry/instrumentation-graphql](https://github.com/opentelemetry/instrumentation-graphql) from 0.43.0 to 0.44.0 ([#​14173](getsentry/sentry-javascript#14173)) - feat(deps): Bump [@​opentelemetry/instrumentation-mongodb](https://github.com/opentelemetry/instrumentation-mongodb) from 0.47.0 to 0.48.0 ([#​14171](getsentry/sentry-javascript#14171)) - feat(deps): Bump [@​opentelemetry/propagator-aws-xray](https://github.com/opentelemetry/propagator-aws-xray) from 1.25.1 to 1.26.0 ([#​14172](getsentry/sentry-javascript#14172)) - feat(nuxt): Add `asyncFunctionReExports` to define re-exported server functions ([#​14104](getsentry/sentry-javascript#14104)) - feat(nuxt): Add `piniaIntegration` ([#​14138](getsentry/sentry-javascript#14138)) - fix(browser): Avoid recording long task spans starting before their parent span ([#​14183](getsentry/sentry-javascript#14183)) - fix(core): Ensure errors thrown in async cron jobs bubble up ([#​14182](getsentry/sentry-javascript#14182)) - fix(core): Silently fail `maybeInstrument` ([#​14140](getsentry/sentry-javascript#14140)) - fix(nextjs): Resolve path for dynamic webpack import ([#​13751](getsentry/sentry-javascript#13751)) - fix(node): Make sure `modulesIntegration` does not crash esm apps ([#​14169](getsentry/sentry-javascript#14169)) Work in this release was contributed by [@​rexxars](https://github.com/rexxars). Thank you for your contribution! </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC4xNDIuNyIsInVwZGF0ZWRJblZlciI6IjM4LjE0Mi43IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=--> Reviewed-on: https://git.tristess.app/alexandresoro/ouca/pulls/299 Reviewed-by: Alexandre Soro <[email protected]> Co-authored-by: renovate <[email protected]> Co-committed-by: renovate <[email protected]>
This PR fixes inconsistent behaviour in our browserTracingIntegration, where we'd previously add
ui.long-task
spans to an ongoing (navigation) transaction, even if the long task started before the navigation transaction started.Most other browserTracingIntegration spans (resource, timing, measure/mark spans) are already dropped/not started if their start time stamp is earlier than the navigation start time stamp. This happens in one central location but it does not apply to long-task spans because they have to be handled separately.
This PR specifically:
Note: We have similar behaviour for long animation frame spans. I'll probably open another PR to adjust the logic there as well.