From b501ab67711e20b2246678d336becf7d113ff829 Mon Sep 17 00:00:00 2001 From: Neil Williams Date: Tue, 23 Oct 2012 11:13:27 -0700 Subject: [PATCH] tdb_sql: Protect TransactionSet against failures in rollback. --- r2/r2/lib/db/tdb_sql.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/r2/r2/lib/db/tdb_sql.py b/r2/r2/lib/db/tdb_sql.py index 3aeab0580..9ec6d9bf8 100644 --- a/r2/r2/lib/db/tdb_sql.py +++ b/r2/r2/lib/db/tdb_sql.py @@ -77,15 +77,19 @@ class TransactionSet(threading.local): def commit(self): """Commit the meta-transaction.""" - for engine in self.transacting_engines: - engine.commit() - self._clear() + try: + for engine in self.transacting_engines: + engine.commit() + finally: + self._clear() def rollback(self): """Roll back the meta-transaction.""" - for engine in self.transacting_engines: - engine.rollback() - self._clear() + try: + for engine in self.transacting_engines: + engine.rollback() + finally: + self._clear() def _clear(self): self.transacting_engines.clear()