This is an automated email from the ASF dual-hosted git repository. nmalin pushed a commit to branch release17.12 in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git
The following commit(s) were added to refs/heads/release17.12 by this push: new 7c8fc08 Fixed: Crashed Scheduled jobs are not getting rescheduled with temporal expression (OFBIZ-11340) 7c8fc08 is described below commit 7c8fc080f30085b75d4b1ea783fc5b537124508e Author: Nicolas Malin <nicolas.ma...@nereide.fr> AuthorDate: Thu Feb 6 17:02:12 2020 +0100 Fixed: Crashed Scheduled jobs are not getting rescheduled with temporal expression (OFBIZ-11340) When a OFBiz server are stopped or crashed with job on queued state, at the start, they are restarted but without information on tempExprId and recurrenceInfoId This causes a break for recurrence jobs to their planning Thanks to Mohammed Rehan Khan for this issue and Scott Gray for the review. --- .../main/java/org/apache/ofbiz/service/job/JobManager.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/framework/service/src/main/java/org/apache/ofbiz/service/job/JobManager.java b/framework/service/src/main/java/org/apache/ofbiz/service/job/JobManager.java index b3aadbf..1c6dff4 100644 --- a/framework/service/src/main/java/org/apache/ofbiz/service/job/JobManager.java +++ b/framework/service/src/main/java/org/apache/ofbiz/service/job/JobManager.java @@ -325,9 +325,16 @@ public final class JobManager { newJob.set("parentJobId", pJobId); newJob.set("startDateTime", null); newJob.set("runByInstanceId", null); - //don't set a recurrent schedule on the new job, run it just one time - newJob.set("tempExprId", null); - newJob.set("recurrenceInfoId", null); + + // if Queued Job is crashed then its corresponding new Job should have TempExprId and recurrenceInfoId to continue further scheduling. + if ("SERVICE_QUEUED".equals(job.getString("statusId"))) { + newJob.set("tempExprId", job.getString("tempExprId")); + newJob.set("recurrenceInfoId", job.getString("recurrenceInfoId")); + } else { + //don't set a recurrent schedule on the new job, run it just one time + newJob.set("tempExprId", null); + newJob.set("recurrenceInfoId", null); + } delegator.createSetNextSeqId(newJob); // set the cancel time on the old job to the same as the re-schedule time job.set("statusId", "SERVICE_CRASHED");