From: Ants Aasma Date: Sun, 20 Jan 2008 04:31:53 +0000 (+0000) Subject: fix rollback behavior with transaction context manager and failed two phase transactions X-Git-Tag: rel_0_4_3~92 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e15f6c7327588bc11bb73ba1535ecf8e88791e02;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git fix rollback behavior with transaction context manager and failed two phase transactions --- diff --git a/lib/sqlalchemy/orm/session.py b/lib/sqlalchemy/orm/session.py index f32ec25ec2..03471df341 100644 --- a/lib/sqlalchemy/orm/session.py +++ b/lib/sqlalchemy/orm/session.py @@ -238,11 +238,7 @@ class SessionTransaction(object): for t in util.Set(self._connections.values()): t[1].prepare() except: - for t in util.Set(self._connections.values()): - try: - t[1].rollback() - except: - pass + self.rollback() raise self._deactivate() @@ -310,7 +306,11 @@ class SessionTransaction(object): if self.session.transaction is None: return if type is None: - self.commit() + try: + self.commit() + except: + self.rollback() + raise else: self.rollback()