details:   https://code.tryton.org/tryton/commit/6166d6ed42c9
branch:    default
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
diffstat:

 trytond/trytond/ir/cron.py |  8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diffs (25 lines):

diff -r b2a710926326 -r 6166d6ed42c9 trytond/trytond/ir/cron.py
--- a/trytond/trytond/ir/cron.py        Wed Sep 09 12:25:27 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
 
@@ -136,7 +136,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()

Reply via email to