| const log = require('../logger').create('launcher') | |
| function RetryLauncher (retryLimit) { | |
| this._retryLimit = retryLimit | |
| this.on('done', () => { | |
| if (!this.error) { | |
| return | |
| } | |
| if (this._retryLimit > 0) { | |
| log.info(`Trying to start ${this.name} again (${retryLimit - this._retryLimit + 1}/${retryLimit}).`) | |
| this.restart() | |
| this._retryLimit-- | |
| } else if (this._retryLimit === 0) { | |
| log.error(`${this.name} failed ${retryLimit} times (${this.error}). Giving up.`) | |
| } else { | |
| log.debug(`${this.name} failed (${this.error}). Not restarting.`) | |
| } | |
| }) | |
| } | |
| RetryLauncher.decoratorFactory = function (retryLimit) { | |
| return function (launcher) { | |
| RetryLauncher.call(launcher, retryLimit) | |
| } | |
| } | |
| RetryLauncher.decoratorFactory.$inject = ['config.retryLimit'] | |
| module.exports = RetryLauncher |