From d543f53c332a62c754b31d71cf06ccd9dbf69d65 Mon Sep 17 00:00:00 2001 From: Adrian Torres Date: Fri, 30 Jul 2021 12:49:31 +0000 Subject: [PATCH] [FIX] base: avoid recursion depth errors during uninstall For some reason _logger.info with exc_info=True inside a recursive function generates RecursionErrors, presumably because the logger uses recursion itself to generate the stack trace that is logged. A simple solution would be to remove exc_info=True, but I've decided to move the log out of the delete function and simply call it once per uninstall process with all undeletable IDs, so it's kind of a fix + optimization. closes odoo/odoo#75445 X-original-commit: 3a04de569bca10a1d1a01f719635de6842e747b2 Signed-off-by: Raphael Collet (rco) Signed-off-by: Adrian Torres (adt) Co-authored-by: Raphael Collet --- odoo/addons/base/models/ir_model.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/odoo/addons/base/models/ir_model.py b/odoo/addons/base/models/ir_model.py index 8ba2c5f4fbc..d79dc9c525e 100644 --- a/odoo/addons/base/models/ir_model.py +++ b/odoo/addons/base/models/ir_model.py @@ -2130,7 +2130,6 @@ class IrModelData(models.Model): records.unlink() except Exception: if len(records) <= 1: - _logger.info('Unable to delete %s', records, exc_info=True) undeletable_ids.extend(ref_data._ids) else: # divide the batch in two, and recursively delete them @@ -2167,6 +2166,9 @@ class IrModelData(models.Model): # remove models delete(self.env['ir.model'].browse(unique(model_ids))) + # log undeletable ids + _logger.info("ir.model.data could not be deleted (%s)", undeletable_ids) + # sort out which undeletable model data may have become deletable again because # of records being cascade-deleted or tables being dropped just above for data in self.browse(undeletable_ids).exists():