From 255443b8e1516d8fcd3bf06e86e44265cf082bd0 Mon Sep 17 00:00:00 2001 From: Pouzor Date: Thu, 2 Apr 2026 17:39:52 +0200 Subject: [PATCH] fix: harden scheduler startup and interval validation - Wrap shutdown() in try/except to prevent double-scheduler if teardown fails - Guard reschedule_status_checks with interval_seconds >= 10 validation --- backend/app/core/scheduler.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/backend/app/core/scheduler.py b/backend/app/core/scheduler.py index 0436e43..064db51 100644 --- a/backend/app/core/scheduler.py +++ b/backend/app/core/scheduler.py @@ -76,7 +76,10 @@ async def _run_status_checks() -> None: def start_scheduler() -> None: global scheduler if scheduler.running: - scheduler.shutdown(wait=False) + try: + scheduler.shutdown(wait=False) + except Exception as exc: + logger.warning("Failed to shut down previous scheduler instance: %s", exc) scheduler = AsyncIOScheduler() scheduler.add_job( _run_status_checks, @@ -92,6 +95,8 @@ def start_scheduler() -> None: def reschedule_status_checks(interval_seconds: int) -> None: """Update the status check interval on the running scheduler.""" + if interval_seconds < 10: + raise ValueError(f"interval_seconds must be >= 10, got {interval_seconds}") if not scheduler.running: logger.warning("Scheduler not running, skipping reschedule") return