getsentry / getsentry/sentry-javascript

Cloudflare Workers: no server segment span for a request interrupted by a streaming RSC error under span streaming

Đang mở
#23,932 1 bình luận 0 reaction 1 người được giao Được @chargome nhận Xem trên GitHub
Cloudflare Workers Next.js Spans
Ngôn ngữ chính
TypeScript
Star
8.7k
Fork
1.8k
Merge trung bình
1 ngày 17 giờ
Pull request đã merge (30 ngày)
515

Mô tả

## 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.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.