diff --git a/lib/utils.js b/lib/utils.js index 741968412..022f3ff53 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -19,17 +19,25 @@ function isRedisReady(client) { resolve(); } else { function handleReady() { + client.removeListener('end', handleEnd); client.removeListener('error', handleError); resolve(); } + let lastError; function handleError(err) { + lastError = err; + } + + function handleEnd() { client.removeListener('ready', handleReady); - reject(err); + client.removeListener('error', handleError); + reject(lastError); } client.once('ready', handleReady); - client.once('error', handleError); + client.on('error', handleError); + client.once('end', handleEnd); } }); } diff --git a/test/test_connection.js b/test/test_connection.js index a01afc6e6..f0c9d9d6f 100644 --- a/test/test_connection.js +++ b/test/test_connection.js @@ -123,11 +123,12 @@ describe('connection', () => { }); }); - it('should fail if redis connection fails', done => { + it('should fail if redis connection fails and does not reconnect', done => { queue = utils.buildQueue('connection fail', { redis: { host: 'localhost', - port: 1234 + port: 1234, + retryStrategy: () => false } }); diff --git a/test/test_queue.js b/test/test_queue.js index b8f8b66ba..77513ac18 100644 --- a/test/test_queue.js +++ b/test/test_queue.js @@ -137,7 +137,7 @@ describe('Queue', () => { it('should create a queue with a redis connection string', () => { const queue = new Queue('connstring', 'redis://123.4.5.67:1234/2', { - redis: { connectTimeout: 1000 } + redis: { connectTimeout: 1000, retryStrategy: () => false } }); expect(queue.client.options.host).to.be.eql('123.4.5.67'); @@ -154,7 +154,7 @@ describe('Queue', () => { it('should create a queue with only a hostname', () => { const queue = new Queue('connstring', 'redis://127.2.3.4', { - redis: { connectTimeout: 1000 } + redis: { connectTimeout: 1000, retryStrategy: () => false } }); expect(queue.client.options.host).to.be.eql('127.2.3.4');