diff --git a/src/transaction.rs b/src/transaction.rs index 2b6f5ac..6e3f2f9 100644 --- a/src/transaction.rs +++ b/src/transaction.rs @@ -344,7 +344,7 @@ impl Savepoint<'_> { return Ok(()); } match self.drop_behavior() { - DropBehavior::Commit => self.commit_().or_else(|_| self.rollback()), + DropBehavior::Commit => self.commit_().or_else(|_| self.rollback().and_then(|_| self.commit_())), DropBehavior::Rollback => self.rollback().and_then(|_| self.commit_()), DropBehavior::Ignore => Ok(()), DropBehavior::Panic => panic!("Savepoint dropped unexpectedly."),