diff --git a/lib/index.js b/lib/index.js index b78e4caa9..02b89905a 100644 --- a/lib/index.js +++ b/lib/index.js @@ -21,18 +21,22 @@ PG.prototype.end = function() { var self = this; var keys = Object.keys(self.pools.all); var count = keys.length; - keys.forEach(function(key) { - var pool = self.pools.all[key]; - delete self.pools.all[key]; - pool.drain(function() { - pool.destroyAllNow(function() { - count--; - if(count === 0) { - self.emit('end'); - } + if(count === 0) { + self.emit('end'); + } else { + keys.forEach(function(key) { + var pool = self.pools.all[key]; + delete self.pools.all[key]; + pool.drain(function() { + pool.destroyAllNow(function() { + count--; + if(count === 0) { + self.emit('end'); + } + }); }); }); - }); + } }; diff --git a/test/integration/connection-pool/ending-empty-pool-tests.js b/test/integration/connection-pool/ending-empty-pool-tests.js new file mode 100644 index 000000000..4f5dd80ad --- /dev/null +++ b/test/integration/connection-pool/ending-empty-pool-tests.js @@ -0,0 +1,15 @@ +var helper = require(__dirname + '/test-helper') + +var called = false; +test('disconnects', function() { + called = true; + var eventSink = new helper.Sink(1, function() {}); + helper.pg.on('end', function() { + eventSink.add(); + }); + + //this should exit the process + helper.pg.end(); +}) + +