Execute the lock_id when computing the running values of cron

Closes #15078
(grafted from 6166d6ed42c968ad1abbb6f21af7ca2cfc1fef0d)

--HG--
branch : 8.0
This commit is contained in:
Cédric Krier
2026-09-09 18:55:29 +02:00
parent f6858c6530
commit d7365902d4
+6 -2
View File
@@ -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
@@ -135,7 +135,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()