Skip to content

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

Description

@chargome

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.skips with TODOs for Cloudflare Workers SDK work; this is another.

Metadata

Metadata

Assignees

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions