getsentry / getsentry/sentry-javascript

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

Abierto
#23,932 1 comentario 0 reacciones 1 asignado Reclamado por @chargome Ver en GitHub
Cloudflare Workers Next.js Spans
Lenguaje dominante
TypeScript
Estrellas
8.7k
Forks
1.8k
Merge medio
1 d 17 h
PR fusionados (30 d)
523

Descripción

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

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.