| 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 |