Pull request #44: 3.0 efsa readiness

Merge in RED/persistence-service from 3.0-efsa-readiness to master

* commit '25c946a9596333e1a223f53e98c4f8c99738fcec':
  Automatic Analysis Scheduler Update
This commit is contained in:
Timo Bejan 2021-10-07 10:37:51 +02:00
commit bd1e1334ba

View File

@ -10,6 +10,7 @@ import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.do
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.AmqpAdmin;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
@ -24,6 +25,8 @@ import static com.iqser.red.service.persistence.management.v1.processor.utils.Ma
public class AutomaticAnalysisScheduler {
@Value("${persistence-service.automaticAnalysis.pageFactor:500}")
private int pageFactor;
private final FileStatusService fileStatusService;
private final ReanalysisRequiredStatusService reanalysisRequiredStatusService;
private final AmqpAdmin amqpAdmin;
@ -39,17 +42,20 @@ public class AutomaticAnalysisScheduler {
redactionQueueInfo.getMessageCount(),
redactionQueueInfo.getConsumerCount());
// only 1 file in queue
if (redactionQueueInfo.getMessageCount() <= 1) {
var consumerCount = redactionQueueInfo.getConsumerCount();
if (redactionQueueInfo.getMessageCount() <= consumerCount) {
// queue up 5 files
var allStatuses= getAllStatuses();
var allStatuses = getAllStatuses();
var allStatusesIterator = allStatuses.iterator();
int queuedCount = 0;
log.info("Files that require reanalysis: {}", allStatuses.size());
while (queuedCount < 5 && allStatusesIterator.hasNext()) {
var worstCaseScenarioQueuedPages = 0;
while (worstCaseScenarioQueuedPages < pageFactor * consumerCount && allStatusesIterator.hasNext()) {
var next = allStatusesIterator.next();
if (next.isAnalysisRequired()) {
queuedCount += 1;
// in case the file doesn't have numberOfPages set, we assume an average.
worstCaseScenarioQueuedPages += next.getNumberOfPages() <= 0 ? pageFactor : next.getNumberOfPages();
log.info("Queued file: {} for automatic analysis!", next.getFilename());
fileStatusService.setStatusReprocess(next.getDossierId(), next.getId(), 1);
}