This is an automated email from the ASF dual-hosted git repository.

mridulpathak pushed a commit to branch release24.09
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git


The following commit(s) were added to refs/heads/release24.09 by this push:
     new 2e47147695 Recurring Job Not Rescheduled After Server Restart/Crash 
(OFBIZ-13370) (#1234)
2e47147695 is described below

commit 2e47147695c20d89452139f4d33641ede27fa5a1
Author: chandan-khandelwal <[email protected]>
AuthorDate: Fri May 22 12:43:06 2026 +0530

    Recurring Job Not Rescheduled After Server Restart/Crash (OFBIZ-13370) 
(#1234)
    
    Fixed: Recurring Job Not Rescheduled After Server Restart/Crash
    (OFBIZ-13370)
    
    Modified reloadCrashedJobs to preserve tempExprId/recurrenceInfoId for
    SERVICE_RUNNING jobs if no child job exists. This ensures the recurrence
    chain is not broken after a server crash.
---
 .../main/java/org/apache/ofbiz/service/job/JobManager.java   | 12 ++++++++++++
 1 file changed, 12 insertions(+)

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 768f2d5247..585f113f98 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
@@ -364,6 +364,18 @@ public final class JobManager {
                     if ("SERVICE_QUEUED".equals(job.getString("statusId"))) {
                         newJob.set("tempExprId", job.getString("tempExprId"));
                         newJob.set("recurrenceInfoId", 
job.getString("recurrenceInfoId"));
+                    } else if 
("SERVICE_RUNNING".equals(job.getString("statusId"))) {
+                        // If the job was running, check if a future 
recurrence was already scheduled
+                        long childJobsCount = 
EntityQuery.use(delegator).from("JobSandbox")
+                                .where("parentJobId", job.getString("jobId"))
+                                .queryCount();
+                        if (childJobsCount == 0) {
+                            newJob.set("tempExprId", 
job.getString("tempExprId"));
+                            newJob.set("recurrenceInfoId", 
job.getString("recurrenceInfoId"));
+                        } else {
+                            newJob.set("tempExprId", null);
+                            newJob.set("recurrenceInfoId", null);
+                        }
                     } else {
                         //don't set a recurrent schedule on the new job, run 
it just one time
                         newJob.set("tempExprId", null);

Reply via email to