Details
-
Improvement
-
Resolution: Won't Do
-
Major
-
None
-
None
Description
This is perhaps a topic that needs discussions before implementation. Here's a couple of examples. Let's say I have 3 configured jobs.
- configured to run every 5 minutes.
- configured to run once a day at 4pm.
- one-shot, set to run on Jan 15 at 3pm.
Now, assume my server goes down on Jan 15 at 2pm for 3 hours. It comes back up at 5pm (I know this example is highly unrealistic
)
Here's what I'd want to happen, ideally:
- Job 3 gets executed once, at startup or shortly thereafter. Ideally, it logs that it was supposed to be executed earlier.
- Job 2 gets executed at startup or shortly thereafter. Ideally, it logs that it was supposed to be executed earlier. The following days, it falls back into it's regular 4pm schedule.
- Job 1 gets executed again, starting at 5pm, then 5.05, 5.10, etc. This already works.
- Since it's such a short-repeat job, I wouldn't want it to be execute 36 times to compensate for the 3 hours down time.
I guess what I'm getting at is we'd need
- a mechanism that would ensure jobs gets executed even if their scheduled time has passed. I think what we have today is a warning that "this job will never be executed", when restarting the server.
- a way to enable/disable the above behavior, because it is not always desirable (cfr example 1)
If I recall correctly, Quartz has an API to store job states - but our current implementation uses an in-memory implementation.
Checklists
Acceptance criteria