summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobot Odoo <xmo+roboto@odoo.com>2018-11-23 16:04:32 +0100
committerGitHub <noreply@github.com>2018-11-23 16:04:32 +0100
commitcd2637cfdf0ec2c5dc2fa2b74b29fdffac822e87 (patch)
treee26966ed9e8d8b75a05b86870b9a8c6515a5f871
parent904989215212160741d54062d57ea9d0bb0f3b46 (diff)
parentc96d4cdbadf8d15abcad19e8f5839b46bb025e04 (diff)
[MERGE] Avoid some unnecessary ormcache invalidations
Avoid invalidating ormcache when possible. There are currently too many invalidations, which makes the ormcache less effective in practice. closes odoo/odoo#28993
-rw-r--r--addons/base_import/models/base_import.py2
-rw-r--r--odoo/addons/base/models/ir_config_parameter.py3
-rw-r--r--odoo/models.py3
-rw-r--r--odoo/modules/loading.py5
4 files changed, 6 insertions, 7 deletions
diff --git a/addons/base_import/models/base_import.py b/addons/base_import/models/base_import.py
index 35d5692e95b..4e4945fd37c 100644
--- a/addons/base_import/models/base_import.py
+++ b/addons/base_import/models/base_import.py
@@ -885,6 +885,8 @@ class Import(models.TransientModel):
try:
if dryrun:
self._cr.execute('ROLLBACK TO SAVEPOINT import')
+ # cancel all changes done to the registry/ormcache
+ self.pool.reset_changes()
else:
self._cr.execute('RELEASE SAVEPOINT import')
except psycopg2.InternalError:
diff --git a/odoo/addons/base/models/ir_config_parameter.py b/odoo/addons/base/models/ir_config_parameter.py
index eed10daadd8..b7f2356e803 100644
--- a/odoo/addons/base/models/ir_config_parameter.py
+++ b/odoo/addons/base/models/ir_config_parameter.py
@@ -83,7 +83,8 @@ class IrConfigParameter(models.Model):
if param:
old = param.value
if value is not False and value is not None:
- param.write({'value': value})
+ if str(value) != old:
+ param.write({'value': value})
else:
param.unlink()
return old
diff --git a/odoo/models.py b/odoo/models.py
index 1af6cd9c173..b2aab1d5f36 100644
--- a/odoo/models.py
+++ b/odoo/models.py
@@ -846,7 +846,6 @@ class BaseModel(MetaModel('DummyModel', (object,), {'_register': False})):
ids = []
messages = []
ModelData = self.env['ir.model.data']
- ModelData.clear_caches()
# list of (xid, vals, info) for records to be created in batch
batch = []
@@ -928,6 +927,8 @@ class BaseModel(MetaModel('DummyModel', (object,), {'_register': False})):
if any(message['type'] == 'error' for message in messages):
cr.execute('ROLLBACK TO SAVEPOINT model_load')
ids = False
+ # cancel all changes done to the registry/ormcache
+ self.pool.reset_changes()
return {'ids': ids, 'messages': messages}
diff --git a/odoo/modules/loading.py b/odoo/modules/loading.py
index bc95e1c461d..5fb56887948 100644
--- a/odoo/modules/loading.py
+++ b/odoo/modules/loading.py
@@ -151,8 +151,6 @@ def load_module_graph(cr, graph, status=None, perform_checks=True,
module_count = len(graph)
_logger.info('loading %d modules...', module_count)
- registry.clear_caches()
-
# register, instantiate and initialize models for each modules
t0 = time.time()
t0_sql = odoo.sql_db.sql_counter
@@ -278,9 +276,6 @@ def load_module_graph(cr, graph, status=None, perform_checks=True,
_logger.log(25, "%s modules loaded in %.2fs, %s queries", len(graph), time.time() - t0, odoo.sql_db.sql_counter - t0_sql)
- registry.clear_caches()
-
-
return loaded_modules, processed_modules
def _check_module_names(cr, module_names):