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);