فهرست منبع

Merge pull request #3506 from oleolema/fix_push_trigger_queue

fix(job-thread): add synchronized block to avoid repeat trigger job
许雪里 2 ماه پیش
والد
کامیت
57b469bf9b
1فایلهای تغییر یافته به همراه7 افزوده شده و 6 حذف شده
  1. 7 6
      xxl-job-core/src/main/java/com/xxl/job/core/thread/JobThread.java

+ 7 - 6
xxl-job-core/src/main/java/com/xxl/job/core/thread/JobThread.java

@@ -59,13 +59,14 @@ public class JobThread extends Thread{
      * @return
      */
 	public ReturnT<String> pushTriggerQueue(TriggerParam triggerParam) {
-		// avoid repeat
-		if (triggerLogIdSet.contains(triggerParam.getLogId())) {
-			logger.info(">>>>>>>>>>> repeate trigger job, logId:{}", triggerParam.getLogId());
-			return new ReturnT<String>(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<String>(ReturnT.FAIL_CODE, "repeate trigger job, logId:" + triggerParam.getLogId());
+			}
+			triggerLogIdSet.add(triggerParam.getLogId());
 		}
-
-		triggerLogIdSet.add(triggerParam.getLogId());
 		triggerQueue.add(triggerParam);
         return ReturnT.ofSuccess();
 	}