From b59318ec12a1ce4e59de6d7bcde7146545b6c044 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Wed, 3 May 2017 11:43:05 +0200 Subject: [REF] registry: always perform registry/cache signaling at the end of request Problem: the update of custom models/fields is not fully transactional, and may potentially lead to an inconsistent database. An other problem is creating two custom fields by writing on a model: if the second one fails, the first one has been committed without notice. Retrying the request will give an unexpected error (duplicate field name). Solution: never commit in the middle of a request. If the changes have an impact on the registry, then mark it as invalid (with a new flag), and signal registry invalidation after everything has been committed. If the request fails, reset the registry. Both registry and cache invalidation are handled the same way. --- odoo/tools/sql.py | 1 - 1 file changed, 1 deletion(-) (limited to 'odoo/tools/sql.py') diff --git a/odoo/tools/sql.py b/odoo/tools/sql.py index c4e9a143a8e..563ed08c679 100644 --- a/odoo/tools/sql.py +++ b/odoo/tools/sql.py @@ -189,7 +189,6 @@ def drop_index(cr, indexname, tablename): def drop_view_if_exists(cr, viewname): cr.execute("DROP view IF EXISTS %s CASCADE" % (viewname,)) - cr.commit() def escape_psql(to_escape): return to_escape.replace('\\', r'\\').replace('%', '\%').replace('_', '\_') -- cgit v1.2.3