Reset the failure flag in workers on successful runs. #76
@ -1,9 +1,6 @@
|
|||||||
package se.su.dsv.scipro.workerthreads;
|
package se.su.dsv.scipro.workerthreads;
|
||||||
|
|
||||||
import jakarta.inject.Inject;
|
import jakarta.inject.Inject;
|
||||||
import jakarta.inject.Provider;
|
|
||||||
import jakarta.persistence.EntityManager;
|
|
||||||
import jakarta.persistence.EntityTransaction;
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@ -58,6 +55,22 @@ public abstract class AbstractWorker implements Worker {
|
|||||||
* Do manually transaction-handled work
|
* Do manually transaction-handled work
|
||||||
*/
|
*/
|
||||||
try {
|
try {
|
||||||
|
// 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.
|
||||||
|
//
|
||||||
|
// TODO:
|
||||||
|
// In the future this flag should be removed and any execution that does
|
||||||
|
// not throw an exception should be considered successful.
|
||||||
|
// If a worker needs to signal a non-exception as a failure that should
|
||||||
|
// be an internal matter and not something the scheduler should consider.
|
||||||
|
setSuccessfulWorker(true);
|
||||||
|
|
||||||
doWork();
|
doWork();
|
||||||
} catch (RuntimeException ex) {
|
} catch (RuntimeException ex) {
|
||||||
LOGGER.info("Worker {} threw an exception", getClass().getSimpleName());
|
LOGGER.info("Worker {} threw an exception", getClass().getSimpleName());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user