diff --git a/src/main/java/org/codelibs/fess/es/config/exbhv/ScheduledJobBhv.java b/src/main/java/org/codelibs/fess/es/config/exbhv/ScheduledJobBhv.java index 5e4f41562..7e2a8639a 100644 --- a/src/main/java/org/codelibs/fess/es/config/exbhv/ScheduledJobBhv.java +++ b/src/main/java/org/codelibs/fess/es/config/exbhv/ScheduledJobBhv.java @@ -17,13 +17,21 @@ package org.codelibs.fess.es.config.exbhv; import java.util.regex.Pattern; +import org.apache.commons.lang3.RandomUtils; import org.codelibs.fess.es.config.bsbhv.BsScheduledJobBhv; +import org.codelibs.fess.es.config.exentity.ScheduledJob; import org.codelibs.fess.util.ComponentUtil; +import org.dbflute.optional.OptionalEntity; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @author FreeGen */ public class ScheduledJobBhv extends BsScheduledJobBhv { + + private static final Logger logger = LoggerFactory.getLogger(ScheduledJobBhv.class); + private String indexName = null; @Override @@ -34,4 +42,26 @@ public class ScheduledJobBhv extends BsScheduledJobBhv { } return indexName; } + + @Override + public OptionalEntity selectByPK(final String id) { + Exception lastException = null; + for (int i = 0; i < 30; i++) { + try { + return super.selectByPK(id); + } catch (Exception e) { + if (logger.isDebugEnabled()) { + logger.debug("Failed to select a job by " + id, e); + } + lastException = e; + try { + Thread.sleep(RandomUtils.nextLong(500, 5000)); + } catch (InterruptedException e1) { + // ignore + } + } + } + logger.warn("Failed to select a job by " + id, lastException); + return OptionalEntity.empty(); + } } diff --git a/src/main/java/org/codelibs/fess/helper/JobHelper.java b/src/main/java/org/codelibs/fess/helper/JobHelper.java index 1662b95b0..7258528a4 100644 --- a/src/main/java/org/codelibs/fess/helper/JobHelper.java +++ b/src/main/java/org/codelibs/fess/helper/JobHelper.java @@ -27,7 +27,6 @@ import org.codelibs.fess.es.config.exbhv.JobLogBhv; import org.codelibs.fess.es.config.exbhv.ScheduledJobBhv; import org.codelibs.fess.es.config.exentity.JobLog; import org.codelibs.fess.es.config.exentity.ScheduledJob; -import org.codelibs.fess.exception.JobNotFoundException; import org.codelibs.fess.job.ScheduledJobException; import org.codelibs.fess.mylasta.direction.FessConfig; import org.codelibs.fess.util.ComponentUtil; @@ -71,8 +70,10 @@ public class JobHelper { final CronParamsSupplier paramsOp = () -> { final Map params = new HashMap<>(); - params.put(Constants.SCHEDULED_JOB, ComponentUtil.getComponent(ScheduledJobBhv.class).selectByPK(scheduledJob.getId()) - .orElseThrow(() -> new JobNotFoundException(scheduledJob))); + ComponentUtil.getComponent(ScheduledJobBhv.class).selectByPK(scheduledJob.getId()) + .ifPresent(e -> params.put(Constants.SCHEDULED_JOB, e)).orElse(() -> { + logger.warn("Job " + scheduledJob.getId() + " is not found."); + }); return params; }; findJobByUniqueOf(LaJobUnique.of(id)).ifPresent(job -> {