core: start another worker on crash

This commit is contained in:
undefined committed 2021-03-03 13:27:26 +08:00
1 parent fa9396afd0
commit d33401c4e9
2 files changed
+4 -3

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "hydrooj", "name": "hydrooj",
"version": "2.19.2", "version": "2.19.3",
"bin": "bin/hydrooj.js", "bin": "bin/hydrooj.js",
"main": "dist/loader.js", "main": "dist/loader.js",
"typings": "dist/loader.d.ts", "typings": "dist/loader.d.ts",
+3 -2
View File
@@ -97,8 +97,8 @@ async function stopWorker() {
cluster.disconnect(); cluster.disconnect();
} }
async function startWorker(cnt: number) { async function startWorker(cnt: number, createFirst = true) {
await fork(['--firstWorker']); await fork(createFirst ? ['--firstWorker'] : undefined);
for (let i = 1; i < cnt; i++) await fork(); for (let i = 1; i < cnt; i++) await fork();
} }
@@ -158,6 +158,7 @@ export async function load() {
logger.info('Master started'); logger.info('Master started');
cluster.on('exit', (worker, code, signal) => { cluster.on('exit', (worker, code, signal) => {
logger.warn(`Worker ${worker.process.pid} ${worker.id} exit: ${code} ${signal}`); logger.warn(`Worker ${worker.process.pid} ${worker.id} exit: ${code} ${signal}`);
if (code) startWorker(1);
}); });
cluster.on('disconnect', (worker) => { cluster.on('disconnect', (worker) => {
logger.info(`Worker ${worker.process.pid} ${worker.id} disconnected`); logger.info(`Worker ${worker.process.pid} ${worker.id} disconnected`);