|
|
|
Interestingly, the attached code works fine within Eclipse and has no problems. It's only on the command line that I can replicate Ritesh's report.
Weird. Pay no attention to the idiot developer :)
My proposed fix for From James' email on discussion of
*************************************************************************** With respect to updateAfterMisfire() isn't being called. The problem is that the misfire threshold of the scheduler is set to a minute or more, and the job/trigger is only paused for 30 seconds. Hence, when it is unpaused, it has not misfired, and it eagerly begins to catch up (it has three firings that rapidly catch up, per the description of the reporter). This one should be closed as "not a problem" - unless someone can actually show that if you leave the trigger paused for longer than the misfire threshold, the misfire handling isn't done correctly. The reason the patch for actually breaks it - as soon as the trigger is unpaused, it updates the next fire time to the current time, skipping a couple of the scheduled fire times, breaking the semantics of the scheduler. *************************************************************************** I changed the misfireThreshold to be 10000 instead of the default 60000 as James suggests and it behaves correctly.
[ org.quartz.jobStore.misfireThreshold = 10000 ] Namely, there are not three quick triggers, and there are 6 remaining triggers (ie: 3 of the 11 are lost while it is sleeping for 30 seconds). | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Unlike Ritesh's report, calling updateAfterMisfire does not make the code work for me. Probably my reproduction is faulty.