Dev server restart wedges permanently under @cloudflare/vite-plugin when a request straddles the restart (bundled-dev/rolldown pipeline implicated)
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 32/100
Direzione di ricerca
Inizia dal percorso del dev-server di bundled-dev/rolldown e segui server.restart(), configureServer e l’handshake fetchWorkerExportTypes → miniflare.dispatchFetch. Riproduci il problema con lo scaffold Pioneer e un ciclo di polling con curl mentre una richiesta si sovrappone a un riavvio, quindi confronta il comportamento con plain Vite. Il lavoro è completato quando l’handshake si stabilizza e il vecchio server si chiude senza richiedere il gate 503 downstream.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Versions
vite-plus 0.2.5 (Vite core 8.1.5), @cloudflare/vite-plugin 1.52.1, wrangler 4.123.0, node 24.x, darwin-arm64 (also reproduces on GitHub Actions macos-14)
Summary
Cross-filed with cloudflare/workers-sdk#15241 (full mechanism and OS-level evidence there). Filing here because the permanent wedge reproduces only when the Vite+/rolldown dev pipeline is active — a plain-Vite scaffold at identical pins does not wedge in 8 escalating-fidelity trials — so vite-plus is a co-suspect by elimination.
When server.restart() runs while an HTTP request is in flight, the cloudflare plugin's post-swap handshake (fetchWorkerExportTypes → miniflare.dispatchFetch) never resolves: the straddling request is left permanently in-flight inside workerd (CLOSE_WAIT entry socket in 7/7 hangs), and the export-types fetch wedges behind it. configureServer never returns, server.restart() never settles, and the old server is never closed. Traffic during restart is necessary and sufficient (hang 9/9 with a poll loop; clean 14/14 without).
Why vite-plus specifically
- The wedged node process runs rolldown worker threads at hang time (
samplecaptures available) — i.e. the bundled-dev serving path, not plain per-module transform. - Plain Vite + the same cloudflare plugin, same options swap, same D1 binding, same tight polling: the mid-swap
fetch failedabort signature reproduces, but the export-types fetch still resolves (~3s). Under vite-plus it never resolves. - The in-flight
JsRpcTargetframes in every wedged workerd sample are consistent with a straddling request holding a multi-roundtrip module-runner/bundle RPC open across the Miniflare options swap — plausibly the bundled-dev "keep Miniflare and related resources alive during mid-serve builds" behavior interacting with a client-aborted request that workerd never cancels.
Repro
Deterministic 9/9 via a Pioneer framework scaffold (github.com/find-how/pioneer.find.how — pioneer new, pioneer dev, curl poll loop, config-triggered restart). Trial harness and captured evidence (debuglogs, sample, lsof) available on request; happy to help reduce further.
Downstream mitigation in place
We now 503-gate incoming requests during restart, which removes the trigger — but the non-settling handshake under bundled-dev remains reproducible upstream behavior worth a cancellation/drain fix at the source.
- Lingua principale
- Rust
- Stelle
- 6k
- Fork
- 271
- Merge medio
- 1g 12h
- PR unite (30g)
- 198
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di voidzero-dev/vite-plus
-
`npx --package=vite-plus vp create` fails with exit 127 when npm is the chosen package managerApertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
voidzero-dev/vite-plus#2970 ·
I maintainer di solito rispondono entro 1 giorno
-
PowerShell `vp` wrapper hides failures: `$?` is `True` and `&&` keeps going after `vp` failsForse già presa @fengmk2 l’ha presa 1 giorno fa. Apertabug pending triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
voidzero-dev/vite-plus#2934 · 2 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Skip the `vpr` hint when the script runs the same built-inForse già presa @kshanxs l’ha presa oggi. Apertapending triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
voidzero-dev/vite-plus#2892 · 1 commento · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
pending triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
voidzero-dev/vite-plus#2882 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
`lazyPlugins` docs: dynamic import of a local module still slows down config loadingForse già presa @kshanxs l’ha presa oggi. Apertadocumentation pending triage
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 78/100
voidzero-dev/vite-plus#2875 · 4 commenti ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di voidzero-dev/vite-plus
Issue simili
-
✨ enhancement needs-discussion
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
-
docs(openclaw): RTK_REWRITE_HOST relaxes every default ask, not only commands no rule matchedApertaarea:docs documentation good first issue priority:low
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
rtk-ai/rtk#4500 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
triage:accepted
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
open-telemetry/otel-arrow#4343 ·
I maintainer di solito rispondono entro 2 giorni
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
mishraprafful/multihull#150 ·
I maintainer di solito rispondono entro 1 giorno
-
area:tooling bug good first issue priority:P3
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
michaelnavazhylau/ngspice-rs#129 ·
I maintainer di solito rispondono entro 1 giorno