Only call destroy on a client when it is not already being destroyed
Adds a check in the error listener on the client in the pool, to prevent calling destroy on a client when it is already being destroyed. Without this check, if an error occurs during the ending of the stream, such as a timeout, the client is never removed from the pool and weird things happen.
This commit is contained in:
parent
ac0d1c71c2
commit
1c17177369
@ -30,7 +30,13 @@ var pools = {
|
|||||||
//via the pg object and then removing errored client from the pool
|
//via the pg object and then removing errored client from the pool
|
||||||
client.on('error', function(e) {
|
client.on('error', function(e) {
|
||||||
pool.emit('error', e, client);
|
pool.emit('error', e, client);
|
||||||
pool.destroy(client);
|
|
||||||
|
// If the client is already being destroyed, the error
|
||||||
|
// occurred during stream ending. Do not attempt to destroy
|
||||||
|
// the client again.
|
||||||
|
if (!client._destroying) {
|
||||||
|
pool.destroy(client);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Remove connection from pool on disconnect
|
// Remove connection from pool on disconnect
|
||||||
|
Loading…
Reference in New Issue
Block a user