summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/engine/base.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/engine/base.py')
-rw-r--r--lib/sqlalchemy/engine/base.py14
1 files changed, 9 insertions, 5 deletions
diff --git a/lib/sqlalchemy/engine/base.py b/lib/sqlalchemy/engine/base.py
index ff475ee3d..578bd58d7 100644
--- a/lib/sqlalchemy/engine/base.py
+++ b/lib/sqlalchemy/engine/base.py
@@ -1287,8 +1287,8 @@ class Transaction(object):
def rollback(self):
if not self._parent.is_active:
return
- self.is_active = False
self._do_rollback()
+ self.is_active = False
def _do_rollback(self):
self._parent.rollback()
@@ -1318,10 +1318,12 @@ class RootTransaction(Transaction):
self.connection._begin_impl()
def _do_rollback(self):
- self.connection._rollback_impl()
+ if self.is_active:
+ self.connection._rollback_impl()
def _do_commit(self):
- self.connection._commit_impl()
+ if self.is_active:
+ self.connection._commit_impl()
class NestedTransaction(Transaction):
@@ -1330,10 +1332,12 @@ class NestedTransaction(Transaction):
self._savepoint = self.connection._savepoint_impl()
def _do_rollback(self):
- self.connection._rollback_to_savepoint_impl(self._savepoint, self._parent)
+ if self.is_active:
+ self.connection._rollback_to_savepoint_impl(self._savepoint, self._parent)
def _do_commit(self):
- self.connection._release_savepoint_impl(self._savepoint, self._parent)
+ if self.is_active:
+ self.connection._release_savepoint_impl(self._savepoint, self._parent)
class TwoPhaseTransaction(Transaction):