shouldReleaseBeforeCompletion
Moves the release from beforeCompletion, where this class puts it by default, to afterCompletion.
beforeCompletion runs ahead of the rollback, so on the failing path the transaction is still failed - and PostgreSQL ignores every statement until the block ends, with 25P02. The reset would raise there, and a session that cannot reset its connection gives the connection up instead: every transaction that failed on the server would cost one, measured as an eviction and a new backend on the next borrow. afterCompletion runs once the commit or rollback is through and the connection answers again, and still before Spring releases it.