Only release client once on an error. (#3)

Prevent `generic-pool` error when releasing a client with an error.

Fixes #2
This commit is contained in:
Lee Symes 2016-06-21 12:56:12 +12:00 committed by Brian C
parent e38cfe078c
commit a6f641eb2c
2 changed files with 19 additions and 7 deletions

View File

@ -60,13 +60,14 @@ Pool.prototype.connect = function (cb) {
this.log('acquire client')
client.release = function (err) {
if (err) {
this.log('release client. error:', err)
this.pool.destroy(client)
}
this.log('release client')
delete client.release
this.pool.release(client)
if (err) {
this.log('destroy client. error:', err)
this.pool.destroy(client)
} else {
this.log('release client')
this.pool.release(client)
}
}.bind(this)
if (cb) {

View File

@ -89,7 +89,18 @@ describe('pool', function () {
}))
it('recovers from all errors', co.wrap(function * () {
var pool = new Pool({ poolSize: 9 })
var pool = new Pool({
poolSize: 9,
log: function (str, level) {
// Custom logging function to ensure we are not causing errors or warnings
// inside the `generic-pool` library.
if (level === 'error' || level === 'warn') {
expect().fail('An error or warning was logged from the generic pool library.\n' +
'Level: ' + level + '\n' +
'Message: ' + str + '\n')
}
}
})
var count = 0
while (count++ < 30) {