From 7314bad7b41c5f9a8ff5cd73f919dfbebb280bad Mon Sep 17 00:00:00 2001 From: Julien Castiaux Date: Wed, 27 Jul 2022 14:49:29 +0000 Subject: [PATCH] [FIX] base: mute SE in cron acquire job Commit c06cee44fe1 corrected a nasty concurrency error in crons but the serialization error was still logged. closes odoo/odoo#98741 X-original-commit: 81c70a594a785fc0e32c9ff47c28c92b0f837923 Signed-off-by: Julien Castiaux --- odoo/addons/base/models/ir_cron.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/odoo/addons/base/models/ir_cron.py b/odoo/addons/base/models/ir_cron.py index d07e86c7a71..1361aa793fd 100644 --- a/odoo/addons/base/models/ir_cron.py +++ b/odoo/addons/base/models/ir_cron.py @@ -240,7 +240,7 @@ class ir_cron(models.Model): # # Learn more: https://www.postgresql.org/docs/current/explicit-locking.html#LOCKING-ROWS - cr.execute(""" + query = """ SELECT * FROM ir_cron WHERE active = true @@ -256,7 +256,18 @@ class ir_cron(models.Model): AND id in %s ORDER BY priority LIMIT 1 FOR NO KEY UPDATE SKIP LOCKED - """, [job_ids]) + """ + try: + cr.execute(query, [job_ids], log_exceptions=False) + except psycopg2.extensions.TransactionRollbackError: + # A serialization error can occurs when anoter cron worker + # commits the new `nextcall` value of a cron it just ran and + # that commit occured just before this query. The error is + # genuine and the job should be skipped in this cron worker. + raise + except Exception as exc: + _logger.error("bad query: %s\nERROR: %s", query, exc) + raise return cr.dictfetchone() @classmethod