From 79cdce9dda74bd690b3eb978890fe0c0a1b30c83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 9 Sep 2026 18:55:29 +0200 Subject: [PATCH] Execute the lock_id when computing the running values of cron Closes #15078 --- trytond/trytond/ir/cron.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/trytond/trytond/ir/cron.py b/trytond/trytond/ir/cron.py index e2de08839b..ba05092a8d 100644 --- a/trytond/trytond/ir/cron.py +++ b/trytond/trytond/ir/cron.py @@ -10,7 +10,7 @@ from collections import defaultdict from itertools import groupby from dateutil.relativedelta import relativedelta -from sql import Literal +from sql import Literal, Select from sql.conditionals import Case, Coalesce from sql.functions import CurrentTimestamp, Extract @@ -136,7 +136,11 @@ class Cron(DeactivableMixin, ModelSQL, ModelView): running = defaultdict(bool) if database.has_select_for(): # Avoid concurrent locking read - database.lock_id(str2bigint(f'{cls.__name__},running')) + cursor = transaction.connection.cursor() + cursor.execute(*Select([ + database.lock_id( + str2bigint(f'{cls.__name__},running'), + True)])) with transaction.new_transaction() as transaction: cursor = transaction.connection.cursor() For = database.get_select_for_skip_locked()