diff --git a/lib/shiva/errors/dock-not-detached-error.js b/lib/shiva/errors/dock-not-detached-error.js new file mode 100644 index 0000000..be111c7 --- /dev/null +++ b/lib/shiva/errors/dock-not-detached-error.js @@ -0,0 +1,8 @@ +'use strict' +const BaseError = require('error-cat/errors/base-error') + +module.exports = class DockNotDetachedError extends BaseError { + constructor (errMessage, originalError, reporting) { + super(errMessage, originalError, reporting) + } +} diff --git a/lib/shiva/tasks/dock.attach.js b/lib/shiva/tasks/dock.attach.js index 74a8fb3..8cbae02 100644 --- a/lib/shiva/tasks/dock.attach.js +++ b/lib/shiva/tasks/dock.attach.js @@ -1,6 +1,7 @@ 'use strict' const Promise = require('bluebird') const WorkerStopError = require('error-cat/errors/worker-stop-error') +const DockNotDetachedError = require('../errors/dock-not-detached-error') require('loadenv')({ project: 'shiva', debugName: 'astral:shiva:env' }) const AutoScalingGroup = require('../models/auto-scaling-group') @@ -35,8 +36,10 @@ DockAttach.task = (job) => { if (err.getCurrentASG() === targetASGName) { throw new WorkerStopError('instance already attached to asg', { err, targetASGName }) } - - throw err + if (!(new RegExp('is already part of AutoScalingGroup:' + process.env.DOCK_POOL_ASG_NAME).test(err.data.originalError.message))) { + throw new DockNotDetachedError('Instance still not detached from pool', err, { level: 'info' }) + } + throw err; }) .then(() => { return publisher.publishTask('dock.initialize', {