Merge pull request #2164 from johan13/mem-leak

Refactor pg-pool to avoid potential memory leak
This commit is contained in:
Brian C 2020-04-21 17:10:50 -05:00 committed by GitHub
commit 0729130c57
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -252,16 +252,7 @@ class Pool extends EventEmitter {
this.emit('acquire', client)
let released = false
client.release = (err) => {
if (released) {
throwOnDoubleRelease()
}
released = true
this._release(client, idleListener, err)
}
client.release = this._releaseOnce(client, idleListener)
client.removeListener('error', idleListener)
@ -287,6 +278,20 @@ class Pool extends EventEmitter {
}
}
// returns a function that wraps _release and throws if called more than once
_releaseOnce(client, idleListener) {
let released = false
return (err) => {
if (released) {
throwOnDoubleRelease()
}
released = true
this._release(client, idleListener, err)
}
}
// release a client back to the poll, include an error
// to remove it from the pool
_release(client, idleListener, err) {