summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2024-08-02 18:41:57 +0000
committerdakkar <dakkar@thenautilus.net>2024-08-02 18:41:57 +0000
commit5496aa27dbbb85dd6b3a1d1b253fcd9445ade38b (patch)
tree73969f28f4b5b4ba9e8dff3d615c61507e1b0789
parentmerge: pass redis config as-is to postgres cache (!577) (diff)
parentignore cpuCount when it's 0 - fixes #586 (diff)
downloadsharkey-5496aa27dbbb85dd6b3a1d1b253fcd9445ade38b.tar.gz
sharkey-5496aa27dbbb85dd6b3a1d1b253fcd9445ade38b.tar.bz2
sharkey-5496aa27dbbb85dd6b3a1d1b253fcd9445ade38b.zip
merge: error out when we can't start workers - fixes #586 (!578)
View MR for information: https://activitypub.software/TransFem-org/Sharkey/-/merge_requests/578 Closes #586 Approved-by: Tess K <me@thvxl.se> Approved-by: Marie <marie@kaifa.ch>
-rw-r--r--packages/backend/src/boot/master.ts10
1 files changed, 9 insertions, 1 deletions
diff --git a/packages/backend/src/boot/master.ts b/packages/backend/src/boot/master.ts
index 303ba94207..f757ed64b9 100644
--- a/packages/backend/src/boot/master.ts
+++ b/packages/backend/src/boot/master.ts
@@ -112,6 +112,11 @@ export async function masterMain() {
await server();
}
+ if (config.clusterLimit === 0) {
+ bootLogger.error("Configuration error: we can't create workers, `config.clusterLimit` is 0 (if you don't want to use clustering, set the environment variable `MK_DISABLE_CLUSTERING` to a non-empty value instead)", null, true);
+ process.exit(1);
+ }
+
await spawnWorkers(config.clusterLimit);
}
@@ -180,7 +185,10 @@ async function connectDb(): Promise<void> {
*/
async function spawnWorkers(limit = 1) {
- const workers = Math.min(limit, os.cpus().length);
+ const cpuCount = os.cpus().length;
+ // in some weird environments, node can't count the CPUs; we trust the config in those cases
+ const workers = cpuCount === 0 ? limit : Math.min(limit, cpuCount);
+
bootLogger.info(`Starting ${workers} worker${workers === 1 ? '' : 's'}...`);
await Promise.all([...Array(workers)].map(spawnWorker));
bootLogger.succ('All workers started');