From 7ccaeb924e86037cd7636a3d44cf86504e4daec7 Mon Sep 17 00:00:00 2001 From: Drew DeVault Date: Mon, 17 May 2021 08:18:48 -0400 Subject: [PATCH] database: panic on errors from Commit/Rollback The previous change would eat the error from fn(tx); in truth we should ensure that it is returned to the caller. This panics instead if an error occurs during Commit or Rollback. I'm not sure of what scenarios would cause this to occur, but they all probably deserve further investigation - a panic will raise it to our attention. --- database/middleware.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/database/middleware.go b/database/middleware.go index 3988bb312d78d149f7335ada796a7d4ebf375841..0bdc7de93209cbb6a1beb6e2cf42238a79e4e851 100644 --- a/database/middleware.go +++ b/database/middleware.go @@ -61,12 +61,15 @@ func WithTx(ctx context.Context, opts *sql.TxOptions, fn func(tx *sql.Tx) error) }() err = fn(tx) if err != nil { - err = tx.Rollback() + err := tx.Rollback() + if err != nil && err != sql.ErrTxDone { + panic(err) + } } else { - err = tx.Commit() - } - if err == sql.ErrTxDone { - err = nil + err := tx.Commit() + if err != nil && err != sql.ErrTxDone { + panic(err) + } } return err }