summaryrefslogtreecommitdiff
path: root/packages/backend/src/boot/master.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/backend/src/boot/master.ts')
-rw-r--r--packages/backend/src/boot/master.ts43
1 files changed, 29 insertions, 14 deletions
diff --git a/packages/backend/src/boot/master.ts b/packages/backend/src/boot/master.ts
index 80ea1b7431..cf9e9a9bae 100644
--- a/packages/backend/src/boot/master.ts
+++ b/packages/backend/src/boot/master.ts
@@ -33,7 +33,6 @@ const themeColor = chalk.hex('#86b300');
function greet() {
if (!envOption.quiet) {
//#region Misskey logo
- const v = `v${meta.version}`;
console.log(themeColor(' _____ _ _ '));
console.log(themeColor('/ ___| | | | '));
console.log(themeColor('\\ `--.| |__ __ _ _ __| | _____ _ _ '));
@@ -92,36 +91,52 @@ export async function masterMain() {
maxBreadcrumbs: 0,
// Set release version
- release: "Sharkey@" + meta.version,
+ release: 'Sharkey@' + meta.version,
...config.sentryForBackend.options,
});
}
- if (envOption.disableClustering) {
+ bootLogger.info(
+ `mode: [disableClustering: ${envOption.disableClustering}, onlyServer: ${envOption.onlyServer}, onlyQueue: ${envOption.onlyQueue}]`,
+ );
+
+ if (envOption.onlyServer && envOption.onlyQueue) {
+ bootLogger.error('Configuration error: onlyServer and onlyQueue cannot both be set. To run both server and queue workers, disable / remove both options.');
+ process.exit(1);
+ }
+
+ if (!envOption.disableClustering) {
+ // clusterモジュール有効時
+
if (envOption.onlyServer) {
- await server();
+ // onlyServer かつ enableCluster な場合、メインプロセスはforkのみに制限する(listenしない)。
+ // ワーカープロセス側でlistenすると、メインプロセスでポートへの着信を受け入れてワーカープロセスへの分配を行う動作をする。
+ // そのため、メインプロセスでも直接listenするとポートの競合が発生して起動に失敗してしまう。
+ // see: https://nodejs.org/api/cluster.html#cluster
} else if (envOption.onlyQueue) {
await jobQueue();
} else {
await server();
- await jobQueue();
- }
- } else {
- if (envOption.onlyServer) {
- // nop
- } else if (envOption.onlyQueue) {
- // nop
- } else {
- 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);
+ 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);
+ } else {
+ // clusterモジュール無効時
+
+ if (envOption.onlyServer) {
+ await server();
+ } else if (envOption.onlyQueue) {
+ await jobQueue();
+ } else {
+ await server();
+ await jobQueue();
+ }
}
if (envOption.onlyQueue) {