Make pool name consistent on missing config params (#1279)

* Going red: using a config object creates two pools when missing some params

It should only create a pool in a consistent way, even if some params
are not provided in the first place.

* Delay the pool name generation to make it consistent between calls

* Don't fallback to empty object as config is already defined
This commit is contained in:
Raul Ochoa 2017-05-24 16:04:50 +02:00 committed by Brian C
parent e5f0e5d36a
commit 4cd56cc4f8
2 changed files with 14 additions and 1 deletions

View File

@ -54,7 +54,6 @@ PG.prototype.connect = function(config, callback) {
callback = config;
config = null;
}
var poolName = JSON.stringify(config || {});
if (typeof config == 'string') {
config = new ConnectionParameters(config);
}
@ -66,6 +65,7 @@ PG.prototype.connect = function(config, callback) {
config.idleTimeoutMillis = config.idleTimeoutMillis || config.poolIdleTimeout || defaults.poolIdleTimeout;
config.log = config.log || config.poolLog || defaults.poolLog;
var poolName = JSON.stringify(config);
this._pools[poolName] = this._pools[poolName] || new this.Pool(config);
var pool = this._pools[poolName];
if(!pool.listeners('error').length) {

View File

@ -0,0 +1,13 @@
var helper = require(__dirname + "/../test-helper");
var pg = require(__dirname + "/../../../lib");
pg.connect(helper.config, assert.success(function(client, done) {
assert.equal(Object.keys(pg._pools).length, 1);
pg.connect(helper.config, assert.success(function(client2, done2) {
assert.equal(Object.keys(pg._pools).length, 1);
done();
done2();
pg.end();
}));
}));