From 0e23dad569282b2838f186370c8126933bbe532a Mon Sep 17 00:00:00 2001 From: Ryan Sandor Richards Date: Tue, 2 Feb 2016 13:47:16 -0800 Subject: [PATCH 1/2] Do not report RabbitMQ close errors on staging (helps with rollbar signal). --- lib/models/rabbitmq/index.js | 4 ++++ unit/models/rabbitmq.js | 41 +++++++++++++++++++++++++++++++++++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/lib/models/rabbitmq/index.js b/lib/models/rabbitmq/index.js index cc7911c8f..b12df3c41 100644 --- a/lib/models/rabbitmq/index.js +++ b/lib/models/rabbitmq/index.js @@ -176,6 +176,10 @@ RabbitMQ.prototype.close = function (cb) { } this.hermesClient.close(function () { log.trace('RabbitMQ.prototype.close complete') + if (process.env.NODE_ENV === 'staging') { + // Ignore errors on staging close (to avoid alerting) + return cb.call(this) + } cb.apply(this, arguments) }) } diff --git a/unit/models/rabbitmq.js b/unit/models/rabbitmq.js index 2abdd5e8f..2ef64eb3a 100644 --- a/unit/models/rabbitmq.js +++ b/unit/models/rabbitmq.js @@ -36,7 +36,46 @@ describe('RabbitMQ Model: ' + moduleName, function () { it('should just callback if the rabbitmq is not started', function (done) { ctx.rabbitMQ.close(done) }) - }) + + describe('on error', function () { + var closeError = new Error('error on close') + + beforeEach(function (done) { + ctx.rabbitMQ.hermesClient = { close: noop } + sinon.stub(ctx.rabbitMQ.hermesClient, 'close').yieldsAsync(closeError) + done() + }) + + it('should pass errors to the callback', function (done) { + ctx.rabbitMQ.close(function (err) { + expect(err).to.equal(closeError) + done() + }) + }) + + describe('in staging', function () { + var originalNodeEnv + + beforeEach(function (done) { + originalNodeEnv = process.env.NODE_ENV + process.env.NODE_ENV = 'staging' + done() + }) + + afterEach(function (done) { + process.env.NODE_ENV = originalNodeEnv + done() + }) + + it('should not pass errors to the callback', function (done) { + ctx.rabbitMQ.close(function (err) { + expect(err).to.not.exist() + done() + }) + }) + }) // end 'in staging' + }) // end 'on error' + }) // end 'close' describe('unloadWorkers', function () { it('should just callback if the rabbitmq is not started', function (done) { From e14bedb6bc67213395c5099b99c8dbb6bfefb980 Mon Sep 17 00:00:00 2001 From: Ryan Sandor Richards Date: Tue, 2 Feb 2016 14:22:55 -0800 Subject: [PATCH 2/2] Fixed callback execution. --- lib/models/rabbitmq/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/models/rabbitmq/index.js b/lib/models/rabbitmq/index.js index b12df3c41..5c9d53716 100644 --- a/lib/models/rabbitmq/index.js +++ b/lib/models/rabbitmq/index.js @@ -178,7 +178,7 @@ RabbitMQ.prototype.close = function (cb) { log.trace('RabbitMQ.prototype.close complete') if (process.env.NODE_ENV === 'staging') { // Ignore errors on staging close (to avoid alerting) - return cb.call(this) + return cb() } cb.apply(this, arguments) })