mirror of
https://github.com/brianc/node-postgres.git
synced 2026-01-18 15:55:05 +00:00
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:
parent
e38cfe078c
commit
a6f641eb2c
13
index.js
13
index.js
@ -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) {
|
||||
|
||||
@ -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) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user