diff options
| author | Robot Odoo <xmo+roboto@odoo.com> | 2018-11-23 16:04:32 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-11-23 16:04:32 +0100 |
| commit | cd2637cfdf0ec2c5dc2fa2b74b29fdffac822e87 (patch) | |
| tree | e26966ed9e8d8b75a05b86870b9a8c6515a5f871 | |
| parent | 904989215212160741d54062d57ea9d0bb0f3b46 (diff) | |
| parent | c96d4cdbadf8d15abcad19e8f5839b46bb025e04 (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.py | 2 | ||||
| -rw-r--r-- | odoo/addons/base/models/ir_config_parameter.py | 3 | ||||
| -rw-r--r-- | odoo/models.py | 3 | ||||
| -rw-r--r-- | odoo/modules/loading.py | 5 |
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): |
