From c96cb6d41acab707db0a330800962cd0de456e95 Mon Sep 17 00:00:00 2001 From: leqiuhong Date: Wed, 17 Jul 2024 01:12:03 +0800 Subject: [PATCH] fix(job-thread): add synchronized block to avoid repeat trigger job Add synchronized block around triggerLogIdSet check and addition to ensure thread-safety and prevent repeated job triggers. This update modifies the JobThread class to handle concurrent access to triggerLogIdSet properly. --- .../java/com/xxl/job/core/thread/JobThread.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/xxl-job-core/src/main/java/com/xxl/job/core/thread/JobThread.java b/xxl-job-core/src/main/java/com/xxl/job/core/thread/JobThread.java index cf07a55a8f..68aaa5b114 100644 --- a/xxl-job-core/src/main/java/com/xxl/job/core/thread/JobThread.java +++ b/xxl-job-core/src/main/java/com/xxl/job/core/thread/JobThread.java @@ -59,13 +59,14 @@ public IJobHandler getHandler() { * @return */ public ReturnT pushTriggerQueue(TriggerParam triggerParam) { - // avoid repeat - if (triggerLogIdSet.contains(triggerParam.getLogId())) { - logger.info(">>>>>>>>>>> repeate trigger job, logId:{}", triggerParam.getLogId()); - return new ReturnT(ReturnT.FAIL_CODE, "repeate trigger job, logId:" + triggerParam.getLogId()); + // avoid repeat + synchronized (this){ + if (triggerLogIdSet.contains(triggerParam.getLogId())) { + logger.info(">>>>>>>>>>> repeate trigger job, logId:{}", triggerParam.getLogId()); + return new ReturnT(ReturnT.FAIL_CODE, "repeate trigger job, logId:" + triggerParam.getLogId()); + } + triggerLogIdSet.add(triggerParam.getLogId()); } - - triggerLogIdSet.add(triggerParam.getLogId()); triggerQueue.add(triggerParam); return ReturnT.SUCCESS; }