[IMP] core: do not log error for unmet dependencies on add_modules

When migrating a database, load_marked_modules will be called multiple times, alternating
to upgrade and to install modules. The main reason for this is still a litle confusing
but it as the side effect to log "Unmet dependencies" error multiple time in add_modules,
even if the dependency will be resolved later.

This commit removes the error level for this log, and replace it by another check,
performed at the end, logging any module in "to install"/"to upgrade" state.

Also log removed module as info (25), not warning. This may be changed latter

closes odoo/odoo#43797

X-original-commit: c5d6a3977de85fb974a4940fb11d54ef847e08e4
Signed-off-by: Xavier Dollé (xdo) <xdo@odoo.com>
This commit is contained in:
Xavier-Do
2020-01-22 17:33:32 +00:00
parent 576b26a974
commit cbab786eb2
2 changed files with 14 additions and 2 deletions
+1 -1
View File
@@ -94,7 +94,7 @@ class Graph(dict):
for package in later:
unmet_deps = [p for p in dependencies[package] if p not in self]
_logger.error('module %s: Unmet dependencies: %s', package, ', '.join(unmet_deps))
_logger.info('module %s: Unmet dependencies: %s', package, ', '.join(unmet_deps))
return len(self) - len_graph
+13 -1
View File
@@ -419,6 +419,18 @@ def load_modules(db, force_demo=False, status=None, update_module=False):
['to install'], force, status, report,
loaded_modules, update_module, models_to_check)
# check modules states
cr.execute("SELECT name from ir_module_module WHERE state IN ('to install', 'to upgrade', 'to remove')")
module_list = [name for (name,) in cr.fetchall()]
if module_list:
_logger.error("Some module have inconsistent state, some dependency may be missing: %s", module_list)
cr.execute("SELECT name from ir_module_module WHERE state = 'installed'")
module_list = [name for (name,) in cr.fetchall() if name not in graph]
if module_list:
_logger.error("Some module are not loaded, some dependency may be missing: %s", module_list)
registry.loaded = True
registry.setup_models(cr)
@@ -448,7 +460,7 @@ def load_modules(db, force_demo=False, status=None, update_module=False):
if model in registry:
env[model]._check_removed_columns(log=True)
elif _logger.isEnabledFor(logging.INFO): # more an info that a warning...
_logger.warning("Model %s is declared but cannot be loaded! (Perhaps a module was partially removed or renamed)", model)
_logger.log(25, "Model %s is declared but cannot be loaded! (Perhaps a module was partially removed or renamed)", model)
# Cleanup orphan records
env['ir.model.data']._process_end(processed_modules)