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