Skip to content

Commit 2100487

Browse files
refactor(jobs): always use NOW(3) + INTERVAL for scheduled_time
Simplify by always computing scheduled_time with MySQL server time, removing the special case for delay=0. Co-Authored-By: Claude Opus 4.5 <[email protected]>
1 parent 344de9b commit 2100487

File tree

1 file changed

+3
-10
lines changed

1 file changed

+3
-10
lines changed

src/datajoint/jobs.py

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -348,8 +348,6 @@ def refresh(
348348
3. Remove stale jobs: jobs older than stale_timeout whose keys not in key_source
349349
4. Remove orphaned jobs: reserved jobs older than orphan_timeout (if specified)
350350
"""
351-
from datetime import timedelta
352-
353351
from .settings import config
354352

355353
# Ensure jobs table exists
@@ -377,21 +375,16 @@ def refresh(
377375
new_key_list = new_keys.keys()
378376

379377
if new_key_list:
380-
# Get MySQL server time for delayed scheduling (delay > 0 only)
381-
# When delay == 0, omit scheduled_time to use MySQL's CURRENT_TIMESTAMP default
382-
scheduled_time = None
383-
if delay > 0:
384-
server_now = self.connection.query("SELECT NOW()").fetchone()[0]
385-
scheduled_time = server_now + timedelta(seconds=delay)
378+
# Always use MySQL server time for scheduling (NOW(3) matches datetime(3) precision)
379+
scheduled_time = self.connection.query(f"SELECT NOW(3) + INTERVAL {delay} SECOND").fetchone()[0]
386380

387381
for key in new_key_list:
388382
job_entry = {
389383
**key,
390384
"status": "pending",
391385
"priority": priority,
386+
"scheduled_time": scheduled_time,
392387
}
393-
if scheduled_time is not None:
394-
job_entry["scheduled_time"] = scheduled_time
395388
try:
396389
self.insert1(job_entry, ignore_extra_fields=True)
397390
result["added"] += 1

0 commit comments

Comments
 (0)