Release called on client which has already been released to the pool
Opened this issue · 2 comments
kyle-apex commented
Steps to reproduce
- Use loopback-connector-postgresql 5.5.0 (5.4.0 does not exhibit this issue)
- Commit a transaction with an error (ex: unique key violation)
- Rollback the transaction
Current Behavior
Calling transaction.commit and subsequently transaction.rollback if there is a commit error results in:
The following error from pg-pool in the rollback is uncaught and crashes the server: Release called on client which has already been released to the pool
I would expect the error to be caught (perhaps in PostgreSQL.prototype.releaseConnection?) and passed along without crashing the server
kyle-apex commented
For others searching for this error, this override is getting me around this issue for now:
dataSource.connector.releaseConnection = function (connection, err) {
if (typeof connection.autorelease === 'function') {
connection.txId = null;
connection.autorelease(err);
connection.autorelease = null;
} else {
try {
connection.release();
} catch (err) {}
}
};
marciocorrrea commented