| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 | 
							- const cluster = require('cluster')
 
- const Promise = require('bluebird')
 
- const _ = require('lodash')
 
- /* global wiki */
 
- module.exports = {
 
-   numWorkers: 1,
 
-   workers: [],
 
-   init() {
 
-     if (cluster.isMaster) {
 
-       wiki.logger.info('=======================================')
 
-       wiki.logger.info('= Wiki.js =============================')
 
-       wiki.logger.info('=======================================')
 
-       wiki.redis = require('./redis').init()
 
-       wiki.queue = require('./queue').init()
 
-       this.setWorkerLimit()
 
-       this.bootMaster()
 
-     } else {
 
-       this.bootWorker()
 
-     }
 
-   },
 
-   /**
 
-    * Pre-Master Boot Sequence
 
-    */
 
-   preBootMaster() {
 
-     return Promise.mapSeries([
 
-       () => { return wiki.db.onReady },
 
-       () => { return wiki.configSvc.loadFromDb() },
 
-       () => { return wiki.queue.clean() }
 
-     ], fn => { return fn() })
 
-   },
 
-   /**
 
-    * Boot Master Process
 
-    */
 
-   bootMaster() {
 
-     this.preBootMaster().then(sequenceResults => {
 
-       if (_.every(sequenceResults, rs => rs === true) && wiki.config.configMode !== 'setup') {
 
-         this.postBootMaster()
 
-       } else {
 
-         wiki.logger.info('Starting configuration manager...')
 
-         require('../setup')()
 
-       }
 
-       return true
 
-     }).catch(err => {
 
-       wiki.logger.error(err)
 
-       process.exit(1)
 
-     })
 
-   },
 
-   /**
 
-    * Post-Master Boot Sequence
 
-    */
 
-   async postBootMaster() {
 
-     await require('../master')()
 
-     _.times(this.numWorkers, () => {
 
-       this.spawnWorker()
 
-     })
 
-     wiki.queue.uplClearTemp.add({}, {
 
-       repeat: { cron: '*/15 * * * *' }
 
-     })
 
-     cluster.on('exit', (worker, code, signal) => {
 
-       wiki.logger.info(`Background Worker #${worker.id} was terminated.`)
 
-     })
 
-   },
 
-   /**
 
-    * Boot Worker Process
 
-    */
 
-   bootWorker() {
 
-     wiki.logger.info(`Background Worker #${cluster.worker.id} is initializing...`)
 
-     require('../worker')
 
-   },
 
-   /**
 
-    * Spawn new Worker process
 
-    */
 
-   spawnWorker() {
 
-     this.workers.push(cluster.fork())
 
-   },
 
-   /**
 
-    * Set Worker count based on config + system capabilities
 
-    */
 
-   setWorkerLimit() {
 
-     const numCPUs = require('os').cpus().length
 
-     this.numWorkers = (wiki.config.workers > 0) ? wiki.config.workers : numCPUs
 
-     if (this.numWorkers > numCPUs) {
 
-       this.numWorkers = numCPUs
 
-     }
 
-   }
 
- }
 
 
  |