This is an automated email from the ASF dual-hosted git repository.
nmalin pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git
The following commit(s) were added to refs/heads/trunk by this push:
new 47e689b Fixed: Crashed Scheduled jobs are not getting rescheduled
with temporal expression (OFBIZ-11340)
47e689b is described below
commit 47e689b360f370bba4f512c314879711aee3d96d
Author: Nicolas Malin <[email protected]>
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 955ed16..c9173aa 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
@@ -328,9 +328,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");