Cancel only active query after failing transaction #431
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This avoids sending a cancel request if there is no active query running.
In case of a failing SQL statement, the transaction_status is PQTRANS_INERROR. The previous code sent a cancel request in this case although the query is known to be aborted.
In case of ruby code that raised an error, the transaction_status is PQTRANS_INTRANS. Also in this case there is no use of sending a cancel request.
The cancellation of queries in case of exceptions was introduced by #391 . Now we cancel more conservative, only in case of a running query.
The cancellation can cause issues with pgbouncer, which releases a connection after a SQL error was raised.
It then dispatched the cancel to the next SQL command. This change should solve this incompatibility.
Fixes #430