blob: cc3644fffe3610801ac6e825ddd870026ec85208 [file] [log] [blame]
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