mirror of
https://github.com/brianc/node-postgres.git
synced 2026-02-01 16:47:23 +00:00
Merge pull request #2164 from johan13/mem-leak
Refactor pg-pool to avoid potential memory leak
This commit is contained in:
commit
0729130c57
@ -252,16 +252,7 @@ class Pool extends EventEmitter {
|
|||||||
|
|
||||||
this.emit('acquire', client)
|
this.emit('acquire', client)
|
||||||
|
|
||||||
let released = false
|
client.release = this._releaseOnce(client, idleListener)
|
||||||
|
|
||||||
client.release = (err) => {
|
|
||||||
if (released) {
|
|
||||||
throwOnDoubleRelease()
|
|
||||||
}
|
|
||||||
|
|
||||||
released = true
|
|
||||||
this._release(client, idleListener, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
client.removeListener('error', 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
|
// release a client back to the poll, include an error
|
||||||
// to remove it from the pool
|
// to remove it from the pool
|
||||||
_release(client, idleListener, err) {
|
_release(client, idleListener, err) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user