Ver código fonte

Merge pull request #370 from lusong1986/repeatjob-repeatedcount-bug

修复Repeatjob执行完成后不能删除job(不依赖上周期)和不能更新repeatedCount(依赖上周期)的bug
醉枫 7 anos atrás
pai
commit
e5652a2820

+ 5 - 1
lts-jobtracker/src/main/java/com/github/ltsopensource/jobtracker/complete/JobFinishHandler.java

@@ -127,7 +127,11 @@ public class JobFinishHandler {
         // 如果当前完成的job是重试的,那么不要增加repeatedCount
         if (!isRetryForThisTime) {
             // 更新repeatJob的重复次数
-            appContext.getRepeatJobQueue().incRepeatedCount(jobPo.getJobId());
+            final int jobQueueRepeatedCount = appContext.getRepeatJobQueue().incRepeatedCount(jobPo.getJobId());
+            if (jobQueueRepeatedCount >= jobPo.getRepeatCount()) {
+                appContext.getRepeatJobQueue().remove(jobPo.getJobId());
+                jobRemoveLog(jobPo, "Repeat");
+            }
         }
     }
 

+ 3 - 1
lts-jobtracker/src/main/java/com/github/ltsopensource/jobtracker/complete/JobRetryHandler.java

@@ -87,7 +87,9 @@ public class JobRetryHandler {
                             nextRetryTriggerTime = nexTriggerTime;
                             jobPo = repeatJobPo;
                         } else {
-                            jobPo.setInternalExtParam(Constants.IS_RETRY_JOB, Boolean.TRUE.toString());
+                            if(jobPo.getRetryTimes() < repeatJobPo.getMaxRetryTimes()) { //最后一次重试时,这个参数不能设置,为了在finishHandler时能执行到incRepeatedCount
+                               jobPo.setInternalExtParam(Constants.IS_RETRY_JOB, Boolean.TRUE.toString());
+                            }
                         }
                     }
                 }