From df32ef0efb20641a228b999c625f7c3db989b97b Mon Sep 17 00:00:00 2001 From: Wenjun Ruan Date: Wed, 28 Dec 2022 14:33:38 +0800 Subject: [PATCH] Fix when update scheduler will execute workflow (#13285) --- .../api/controller/SchedulerController.java | 12 ++++++++++-- .../scheduler/quartz/QuartzScheduler.java | 10 +++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/SchedulerController.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/SchedulerController.java index b64a5d0f4f..7c555b23c1 100644 --- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/SchedulerController.java +++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/SchedulerController.java @@ -115,9 +115,17 @@ public class SchedulerController extends BaseController { @RequestParam(value = "workerGroup", required = false, defaultValue = "default") String workerGroup, @RequestParam(value = "environmentCode", required = false, defaultValue = "-1") Long environmentCode, @RequestParam(value = "processInstancePriority", required = false, defaultValue = DEFAULT_PROCESS_INSTANCE_PRIORITY) Priority processInstancePriority) { - Map result = schedulerService.insertSchedule(loginUser, projectCode, processDefinitionCode, + Map result = schedulerService.insertSchedule( + loginUser, + projectCode, + processDefinitionCode, schedule, - warningType, warningGroupId, failureStrategy, processInstancePriority, workerGroup, environmentCode); + warningType, + warningGroupId, + failureStrategy, + processInstancePriority, + workerGroup, + environmentCode); return returnDataList(result); } diff --git a/dolphinscheduler-scheduler-plugin/dolphinscheduler-scheduler-quartz/src/main/java/org/apache/dolphinscheduler/scheduler/quartz/QuartzScheduler.java b/dolphinscheduler-scheduler-plugin/dolphinscheduler-scheduler-quartz/src/main/java/org/apache/dolphinscheduler/scheduler/quartz/QuartzScheduler.java index 1b62f6c820..bf970c0491 100644 --- a/dolphinscheduler-scheduler-plugin/dolphinscheduler-scheduler-quartz/src/main/java/org/apache/dolphinscheduler/scheduler/quartz/QuartzScheduler.java +++ b/dolphinscheduler-scheduler-plugin/dolphinscheduler-scheduler-quartz/src/main/java/org/apache/dolphinscheduler/scheduler/quartz/QuartzScheduler.java @@ -77,6 +77,14 @@ public class QuartzScheduler implements SchedulerApi { */ Date startDate = DateUtils.transformTimezoneDate(schedule.getStartTime(), timezoneId); Date endDate = DateUtils.transformTimezoneDate(schedule.getEndTime(), timezoneId); + /** + * If the start time is less than the current time, the start time is set to the current time. + * We do this change to avoid misfires all triggers when update the scheduler. + */ + Date now = new Date(); + if (startDate.before(now)) { + startDate = now; + } lock.writeLock().lock(); try { @@ -109,7 +117,7 @@ public class QuartzScheduler implements SchedulerApi { .endAt(endDate) .withSchedule( cronSchedule(cronExpression) - .withMisfireHandlingInstructionFireAndProceed() + .withMisfireHandlingInstructionIgnoreMisfires() .inTimeZone(DateUtils.getTimezone(timezoneId))) .forJob(jobDetail).build();