From c4494b9868621c0bf8c6ac683bf7faab2f3b6f74 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Fri, 15 Jan 2016 11:53:15 +0100 Subject: [PATCH] [FIX] sql_db: do not handle errors when releasing savepoint If you commit the transaction inside the context manager `cr.savepoint()`, the savepoint is lost. In that case, releasing the savepoint fails. That failure should not be handled by rolling back to the savepoint... --- openerp/sql_db.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/openerp/sql_db.py b/openerp/sql_db.py index bd60572d184..ea34aac9295 100644 --- a/openerp/sql_db.py +++ b/openerp/sql_db.py @@ -374,10 +374,11 @@ class Cursor(object): self.execute('SAVEPOINT "%s"' % name) try: yield - self.execute('RELEASE SAVEPOINT "%s"' % name) - except: + except Exception: self.execute('ROLLBACK TO SAVEPOINT "%s"' % name) raise + else: + self.execute('RELEASE SAVEPOINT "%s"' % name) @check def __getattr__(self, name):