getsentry / getsentry/sentry-javascript
[Span Streaming] Send `http.client` spans in server SDKs if there's no active parent span
- Dominant language
- TypeScript
- Stars
- 8.7k
- Forks
- 1.8k
- Avg merge
- 1d 17h
- Merged PRs (30d)
- 515
Description
### Description
If span streaming is enabled (by default in v11), let's align Node/Server behaviour with browser and always send a `http.client` span on outgoing requests. In practise, this should make little to no difference for servers but rather only in a "Sentry used in a script" scenario, or in heavily manually instrumented similar scenarios.
Concrete steps to take care of:
- Adjust `onlyIfParent` option, to only gate http.client spans when transaction mode is enabled
- add Tests for the following scenarios:
- tracing enabled, no parent span, fetch/http request -> sends a new span
- tracing enabled, no parent span, fetch/http request -> propagates sampling decision
- tracing not set (tracing without performance), no parent span -> propagates deferred (no) sampling decision
- ensure these scenarios are also tested in browser. if not, add browser tests
Contributor guide
Research direction
Start by locating the server SDK handling of the `onlyIfParent` option and the fetch/http instrumentation entry points. Review existing browser tests, then add coverage for no-parent requests with tracing enabled, disabled tracing, and sampling propagation. Done means the server scenarios behave like the browser and equivalent browser coverage exists.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- nodejs, typescript
- Domain
- backend, frontend, testing
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100