Skip to content

Commit babe3dc

Browse files
committed
auto revoery support for nitro dev
1 parent b4dd08d commit babe3dc

1 file changed

Lines changed: 11 additions & 0 deletions

File tree

src/dev/server.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ export class NitroDevServer extends NitroDevApp implements RunnerRPCHooks {
3030
#manager: RunnerManager;
3131
#workerIdCtr: number = 0;
3232
#workerError?: unknown;
33+
#workerRetries: number = 0;
3334
#building?: boolean = true; // Assume initial build will start soon
3435
#buildError?: unknown;
3536
#reloadPromise?: Promise<void>;
@@ -67,6 +68,7 @@ export class NitroDevServer extends NitroDevApp implements RunnerRPCHooks {
6768

6869
this.#manager = new RunnerManager();
6970
this.#manager.onReady(async (_runner, addr) => {
71+
this.#workerRetries = 0;
7072
writeDevBuildInfo(this.nitro, addr).catch((error) => {
7173
this.nitro.logger.warn(
7274
`Failed to write dev build info: ${error instanceof Error ? error.message : String(error)}`
@@ -75,6 +77,15 @@ export class NitroDevServer extends NitroDevApp implements RunnerRPCHooks {
7577
});
7678
this.#manager.onClose((_runner, cause) => {
7779
this.#workerError = cause;
80+
if (this.#workerRetries++ < 3) {
81+
this.nitro.logger.info("Restarting dev worker...", cause ? `Cause: ${cause}` : "");
82+
this.reload();
83+
} else {
84+
this.nitro.logger.error(
85+
"Dev worker failed after 3 retries.",
86+
cause ? `Last cause: ${cause}` : ""
87+
);
88+
}
7889
});
7990

8091
nitro.hooks.hook("close", () => this.close());

0 commit comments

Comments
 (0)