summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-07-28 17:52:54 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-07-28 17:52:54 +0900
commitfb74f1d72ba0799f685a58c7ccc7ec9df3c7872e (patch)
treeb4fe4f4542afc71a1038c646e93bb3fd04aa1604 /src
parent5.6.2 (diff)
downloadmisskey-fb74f1d72ba0799f685a58c7ccc7ec9df3c7872e.tar.gz
misskey-fb74f1d72ba0799f685a58c7ccc7ec9df3c7872e.tar.bz2
misskey-fb74f1d72ba0799f685a58c7ccc7ec9df3c7872e.zip
いくつかのコマンドラインオプションを追加するなど
Diffstat (limited to 'src')
-rw-r--r--src/index.ts87
1 files changed, 56 insertions, 31 deletions
diff --git a/src/index.ts b/src/index.ts
index eae25762ec..3698141e9a 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -11,6 +11,7 @@ import chalk from 'chalk';
import * as portscanner from 'portscanner';
import isRoot = require('is-root');
import Xev from 'xev';
+import * as program from 'commander';
import Logger from './misc/logger';
import ProgressBar from './misc/cli/progressbar';
@@ -31,6 +32,14 @@ if (process.env.NODE_ENV != 'production') {
process.env.DEBUG = 'misskey:*';
}
+const pkg = require('../package.json');
+
+program
+ .version(pkg.version)
+ .option('--no-daemons', 'Disable daemon processes (for debbuging)')
+ .option('--disable-clustering', 'Disable clustering')
+ .parse(process.argv);
+
// Start app
main();
@@ -38,13 +47,20 @@ main();
* Init process
*/
function main() {
- if (cluster.isMaster) {
+ if (cluster.isMaster || program.disableClustering) {
masterMain();
- ev.mount();
- serverStats();
- notesStats();
- } else {
+ if (cluster.isMaster) {
+ ev.mount();
+ }
+
+ if (!program.noDaemons) {
+ serverStats();
+ notesStats();
+ }
+ }
+
+ if (cluster.isWorker || program.disableClustering) {
workerMain();
}
}
@@ -66,10 +82,12 @@ async function masterMain() {
Logger.succ('Misskey initialized');
- spawnWorkers(config.clusterLimit, () => {
+ if (!program.disableClustering) {
+ await spawnWorkers(config.clusterLimit);
Logger.succ('All workers started');
- Logger.info(`Now listening on port ${config.port} on ${config.url}`);
- });
+ }
+
+ Logger.info(`Now listening on port ${config.port} on ${config.url}`);
}
/**
@@ -79,8 +97,10 @@ async function workerMain() {
// start server
await require('./server').default();
- // Send a 'ready' message to parent process
- process.send('ready');
+ if (cluster.isWorker) {
+ // Send a 'ready' message to parent process
+ process.send('ready');
+ }
}
/**
@@ -124,40 +144,45 @@ async function init(): Promise<Config> {
}
// Try to connect to MongoDB
+ checkMongoDb(config);
+
+ return config;
+}
+
+function checkMongoDb(config: Config) {
const mongoDBLogger = new Logger('MongoDB');
mongoDBLogger.info(`Host: ${config.mongodb.host}`);
mongoDBLogger.info(`Port: ${config.mongodb.port}`);
mongoDBLogger.info(`DB: ${config.mongodb.db}`);
if (config.mongodb.user) mongoDBLogger.info(`User: ${config.mongodb.user}`);
if (config.mongodb.pass) mongoDBLogger.info(`Pass: ****`);
- const db = require('./db/mongodb').default;
+ require('./db/mongodb');
mongoDBLogger.succ('Connectivity confirmed');
- db.close();
-
- return config;
}
-function spawnWorkers(limit: number, onComplete: Function) {
- // Count the machine's CPUs
- const cpuCount = os.cpus().length;
+function spawnWorkers(limit: number) {
+ return new Promise(res => {
+ // Count the machine's CPUs
+ const cpuCount = os.cpus().length;
- const count = limit || cpuCount;
+ const count = limit || cpuCount;
- const progress = new ProgressBar(count, 'Starting workers');
+ const progress = new ProgressBar(count, 'Starting workers');
- // Create a worker for each CPU
- for (let i = 0; i < count; i++) {
- const worker = cluster.fork();
- worker.on('message', message => {
- if (message === 'ready') {
- progress.increment();
- }
- });
- }
+ // Create a worker for each CPU
+ for (let i = 0; i < count; i++) {
+ const worker = cluster.fork();
+ worker.on('message', message => {
+ if (message === 'ready') {
+ progress.increment();
+ }
+ });
+ }
- // On all workers started
- progress.on('complete', () => {
- onComplete();
+ // On all workers started
+ progress.on('complete', () => {
+ res();
+ });
});
}