fix(backend): disableClustering設定時の初期化ロジックを調整 (#15224)
* fix(backend): disableClustering設定時の初期化ロジックを調整 * onlyServer かつ enableCluster な場合、メインプロセスでlistenするとワーカープロセス側のlistenと衝突するため、メインプロセスはforkのみに制限する(listenしない) * ログの追加 * fix CHANGELOG.md * fix comment
This commit is contained in:
@@ -91,25 +91,37 @@ export async function masterMain() {
|
||||
});
|
||||
}
|
||||
|
||||
if (envOption.disableClustering) {
|
||||
bootLogger.info(
|
||||
`mode: [disableClustering: ${envOption.disableClustering}, onlyServer: ${envOption.onlyServer}, onlyQueue: ${envOption.onlyQueue}]`
|
||||
);
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
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) {
|
||||
|
Reference in New Issue
Block a user