SolrPingTask.java
/*
* Copyright (C) 2025 B3Partners B.V.
*
* SPDX-License-Identifier: MIT
*/
package org.tailormap.api.scheduling;
import java.lang.invoke.MethodHandles;
import java.time.Instant;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.PersistJobDataAfterExecution;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.quartz.QuartzJobBean;
import org.tailormap.api.solr.SolrService;
@DisallowConcurrentExecution
@PersistJobDataAfterExecution
public class SolrPingTask extends QuartzJobBean implements Task {
private static final Logger logger =
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
private final SolrService solrService;
public SolrPingTask(SolrService solrService) {
this.solrService = solrService;
}
@Override
protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
final JobDataMap persistedJobData = context.getJobDetail().getJobDataMap();
if (solrService.isSolrServiceAvailable()) {
persistedJobData.put(LAST_RESULT_KEY, "Solr is available. Check succeeded.");
context.setResult("Solr is available");
} else {
logger.warn("Solr service is not available");
persistedJobData.put(LAST_RESULT_KEY, "Solr is not available. Check failed.");
context.setResult("Solr is not available");
}
persistedJobData.put(EXECUTION_FINISHED_KEY, Instant.now());
}
@Override
public TaskType getType() {
return TaskType.SOLR_PING;
}
@Override
public String getDescription() {
return "Ping Solr to ensure it is available.";
}
}