From 6313f95dedecda2c2ad572efde51745b31cdc6a3 Mon Sep 17 00:00:00 2001 From: wangguangyuan Date: Sat, 12 Sep 2026 14:22:55 +0800 Subject: [PATCH] =?UTF-8?q?fix(redis):=20=E6=8C=89=E5=88=86=E9=92=9F?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E7=9A=84=E9=97=B4=E9=9A=94=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E4=B8=8D=E5=86=8D=E7=94=9F=E6=88=90=E7=AA=97=E5=8F=A3=E5=A4=96?= =?UTF-8?q?=E7=9A=84=E7=AD=96=E7=95=A5=20key?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 上一提交(移除 KEYS 全库扫描)把"清理窗口外策略 key"的动作从"每个执行时刻一次"提到 "每个任务一次"。但按分钟执行的间隔任务,其 exeTimes 由 getExecTimesByMinute 生成到 次日 00:00,会超出任务配置的 intervalEndTime:原先每次存 key 前的清理会把窗口外的 key 删掉(除最后一次外),提取到循环外之后这些窗口外的 key 会全部留存,导致调度器在配置 窗口之外仍然执行任务。 本提交在按分钟执行的循环内补上守卫:晚于 intervalEndTime 的时刻直接跳过,既不清理也不 生成策略 key,与"只保留 finalDate 之内的策略 key"的原意保持一致(按小时执行的 exeTimes 本来就以 intervalEndTime 为界,不受影响)。 --- .../com/inspect/exec/controller/PatrolTaskExecController.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/inspect-main/inspect-main-task-exec/src/main/java/com/inspect/exec/controller/PatrolTaskExecController.java b/inspect-main/inspect-main-task-exec/src/main/java/com/inspect/exec/controller/PatrolTaskExecController.java index 6387a3d..2f85678 100644 --- a/inspect-main/inspect-main-task-exec/src/main/java/com/inspect/exec/controller/PatrolTaskExecController.java +++ b/inspect-main/inspect-main-task-exec/src/main/java/com/inspect/exec/controller/PatrolTaskExecController.java @@ -593,6 +593,10 @@ public class PatrolTaskExecController extends BaseController { // Date date = exeTimes.get(exeTimes.size() - 1); cleanTaskKeysAfter(task, task.getIntervalEndTime()); for (Date exeTime : exeTimes) { + // 晚于 intervalEndTime 的时刻不生成策略 key(保持"只保留 finalDate 之内的 key"的原意) + if (task.getIntervalEndTime() != null && exeTime.after(task.getIntervalEndTime())) { + continue; + } task.setFixedStartTime(exeTime); final String taskType = "INTER-BY-MINUTE"; parseTaskToRedis(taskType, task);