diff --git a/openmetadata-service/src/main/java/org/openmetadata/service/apps/scheduler/AppScheduler.java b/openmetadata-service/src/main/java/org/openmetadata/service/apps/scheduler/AppScheduler.java index c9db40ee835d..50c1fee40983 100644 --- a/openmetadata-service/src/main/java/org/openmetadata/service/apps/scheduler/AppScheduler.java +++ b/openmetadata-service/src/main/java/org/openmetadata/service/apps/scheduler/AppScheduler.java @@ -12,6 +12,9 @@ import java.util.List; import java.util.Map; import java.util.Properties; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.openmetadata.common.utils.CommonUtil; @@ -94,12 +97,17 @@ private AppScheduler( .getListenerManager() .addJobListener(new OmAppJobListener(dao), jobGroupEquals(APPS_JOB_GROUP)); - this.resetErrorTriggers(); + ScheduledExecutorService threadScheduler = Executors.newScheduledThreadPool(1); + threadScheduler.scheduleAtFixedRate(this::resetErrorTriggers, 0, 24, TimeUnit.HOURS); // Start Scheduler this.scheduler.start(); } + /* Quartz triggers can go into an "ERROR" state in some cases. Most notably when the jobs + constructor throws an error. I do not know why this happens and the issues seem to be transient. + This method resets all triggers in the ERROR state to the normal state. + */ private void resetErrorTriggers() { try { scheduler