Skip to content

Backport #4458: fix(world-vercel): keep large event bodies off busy HTTP/2 connections - #4461

Merged
pranaygp merged 1 commit into
stablefrom
backport/pr-4458-to-stable
Sep 29, 2026
Merged

pranaygp merged 1 commit into
stablefrom
backport/pr-4458-to-stable

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

Automated backport of #4458 to stable (backport job run).

AI recommendation: This is a hang/stall fix for code that exists verbatim on stable: packages/world-vercel/src/http-client.ts there still has the same h2MultiplexInterceptor that passes un-rebuffered (>1 MiB) bodies to the HTTP/2 connection, where undici holds them until the connection drains, pinning invocations until the replay budget or maxDuration expires. The undici 7.29.0→7.30.0 bump (stable is on 7.28.0, also affected) is motivated by the phantom-running-slot bug that causes the same wedge, not routine maintenance, and the 60s deadlines and ERR_HTTP2_STREAM_ERROR retry are bounded parts of the same defect fix. The new createH2MultiplexInterceptor/EVENTS_RETRY_AGENT_OPTIONS exports are internal plumbing for the fix rather than new user-facing capability, and all changesets are patch.

Merge conflicts were resolved by AI (opencode with anthropic/claude-opus-5). Please review the conflict resolution carefully before merging.

#4458)

Event POSTs with bodies over 1 MiB (run_started carrying a multi-MiB run
input, large event batches) could not be re-buffered by the H2
multiplexing interceptor, so undici held them until the connection had
zero in-flight streams and stopped its queue behind them. On busy
instances they hung until the replay budget or maxDuration ran out.

- Send those bodies over an HTTP/1.1 agent instead.
- Upgrade undici to 7.30.0, which fixes the phantom running slot a
  failed HTTP/2 stream left on its connection (nodejs/undici#5410,
  #5569) and honors headersTimeout on HTTP/2.
- Bound events requests with 60s header/body deadlines instead of
  undici's 300s defaults, which outlasted the 240s replay budget.
- Retry event-log reads (GET only) whose stream the peer reset with
  ERR_HTTP2_STREAM_ERROR.

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Pranay Prakash <pranay.gp@gmail.com>
@changeset-bot

changeset-bot Bot commented Sep 28, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 0310746

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 19 packages
Name Type
@workflow/world-vercel Patch
@workflow/world-local Patch
@workflow/world-postgres Patch
@workflow/cli Patch
@workflow/core Patch
@workflow/web Patch
@workflow/vitest Patch
workflow Patch
@workflow/world-testing Patch
@workflow/builders Patch
@workflow/next Patch
@workflow/nitro Patch
@workflow/web-shared Patch
@workflow/astro Patch
@workflow/nest Patch
@workflow/rollup Patch
@workflow/sveltekit Patch
@workflow/vite Patch
@workflow/nuxt Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@vercel

vercel Bot commented Sep 28, 2026 •

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
example-nextjs-workflow-turbopack Ready Ready Preview, v0 Sep 28, 2026 9:02pm UTC
example-nextjs-workflow-webpack Ready Ready Preview, v0 Sep 28, 2026 9:02pm UTC
example-workflow Ready Ready Preview, v0 Sep 28, 2026 9:02pm UTC
workbench-astro-workflow Ready Ready Preview, v0 Sep 28, 2026 9:02pm UTC
workbench-express-workflow Ready Ready Preview, v0 Sep 28, 2026 9:02pm UTC
workbench-fastify-workflow Ready Ready Preview, v0 Sep 28, 2026 9:02pm UTC
workbench-hono-workflow Ready Ready Preview, v0 Sep 28, 2026 9:02pm UTC
workbench-nestjs-workflow Ready Ready Preview, v0 Sep 28, 2026 9:02pm UTC
workbench-nitro-workflow Ready Ready Preview, v0 Sep 28, 2026 9:02pm UTC
workbench-nuxt-workflow Ready Ready Preview, v0 Sep 28, 2026 9:02pm UTC
workbench-python-workflow Error Error v0 Sep 28, 2026 9:02pm UTC
workbench-sveltekit-workflow Ready Ready Preview, v0 Sep 28, 2026 9:02pm UTC
workbench-tanstack-start-workflow Ready Ready Preview, v0 Sep 28, 2026 9:02pm UTC
workbench-vite-workflow Ready Ready Preview, v0 Sep 28, 2026 9:02pm UTC
workflow-docs Ready Ready Preview, v0 Sep 28, 2026 9:02pm UTC
workflow-swc-playground Ready Ready Preview, v0 Sep 28, 2026 9:02pm UTC
workflow-tarballs Ready Ready Preview, v0 Sep 28, 2026 9:02pm UTC
workflow-web Ready Ready Preview, v0 Sep 28, 2026 9:02pm UTC

@socket-security

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatednpm/​undici@​7.28.0 ⏵ 7.30.093100 +21100 +198100

View full report

@pranaygp
pranaygp merged commit 42c9810 into stable Sep 29, 2026
23 of 24 checks passed
@pranaygp
pranaygp deleted the backport/pr-4458-to-stable branch September 29, 2026 03:44

This branch was successfully deployed

1 active deployment
Preview – workflow-docs — 03107463 Deployed Sep 28, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant