Repository navigation
fix(node): Skip spans for outgoing requests to Sentry via undici fetch and node:http - #25441
Merged
Merged
Conversation
undici fetch
Contributor
size-limit report 📦Compared: d207974 (PR test merge using develop at 07b8868) Against: 07b8868 (develop) · base run #63324 ✅ Baseline matches: this diff contains only this PR's changes.
|
undici fetchundici fetch and node:http
Member
Author
|
bugbot review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 56f0f4b. Configure here.
Lms24
marked this pull request as ready for review
October 16, 2026 10:05
JPeer264
approved these changes
Oct 19, 2026
JPeer264
left a comment
Member
There was a problem hiding this comment.
Amazing. Thanks a lot for fixing that
|
|
||
| // Bun before 1.4 does not instrument outgoing `node:http` requests. | ||
| // See https://github.com/getsentry/sentry-javascript/issues/23881 | ||
| describe.runIf(supports({ bunMin: '1.4.0' }))('outgoing http requests to Sentry', () => { |
Member
There was a problem hiding this comment.
Thanks for not skipping this entirely and enable it for the min version 🙏
Our own transport sends with tracing suppressed, but another SDK in the same process does not share that scope. On Next.js, the Edge Runtime SDK runs in a sandbox inside the Node.js process and sends with undici `fetch`, so the Node.js SDK created `http.client` spans for these requests. Skip requests to the client's DSN or tunnel in the undici and `http` client instrumentation, like the `fetch` integration already does. This replaces the Next.js `beforeSampling` drop, which only applied to root spans and was no longer enforced. Co-Authored-By: Lukas Stracke <lukas.stracke@sentry.io>
`@sentry/node` cannot instrument `fetch` on Bun and Deno, so the fetch suite joins the other fetch suites in their exclude lists. Co-Authored-By: Lukas Stracke <lukas.stracke@sentry.io>
sentry-junior
Bot
force-pushed
the
lms/fix-node-fetch-ignore-sentry-requests
branch
from
October 23, 2026 10:28
cbf829a to
4c4b377
Compare
Contributor
Optional E2E testsSome optional checks were not successful. They do not block the merge. 1 not successful, 63 successful. See the run.
Successful checks
|
Co-authored-by: Jan Peer Stöcklmair <jan.peer@sentry.io>
Co-Authored-By: Lukas Stracke <lukas.stracke@sentry.io>
mydea
approved these changes
Oct 23, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR fixes a bug where undici and
httpclient instrumentation created spans for requests to the sentry ingest endpoint. We now skip requests to the client's DSN or tunnel viaisSentryRequestUrl, like we already do in ourfetchintegrations (node, cloudflare, vercel edge). This checks the raw URL, so it works regardless ofdataCollection.urlQueryParams.This surfaced in NextJS while working on #25386, where apparently we'd start spans in standalone (node, preview, dev) Next environments. Based on Claude research this happened because of NextJS sandboxing the edge runtime requests in a sub process of the Node process and our instrumentation catching those calls in both, the sandbox and the main process. The fix therefore replaces the Next.js
beforeSamplingdrop for these spans, which only applied to root spans and has accidentally not been enforced sinceSentrySamplerwas removed.