jlinn / quartz-redis-jobstore

A Quartz Scheduler JobStore using Redis.
Apache License 2.0
136 stars 67 forks source link

Fix problem with faulty triggers in waiting_triggers #47

Open mkuenz opened 4 years ago

mkuenz commented 4 years ago

It can sometimes happen, that the job processing stops completely due to an erroneous trigger state.

When acquiring next triggers, we check for them in the "waiting_triggers" entry. We take the topmost entry and try to retrieve the actual trigger. If for some reason this trigger does not exist, we run into a NullPointerException in applyMisfire, and even worse, the trigger does not get removed from "waiting_triggers", therefore the behaviour repeats itself.

This PR introduces a check if the retrieved trigger is null, and if yes, it removes it from "waiting_triggers", from "triggers" and also deletes its trigger data map.

FYI: This behaviour is not related to #35 . There are no special characters in the keys when this happens.