getsentry / getsentry/sentry-javascript
Cloudflare Workers: no server segment span for a request interrupted by a streaming RSC error under span streaming
- Dominant language
- TypeScript
- Stars
- 8.7k
- Forks
- 1.8k
- Avg merge
- 1d 17h
- Merged PRs (30d)
- 515
Description
## What
On Cloudflare Workers with span streaming enabled, a request whose response is interrupted by a crashing streaming RSC promise emits no `http.server` segment span for the route. Under `traceLifecycle: 'static'` the equivalent transaction is sent.
The same scenario on Node (`nextjs-16`) does emit the server segment span, so this appears specific to the Workers runtime.
## Evidence
Observed in the `nextjs-16-cf-workers` E2E app while porting it to span streaming in #23926. The streamed event dump for a run of `streaming-rsc-error.test.ts` contains, all on trace `7e8fee9d`:
```
resolve page server component "/streaming-rsc-error/[param]" is_segment=false
http://localhost:3030/streaming-rsc-error/123 is_segment=false (x7)
/streaming-rsc-error/:param is_segment=true <- client pageload
```
The error (`I am a data streaming error`) is captured on that same trace. Server-side children are present, so the work is traced - but there is no `GET /streaming-rsc-error/[param]` segment span. Other routes in the same app do emit their server segments (`GET /parameterized/[one]/beep/[two]`, `GET /isr-test/[product]`, etc.), so it is not a blanket absence.
`nextjs-16-cf-workers` passes on `develop` today with the transaction-based version of this spec, which is not skipped there.
## Impact
A request aborted by a streaming RSC error is not represented by a segment span on Workers under streaming, so it would not appear as a transaction in the product. Its children and its error are still sent, and are orphaned onto the client pageload's trace.
## Status
The affected E2E test is skipped in #23926 with a pointer to this issue, rather than having its expectations relaxed. This app already carries several `test.skip`s with TODOs for Cloudflare Workers SDK work; this is another.
Contributor guide
Assessment
This issue has not been assessed yet.