lpsmith / postgresql-simple

Mid-level client library for accessing PostgreSQL from Haskell
Other
206 stars 71 forks source link

Fix spurious aborts when retrying transactions #279

Open ali-abrar opened 2 years ago

ali-abrar commented 2 years ago

Transactions that enter an error state must be aborted manually by issuing a "ROLLBACK". However, if the transaction error happened during a "COMMIT" then the rollback happens automatically. Issuing a "ROLLBACK" at this point causes PostgreSQL to issue a "WARNING: There is no transaction in progress". This warning can have much worse causes (e.g. you "COMMIT" but never began a transaction). This change makes the transaction retrying logic never cause PostgreSQL to issue this warning making it a more useful warning for detecting real bugs.