fix(node-core): Recycle propagationContext for each request#19835
fix(node-core): Recycle propagationContext for each request#19835
Conversation
size-limit report 📦
|
node-overhead report 🧳Note: This is a synthetic benchmark with a minimal express app and does not necessarily reflect the real-world performance impact in an application.
|
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
packages/node-core/src/integrations/http/httpServerIntegration.ts
Outdated
Show resolved
Hide resolved
packages/node-core/src/integrations/http/httpServerIntegration.ts
Outdated
Show resolved
Hide resolved
dev-packages/node-core-integration-tests/suites/tracing/traceid-recycling-with-spans/test.ts
Outdated
Show resolved
Hide resolved
Co-authored-by: Charly Gomez <charly.gomez1310@gmail.com>
Semver Impact of This PR🟢 Patch (bug fixes) 📋 Changelog PreviewThis is how your changes will appear in the changelog. Bug Fixes 🐛Deps
Other
Internal Changes 🔧
🤖 This preview updates automatically when you update the PR. |

This PR fixes a bug in our node-core
httpServerIntegration(user-facing it'shttpIntegration), which caused traceIds (or rather our propagationContext) to stay the same across requests. This would surface in SDK setups where tracing is not explicitly enabled (e.g. missingtracesSampleRate), causing caught errors across request to be associated with the same trace.This PR now recycles the propagationContext on the current as well as isolation scope to ensure traces are isolated on a request level. Added node(-core) integration tests to demonstrate that traceIds are now scoped to requests, when tracing is enabled or disabled. Prior to this PR, the test for tracing being disabled failed.
Note: This should only have an effect on SDKs configured for tracing without spans (i.e. (and confusingly) no
tracesSampleRateset), as for tracing with spans, we take the trace data from the active span directly. I added a test demonstrating this, just to be sure.closes #19815
ref #17101