From d33401c4e99ad3f125500a77637e9f486cb24c0b Mon Sep 17 00:00:00 2001 From: undefined Date: Wed, 3 Mar 2021 13:27:26 +0800 Subject: [PATCH] core: start another worker on crash --- packages/hydrooj/package.json | 2 +- packages/hydrooj/src/loader.ts | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index 8525cec61..b005215e6 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.19.2", + "version": "2.19.3", "bin": "bin/hydrooj.js", "main": "dist/loader.js", "typings": "dist/loader.d.ts", diff --git a/packages/hydrooj/src/loader.ts b/packages/hydrooj/src/loader.ts index 281a8bfd3..1a41c1981 100644 --- a/packages/hydrooj/src/loader.ts +++ b/packages/hydrooj/src/loader.ts @@ -97,8 +97,8 @@ async function stopWorker() { cluster.disconnect(); } -async function startWorker(cnt: number) { - await fork(['--firstWorker']); +async function startWorker(cnt: number, createFirst = true) { + await fork(createFirst ? ['--firstWorker'] : undefined); for (let i = 1; i < cnt; i++) await fork(); } @@ -158,6 +158,7 @@ export async function load() { logger.info('Master started'); cluster.on('exit', (worker, code, signal) => { logger.warn(`Worker ${worker.process.pid} ${worker.id} exit: ${code} ${signal}`); + if (code) startWorker(1); }); cluster.on('disconnect', (worker) => { logger.info(`Worker ${worker.process.pid} ${worker.id} disconnected`);