When the switch from Guice to Spring happened all workers became singletons because that's the default in Spring. In Guice they were "prototype" scoped and therefore the worker object was re-created before each execution which reset the successfulWorker field to true.
Now that they're singletons the field is never reset to true after a failure and the worker will be stuck in a failed state even after a subsequent successful run.
This is an issues primarily for the RejectedThesisWorker that relies on the timestamp of the last successful run to determine if there are any new rejections that it should handle. This is necessary because the Daisy API only allow filtering by date (and not time) and there's no other identifying information in the rejection data other than a timestamp.