summaryrefslogtreecommitdiff
path: root/openerp/sql_db.py
diff options
context:
space:
mode:
authorRaphael Collet <rco@openerp.com>2016-01-15 11:53:15 +0100
committerRaphael Collet <rco@openerp.com>2016-01-15 17:04:45 +0100
commitc4494b9868621c0bf8c6ac683bf7faab2f3b6f74 (patch)
tree1e98190e8cd656685746a1c404448b88738f2d82 /openerp/sql_db.py
parent8c3eb91e57c549db5dd0f86a213129d6d69b8ca8 (diff)
[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...
Diffstat (limited to 'openerp/sql_db.py')
-rw-r--r--openerp/sql_db.py5
1 files 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):