From 2b41c34f68c7304a43c8dc35f71d11078a55b145 Mon Sep 17 00:00:00 2001 From: Anton Lindgren Date: Mon, 18 Dec 2017 09:58:02 +0100 Subject: [PATCH 1/3] Disconnect consumers and producers on process exits --- lib/kafka.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/kafka.js b/lib/kafka.js index d776545..d03c4ab 100644 --- a/lib/kafka.js +++ b/lib/kafka.js @@ -45,6 +45,8 @@ function createProducer(options) { producer.on('ready', () => resolve(producer)); producer.on('error', reject); + process.on('exit', () => producer.disconnect()); + producer.connect(); }); } @@ -60,7 +62,8 @@ function checkTopicExists(topic, options, callback) { consumer.connect({}, err => { if (err) { log.error(err); - log.error('Failed to check for topic existance!'); + log.error('Failed to check for topic existence!'); + consumer.disconnect(); return callback(err); } @@ -71,6 +74,8 @@ function checkTopicExists(topic, options, callback) { consumer.on('event.error', log.error.bind(null, 'checkTopicExists.event.error')); consumer.on('error', log.error.bind(null, 'checkTopicExists.error')); + process.on('exit', () => consumer.disconnect()); + consumer.on('ready', () => { log.debug({ topic }, 'checkTopicExists consumer ready'); async.retry( @@ -129,6 +134,8 @@ function stream(topic, consumerId, options, offset, callback) { consumer.on('data', callback); }); + process.on('exit', () => consumer.disconnect()); + return { endStream: () => { log.info({ topic, consumerId }, 'Ending stream'); From 4a7ea2ff99ff54c955722255826180f2f921f84a Mon Sep 17 00:00:00 2001 From: Anton Lindgren Date: Mon, 18 Dec 2017 09:58:42 +0100 Subject: [PATCH 2/3] This test is runnable now as it exits properly with the disconnect listeners --- build-contracts/docker-compose.yml | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/build-contracts/docker-compose.yml b/build-contracts/docker-compose.yml index 9ef980e..3b7315b 100644 --- a/build-contracts/docker-compose.yml +++ b/build-contracts/docker-compose.yml @@ -27,16 +27,15 @@ services: - kafka environment: TOPIC_NAME: build-contracts.basics.001 - # TODO I think this test keeps hanging due to child processes from node-rdkafka - # so to get this to work we probably need to start cleaning stuff up. - # test-basics: - # build: - # context: ../ - # dockerfile: build-contracts/basics/Dockerfile - # labels: - # - com.yolean.build-contract - # links: - # - kafka + test-basics: + build: + context: ../ + dockerfile: build-contracts/basics/Dockerfile + labels: + - com.yolean.build-contract + links: + - kafka + - zookeeper unit-tests: build: context: ../ From f34e55dd88825aecebf5952fe0ceae4fca967be5 Mon Sep 17 00:00:00 2001 From: Anton Lindgren Date: Mon, 18 Dec 2017 09:59:08 +0100 Subject: [PATCH 3/3] Raise this timeout to reduce test failures when kafka consumption is slow --- build-contracts/basics/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build-contracts/basics/index.js b/build-contracts/basics/index.js index adce0c1..067e8d1 100644 --- a/build-contracts/basics/index.js +++ b/build-contracts/basics/index.js @@ -38,7 +38,7 @@ describe('kafka-cache build-contract basics', function () { expect(value).to.deep.equal({ json: 'whadup' }); done(); }); - }, 1000); + }, 3000); }); }); });