getsentry / getsentry/sentry-javascript
Cloudflare Workers: no server segment span for a request interrupted by a streaming RSC error under span streaming
- 主要语言
- TypeScript
- 星标
- 8.7k
- 派生
- 1.8k
- 平均合并
- 1 天 17 小时
- 30 天内合并 PR
- 515
描述
## 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.
贡献指南
评估
这个 Issue 还没有评估数据。