Skip to content

fix(node): Ensure traces are propagated without spans in Node 22+ #16221

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

Merged
merged 5 commits into from
May 12, 2025

Conversation

mydea
Copy link
Member

@mydea mydea commented May 7, 2025

Today, if the httpIntegration is used without spans (e.g. in a custom OTEL setup or when setting httpIntegration({ spans: false }) manually), outgoing requests will not have traces propagated.

This PR fixes this by using the http.client.request.created diagnostics channel to add the trace headers in this scenario.

However, sadly this channel was only added in Node 22, so it does not work on versions before that.
I suppose this is still worth adding because it is better than what we have today (which is that it does not work at all). We may think about making this work for Node <22, but this would require us monkey patching http again, which we really do not want to do... Also note that as of now this should not really affect the vast majority of cases, as unless you specifically opt out of spans today this will always work as we always add the otel http instrumentation by default. And in custom otel setups, users will usually have this set up anyhow. (Also, fetch works in all environments as expected).

If we want to, in a follow up, avoid adding the otel spans instrumentation if performance is disabled, we need to think about this... an option could be to always adding the instrumentation on node <22, and only skip it on Node 22+. But this can be looked at separately, this PR at least makes things better than before on Node 22+...

This supersedes #15735

@mydea mydea requested review from lforst, AbhiPrasad and andreiborza May 7, 2025 15:11
@mydea mydea self-assigned this May 7, 2025
Copy link
Contributor

github-actions bot commented May 7, 2025

size-limit report 📦

Path Size % Change Change
@sentry/browser 23.36 KB - -
@sentry/browser - with treeshaking flags 23.19 KB - -
@sentry/browser (incl. Tracing) 37.25 KB - -
@sentry/browser (incl. Tracing, Replay) 74.48 KB - -
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags 68.35 KB - -
@sentry/browser (incl. Tracing, Replay with Canvas) 79.13 KB - -
@sentry/browser (incl. Tracing, Replay, Feedback) 90.94 KB - -
@sentry/browser (incl. Feedback) 39.76 KB - -
@sentry/browser (incl. sendFeedback) 27.98 KB - -
@sentry/browser (incl. FeedbackAsync) 32.75 KB - -
@sentry/react 25.17 KB - -
@sentry/react (incl. Tracing) 39.24 KB - -
@sentry/vue 27.63 KB - -
@sentry/vue (incl. Tracing) 39.01 KB - -
@sentry/svelte 23.38 KB - -
CDN Bundle 24.56 KB - -
CDN Bundle (incl. Tracing) 37.3 KB - -
CDN Bundle (incl. Tracing, Replay) 72.34 KB - -
CDN Bundle (incl. Tracing, Replay, Feedback) 77.65 KB - -
CDN Bundle - uncompressed 71.65 KB - -
CDN Bundle (incl. Tracing) - uncompressed 110.37 KB - -
CDN Bundle (incl. Tracing, Replay) - uncompressed 221.65 KB - -
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 234.18 KB - -
@sentry/nextjs (client) 40.85 KB - -
@sentry/sveltekit (client) 37.74 KB - -
@sentry/node 154.26 KB +0.09% +141 B 🔺
@sentry/node - without tracing 95.96 KB +0.19% +179 B 🔺
@sentry/aws-serverless 120.32 KB +0.12% +142 B 🔺

View base workflow run

@mydea mydea force-pushed the fn/propagate-traces-node-http branch from 5e3f8a3 to 5d33b15 Compare May 9, 2025 07:12
@mydea mydea force-pushed the fn/propagate-traces-node-http branch from 8d00e62 to 7186fa9 Compare May 12, 2025 10:37
@mydea mydea changed the title fix(node): Ensure traces are propagated without spans in Node 23+ fix(node): Ensure traces are propagated without spans in Node 22+ May 12, 2025
@mydea
Copy link
Member Author

mydea commented May 12, 2025

Update: This is also available on Node 22, so Node 22 & Node 24 work, which is pretty OK I'd say for now...

@mydea mydea force-pushed the fn/propagate-traces-node-http branch from 00fb39b to 0cf5e41 Compare May 12, 2025 12:11
@mydea mydea merged commit 9d659a5 into develop May 12, 2025
109 checks passed
@mydea mydea deleted the fn/propagate-traces-node-http branch May 12, 2025 12:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants