diff --git a/src/main/java/org/olat/search/_spring/searchContext.xml b/src/main/java/org/olat/search/_spring/searchContext.xml index 947ff98cd6fdb3618ea054a63b7e56730456601a..cbaf19b06804fd4c3e20965f2543c668fdb9a6dd 100644 --- a/src/main/java/org/olat/search/_spring/searchContext.xml +++ b/src/main/java/org/olat/search/_spring/searchContext.xml @@ -25,6 +25,7 @@ <property name="lifeIndexer" ref="jmsIndexer"/> <property name="metadataFields" ref="SearchMetadataFieldsProvider" /> <property name="searchExecutor" ref="searchExecutor" /> + <property name="indexerCron" value="${search.indexing.cronjob}" /> </bean> <bean id="searchExecutor" class="org.springframework.core.task.support.ExecutorServiceAdapter"> diff --git a/src/main/java/org/olat/search/service/SearchServiceImpl.java b/src/main/java/org/olat/search/service/SearchServiceImpl.java index 17d239355fa79f8a0f468596ca6438bfb97f1517..7b58251dad00781827d261a18dd81b3be4072bc3 100644 --- a/src/main/java/org/olat/search/service/SearchServiceImpl.java +++ b/src/main/java/org/olat/search/service/SearchServiceImpl.java @@ -101,6 +101,7 @@ public class SearchServiceImpl implements SearchService, GenericEventListener { private SearchSpellChecker searchSpellChecker; private String indexPath; private String permanentIndexPath; + private String indexerCron; /** Counts number of search queries since last restart. */ private long queryCount = 0; @@ -152,6 +153,14 @@ public class SearchServiceImpl implements SearchService, GenericEventListener { this.lifeIndexer = lifeIndexer; } + /** + * [used by Spring] + * @param indexerCron + */ + public void setIndexerCron(String indexerCron) { + this.indexerCron = indexerCron; + } + protected MainIndexer getMainIndexer() { return mainIndexer; } @@ -169,7 +178,13 @@ public class SearchServiceImpl implements SearchService, GenericEventListener { try { JobDetail detail = scheduler.getJobDetail("org.olat.search.job.enabled", Scheduler.DEFAULT_GROUP); - scheduler.triggerJob(detail.getName(), detail.getGroup()); + if(detail == null) { + if("disabled".equals(indexerCron)) { + indexer.startFullIndex(); + } + } else { + scheduler.triggerJob(detail.getName(), detail.getGroup()); + } log.info("startIndexing..."); } catch (SchedulerException e) { log.error("Error trigerring the indexer job: ", e); @@ -185,7 +200,13 @@ public class SearchServiceImpl implements SearchService, GenericEventListener { try { JobDetail detail = scheduler.getJobDetail("org.olat.search.job.enabled", Scheduler.DEFAULT_GROUP); - scheduler.interrupt(detail.getName(), detail.getGroup()); + if(detail == null) { + if("disabled".equals(indexerCron)) { + indexer.stopFullIndex(); + } + } else { + scheduler.interrupt(detail.getName(), detail.getGroup()); + } log.info("stopIndexing."); } catch (SchedulerException e) { log.error("Error interrupting the indexer job: ", e);