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:
commit
bd1e1334ba
@ -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);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user