Skip to content

Commit 40bc729

Browse files
authored
fix(dev): handle concurrent restarts in _createServer (#21810)
1 parent 1b98588 commit 40bc729

1 file changed

Lines changed: 6 additions & 4 deletions

File tree

packages/vite/src/node/server/index.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -479,6 +479,8 @@ export async function _createServer(
479479
listen: boolean
480480
previousEnvironments?: Record<string, DevEnvironment>
481481
previousShortcutsState?: ShortcutsState<ViteDevServer>
482+
previousRestartPromise?: Promise<void> | null
483+
previousForceOptimizeOnRestart?: boolean
482484
},
483485
): Promise<ViteDevServer> {
484486
const config = isResolvedConfig(inlineConfig)
@@ -809,8 +811,8 @@ export async function _createServer(
809811
// server instance after a restart
810812
server = _server
811813
},
812-
_restartPromise: null,
813-
_forceOptimizeOnRestart: false,
814+
_restartPromise: options.previousRestartPromise ?? null,
815+
_forceOptimizeOnRestart: options.previousForceOptimizeOnRestart ?? false,
814816
_shortcutsState: options.previousShortcutsState,
815817
}
816818

@@ -1290,6 +1292,8 @@ async function restartServer(server: ViteDevServer) {
12901292
listen: false,
12911293
previousEnvironments: server.environments,
12921294
previousShortcutsState: server._shortcutsState,
1295+
previousRestartPromise: server._restartPromise,
1296+
previousForceOptimizeOnRestart: server._forceOptimizeOnRestart,
12931297
})
12941298
} catch (err: any) {
12951299
server.config.logger.error(err.message, {
@@ -1308,8 +1312,6 @@ async function restartServer(server: ViteDevServer) {
13081312
const middlewares = server.middlewares
13091313
newServer._configServerPort = server._configServerPort
13101314
newServer._currentServerPort = server._currentServerPort
1311-
newServer._restartPromise = server._restartPromise
1312-
newServer._forceOptimizeOnRestart = server._forceOptimizeOnRestart
13131315
Object.assign(server, newServer)
13141316

13151317
// Keep the same connect instance so app.use(vite.middlewares) works

0 commit comments

Comments
 (0)