Hi Deepak,

IMO the best general solution is to not run OFBiz or the database
configured with a timezone that observes DST, instead use UTC or similar.
This achieves the same result but without needing any extra fields.

I'm not objecting to your solution, just sharing this tip out loud since
the JobSandbox is only one of many places that can have trouble with
ambiguous DST date/times and it is very difficult to change timezone at the
db level once it's filled with production data.

Regards
Scott

On Mon, 30 Oct 2023 at 13:05, Deepak Dixit <dee...@apache.org> wrote:

> The issue occurs when DST changes, and OFBiz fails to schedule recurring
> jobs properly.
> This is due to a condition in the PersistedServiceJob.createRecurrence
> method where it compares the next scheduled time (next) with the start time
> (startTime) for the job.
>
>
> *Proposed Solution:*To address the issue, adding a new field named
> JobSandbox.runTimeEpoch. This field would store the UTC epoch milliseconds
> of the runtime date.
> When scheduling or rescheduling recurring jobs, the system would use the
> UTC epoch stored in JobSandbox.runTimeEpoch for recurring job comparison.
>
> This solution ensures that the system uses a consistent, UTC-based time for
> scheduling and rescheduling recurring jobs, even when DST changes affect
> the local time.
>
> To implement this solution, we need to do following things:
>
> - Modify the PersistedServiceJob.createRecurrence method to calculate and
> store the UTC epoch milliseconds in the JobSandbox.runTimeEpoch field.
> - Update the code responsible for polling and rescheduling jobs to use the
> JobSandbox.runTimeEpoch field when it is set. If the field is not set, It
> would fall back to getting the runtime date to filter the jobs.
>
> By using this approach, the system should be able to handle recurring job
> scheduling more reliably, especially when DST changes are involved, as it
> ensures that all time comparisons are made in a consistent UTC format.
>
>
> Thanks & Regards
> --
> Deepak Dixit
> ofbiz.apache.org
>
>
> On Tue, Oct 17, 2023 at 11:00 AM Deepak Dixit <dee...@apache.org> wrote:
>
> > Hi Dev,
> >
> > I wanted to draw your attention to an issue we've encountered with the
> > OFBiz job scheduler, particularly when it comes to handling Daylight
> Saving
> > Time (DST) changes.
> >
> > It appears that the job scheduler fails to create new recurring jobs when
> > DST ends, especially when the tempExprTypeId is set to FREQUENCY (e.g.,
> 15
> > minutes, 30 minutes).
> >
> > Upon further investigation, we've identified that the following condition
> > in PersistedServiceJob.createRecurrence might be the root of the issue:
> >
> > java
> >
> > if (next > startTime) {
> >     // ...
> >     // ...
> > }
> >
> > I'm curious to know if anyone else has encountered a similar problem or
> if
> > you have any insights to share regarding this issue.
> >
> > Thanks & Regards
> >
> > --
> > Deepak Dixit
> > ofbiz.apache.org
> >
>

Reply via email to