From 6cf466e5d1d423aec8ec06f65644c73c7e9a8ecd Mon Sep 17 00:00:00 2001 From: syuilo Date: Fri, 15 Sep 2023 14:28:29 +0900 Subject: update deps (#11820) * update deps * fix * wip * wip * wip * Update docker-compose.yml.example * Delete reviewer-lottery.yml * Update RepositoryModule.ts * wip * wip * clean up * update deps * wip * wip --- packages/backend/src/boot/entry.ts | 86 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 packages/backend/src/boot/entry.ts (limited to 'packages/backend/src/boot/entry.ts') diff --git a/packages/backend/src/boot/entry.ts b/packages/backend/src/boot/entry.ts new file mode 100644 index 0000000000..fc8fc2ffb4 --- /dev/null +++ b/packages/backend/src/boot/entry.ts @@ -0,0 +1,86 @@ +/* + * SPDX-FileCopyrightText: syuilo and other misskey contributors + * SPDX-License-Identifier: AGPL-3.0-only + */ + +/** + * Misskey Entry Point! + */ + +import cluster from 'node:cluster'; +import { EventEmitter } from 'node:events'; +import chalk from 'chalk'; +import Xev from 'xev'; +import Logger from '@/logger.js'; +import { envOption } from '../env.js'; +import { masterMain } from './master.js'; +import { workerMain } from './worker.js'; + +import 'reflect-metadata'; + +process.title = `Misskey (${cluster.isPrimary ? 'master' : 'worker'})`; + +Error.stackTraceLimit = Infinity; +EventEmitter.defaultMaxListeners = 128; + +const logger = new Logger('core', 'cyan'); +const clusterLogger = logger.createSubLogger('cluster', 'orange', false); +const ev = new Xev(); + +//#region Events + +// Listen new workers +cluster.on('fork', worker => { + clusterLogger.debug(`Process forked: [${worker.id}]`); +}); + +// Listen online workers +cluster.on('online', worker => { + clusterLogger.debug(`Process is now online: [${worker.id}]`); +}); + +// Listen for dying workers +cluster.on('exit', worker => { + // Replace the dead worker, + // we're not sentimental + clusterLogger.error(chalk.red(`[${worker.id}] died :(`)); + cluster.fork(); +}); + +// Display detail of unhandled promise rejection +if (!envOption.quiet) { + process.on('unhandledRejection', console.dir); +} + +// Display detail of uncaught exception +process.on('uncaughtException', err => { + try { + logger.error(err); + console.trace(err); + } catch { } +}); + +// Dying away... +process.on('exit', code => { + logger.info(`The process is going to exit with code ${code}`); +}); + +//#endregion + +if (cluster.isPrimary || envOption.disableClustering) { + await masterMain(); + + if (cluster.isPrimary) { + ev.mount(); + } +} + +if (cluster.isWorker || envOption.disableClustering) { + await workerMain(); +} + +// ユニットテスト時にMisskeyが子プロセスで起動された時のため +// それ以外のときは process.send は使えないので弾く +if (process.send) { + process.send('ok'); +} -- cgit v1.2.3-freya