@@ -78,11 +78,19 @@ func Transaction(executor Executor, txFunc func(tx Executor) error) error {
switch e := executor.(type) {
case *operations.Operations:
tx := e.BeginTransaction()
+
+ defer func() {
+ if r := recover(); r != nil {
+ tx.RollbackTransaction()
+ }
+ }()
err := txFunc(tx)
if err != nil {
tx.RollbackTransaction()
return err
}
tx.CommitTransaction()
default:
return nil