From 469d69f8f3112184ea326e766ef749c647d5e8f6 Mon Sep 17 00:00:00 2001 From: xuxueli <931591021@qq.com> Date: Sun, 29 Mar 2026 18:09:51 +0800 Subject: [PATCH] =?UTF-8?q?fix(scheduler):=20=E4=BF=AE=E5=A4=8D=E5=9B=BA?= =?UTF-8?q?=E5=AE=9A=E9=A2=91=E7=8E=87=E8=B0=83=E5=BA=A6=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E9=97=B4=E8=AE=A1=E7=AE=97=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改了时间计算方式,使用 fromTime 而不是 triggerLastTime 作为基准 - 添加了秒级时间校准逻辑,确保时间精确到秒 - 移除了原有的条件判断分支,简化了时间计算流程 - 修复了时间戳毫秒部分不为0时的处理逻辑 --- .../type/strategy/FixRateScheduleType.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/scheduler/type/strategy/FixRateScheduleType.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/scheduler/type/strategy/FixRateScheduleType.java index c94001ae..298ab7d1 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/scheduler/type/strategy/FixRateScheduleType.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/scheduler/type/strategy/FixRateScheduleType.java @@ -10,16 +10,17 @@ public class FixRateScheduleType extends ScheduleType { @Override public Date generateNextTriggerTime(XxlJobInfo jobInfo, Date fromTime) throws Exception { + // generate next trigger time, fix rate delay - Date nextTriggerTime = new Date(jobInfo.getTriggerLastTime() + Long.parseLong(jobInfo.getScheduleConf()) * 1000L); - if (nextTriggerTime.after(fromTime)) { - // fix rate delay, after last-trigger-time - return nextTriggerTime; - } else { - // fix rate delay, after fromTime (clear ms, second +1) - fromTime = DateTool.setMilliseconds(DateTool.addSeconds(fromTime, 1), 0); - return new Date(fromTime.getTime() + Long.parseLong(jobInfo.getScheduleConf()) * 1000L); + Date nextTriggerTime = new Date(fromTime.getTime() + Long.parseLong(jobInfo.getScheduleConf()) * 1000L); + + // assign second: + if (nextTriggerTime.getTime() % 1000 != 0) { + nextTriggerTime = DateTool.addSeconds(DateTool.setMilliseconds(nextTriggerTime, 0), 1); } + + return nextTriggerTime; + } }