/** * @private */ _createWorkers(){ const worker = cluster.fork(); const pid = worker.process.pid; this._logger.info({workerPid: pid}, 'create new worker'); this._workers[pid] = worker; worker.once('exit', () => { this._logger.info({workerPid: pid}, 'worker died. Restart'); delete this._workers[pid]; this._createWorkers(); }); worker.on('message', ({cmd}) => { switch(cmd){ case 'EADDRINUSE': this._logger.fatal({workerPid: pid}, 'fatal error'); setImmediate(process.exit); break; default: break; } }); }
resolve(); }, 60000); worker.once('disconnect', () => { clearTimeout(timeout); delete this._workerStatusMap[worker.process.pid];
}.bind(this)); } else if (readyOn === 'listen' && this.worker) { this.worker.once('listening', this._onReady.bind(this)); } else { setImmediate(this._onReady.bind(this));