check / check (push) Waiting to run
Once the run's context is cancelled, database/sql rolls an open transaction back itself, so the rollback in WithTx returned sql.ErrTxDone. WithTx treated any rollback error as fatal and called os.Exit(1): an interrupted backup printed "FATAL: failed to rollback transaction", exited 1 instead of 130 and skipped its deferred cleanup. WithTx now ignores sql.ErrTxDone from the rollback and returns the body's error alone. A rollback that really fails is returned together with the body's error instead of ending the process; on a panic it is dropped and the panic carries on. The cancel test checks that the returned error carries no sql.ErrTxDone; the other tests make the rollback really fail by running ROLLBACK inside the body. Model: opus-5-5