summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2018-11-06 03:48:23 +0900
committersyuilo <syuilotan@yahoo.co.jp>2018-11-06 03:48:23 +0900
commite9a349522594936a6df015694be9a5d4c6d56cad (patch)
treeb3c09881c8673db5e316984b9e63727f2188a400 /src
parentFix #3133 (#3134) (diff)
downloadmisskey-e9a349522594936a6df015694be9a5d4c6d56cad.tar.gz
misskey-e9a349522594936a6df015694be9a5d4c6d56cad.tar.bz2
misskey-e9a349522594936a6df015694be9a5d4c6d56cad.zip
Resolve #3132
Diffstat (limited to 'src')
-rw-r--r--src/index.ts24
-rw-r--r--src/misc/cli/progressbar.ts85
2 files changed, 12 insertions, 97 deletions
diff --git a/src/index.ts b/src/index.ts
index ae358105fb..c68f617c09 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -17,7 +17,6 @@ import * as program from 'commander';
import mongo from './db/mongodb';
import Logger from './misc/logger';
-import ProgressBar from './misc/cli/progressbar';
import EnvironmentInfo from './misc/environmentInfo';
import MachineInfo from './misc/machineInfo';
import serverStats from './daemons/server-stats';
@@ -87,10 +86,9 @@ async function masterMain() {
if (!program.disableClustering) {
await spawnWorkers(config.clusterLimit);
- Logger.succ('All workers started');
}
- Logger.info(`Now listening on port ${config.port} on ${config.url}`);
+ Logger.succ(`Now listening on port ${config.port} on ${config.url}`);
}
/**
@@ -168,28 +166,30 @@ function checkMongoDb(config: Config) {
}
function spawnWorkers(limit: number) {
+ Logger.info('Starting workers...');
+
return new Promise(res => {
// Count the machine's CPUs
const cpuCount = os.cpus().length;
const count = limit || cpuCount;
-
- const progress = new ProgressBar(count, 'Starting workers');
+ let started = 0;
// 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();
+ if (message !== 'ready') return;
+ started++;
+
+ // When all workers started
+ if (started == count) {
+ Logger.succ('All workers started');
+ res();
}
});
}
-
- // On all workers started
- progress.on('complete', () => {
- res();
- });
});
}
diff --git a/src/misc/cli/progressbar.ts b/src/misc/cli/progressbar.ts
deleted file mode 100644
index 72496fdedc..0000000000
--- a/src/misc/cli/progressbar.ts
+++ /dev/null
@@ -1,85 +0,0 @@
-import { EventEmitter } from 'events';
-import * as readline from 'readline';
-import chalk from 'chalk';
-
-/**
- * Progress bar
- */
-export default class extends EventEmitter {
- public max: number;
- public value: number;
- public text: string;
- private indicator: number;
-
- constructor(max: number, text: string = null) {
- super();
- this.max = max;
- this.value = 0;
- this.text = text;
- this.indicator = 0;
- this.draw();
-
- const iclock = setInterval(() => {
- this.indicator = (this.indicator + 1) % 4;
- this.draw();
- }, 200);
-
- this.on('complete', () => {
- clearInterval(iclock);
- });
- }
-
- public increment(): void {
- this.value++;
- this.draw();
-
- // Check if it is fulfilled
- if (this.value === this.max) {
- this.indicator = null;
-
- cll();
- process.stdout.write(`${this.render()} -> ${chalk.bold('Complete')}\n`);
-
- this.emit('complete');
- }
- }
-
- public draw(): void {
- const str = this.render();
- cll();
- process.stdout.write(str);
- }
-
- private render(): string {
- const width = 30;
- const t = this.text ? `${this.text} ` : '';
-
- const v = Math.floor((this.value / this.max) * width);
- const vs = new Array(v + 1).join('*');
-
- const p = width - v;
- const ps = new Array(p + 1).join(' ');
-
- const percentage = Math.floor((this.value / this.max) * 100);
- const percentages = chalk.gray(`(${percentage} %)`);
-
- let i: string;
- switch (this.indicator) {
- case 0: i = '-'; break;
- case 1: i = '\\'; break;
- case 2: i = '|'; break;
- case 3: i = '/'; break;
- case null: i = '+'; break;
- }
-
- return `${i} ${t}[${vs}${ps}] ${this.value} / ${this.max} ${percentages}`;
- }
-}
-
-/**
- * Clear current line
- */
-function cll(): void {
- readline.clearLine(process.stdout, 0); // Clear current text
- readline.cursorTo(process.stdout, 0, null); // Move cursor to the head of line
-}