You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by nm...@apache.org on 2020/02/06 16:16:28 UTC

[ofbiz-framework] branch trunk updated: Fixed: Crashed Scheduled jobs are not getting rescheduled with temporal expression (OFBIZ-11340)

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 <ni...@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 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");