details: https://code.tryton.org/tryton/commit/a0af292396c2
branch: 8.0
user: Cédric Krier <[email protected]>
date: Wed Sep 09 18:55:29 2026 +0200
description:
Execute the lock_id when computing the running values of cron
Closes #15078
(grafted from 6166d6ed42c968ad1abbb6f21af7ca2cfc1fef0d)
diffstat:
trytond/trytond/ir/cron.py | 8 ++++++--
1 files changed, 6 insertions(+), 2 deletions(-)
diffs (25 lines):
diff -r 632da87e09dd -r a0af292396c2 trytond/trytond/ir/cron.py
--- a/trytond/trytond/ir/cron.py Thu Sep 24 09:27:50 2026 +0200
+++ b/trytond/trytond/ir/cron.py Wed Sep 09 18:55:29 2026 +0200
@@ -10,7 +10,7 @@
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
@@ -135,7 +135,11 @@
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()