From 34d2142686db4df4b5d1bd4fbf9271a9699c7c6a Mon Sep 17 00:00:00 2001 From: engigu Date: Thu, 9 Apr 2026 21:31:51 +0800 Subject: [PATCH] fix: reload cron not schedule #76 --- internal/executor/cron.go | 7 +++++++ internal/services/tasks/executor_service.go | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/internal/executor/cron.go b/internal/executor/cron.go index dec2f78..7807515 100644 --- a/internal/executor/cron.go +++ b/internal/executor/cron.go @@ -50,6 +50,13 @@ func (m *CronManager) SetLogger(logger SchedulerLogger) { m.logger = logger } +// SetScheduler 更新关联的调度器实例 +func (m *CronManager) SetScheduler(scheduler *Scheduler) { + m.mu.Lock() + defer m.mu.Unlock() + m.scheduler = scheduler +} + // Start 启动调度器 func (m *CronManager) Start() { m.cron.Start() diff --git a/internal/services/tasks/executor_service.go b/internal/services/tasks/executor_service.go index 85860aa..6095f29 100644 --- a/internal/services/tasks/executor_service.go +++ b/internal/services/tasks/executor_service.go @@ -566,6 +566,11 @@ func (es *ExecutorService) Reload() { // 从设置中读取新配置 es.initScheduler() + + // 重要:更新计划任务管理器中的调度器引用,确保后续触发的任务进入新队列 + if es.cronManager != nil { + es.cronManager.SetScheduler(es.scheduler) + } } // ExecuteTask executes a task by ID(同步执行,供 API 调用)