Skip to content
Browse files

[FIX] Don't commit after fetching a translation


When trying the translate a sql_contraint message after an integrity error
we use the current cursor in a 'with', just to make a SELECT query.

That way, the cursor is commited at the end of the with statement, trying
to commit the inconsitent state of the cursor that was the reason of the
integrity error.

Just close the cursor, as we only fetch translations from the database.
  • Loading branch information...
tivisse committed Sep 5, 2019
1 parent 81ab068 commit 9a0f650b33cd0111ef81844426f817cf8ab6c4c0
Showing with 2 additions and 1 deletion.
  1. +2 −1 odoo/service/
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-

from contextlib import closing
from functools import wraps
import logging
from psycopg2 import IntegrityError, OperationalError, errorcodes
@@ -73,7 +74,7 @@ def tr(src, ttype):

# We open a *new* cursor here, one reason is that failed SQL
# queries (as in IntegrityError) will invalidate the current one.
with odoo.sql_db.db_connect(dbname).cursor() as cr:
with closing(odoo.sql_db.db_connect(dbname).cursor()) as cr:
if ttype == 'sql_constraint':
res = translate_sql_constraint(cr, key=key, lang=lang)

0 comments on commit 9a0f650

Please sign in to comment.
You can’t perform that action at this time.