Pull request #263: Dossier stats buffer cleanup

Merge in RED/persistence-service from dossier-stats-buffer-cleanup to master

* commit '5dc829665baccac130a53869a0eccaf4245615b4':
  cleanup
  cleanup
  dossier stats are now in real-time again
  RED-3452
This commit is contained in:
Timo Bejan 2022-02-24 13:58:52 +01:00
commit efda92de6b

View File

@ -1,19 +1,15 @@
package com.iqser.red.service.peristence.v1.server.service;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity;
import com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStats;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatus;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileModel;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException.DOSSIER_NOT_FOUND_MESSAGE;
@ -26,29 +22,29 @@ public class DossierStatsService {
private final DossierService dossierService;
private final FileStatusService fileStatusService;
private Map<String, DossierStats> dossierStatsMap = new HashMap<>();
// private Map<String, DossierStats> dossierStatsMap = new HashMap<>();
@Scheduled(fixedDelay = 10000, initialDelay = 1000)
public void computeDossierStats() {
log.info("Computing Dossier Stats ... ");
long start = System.currentTimeMillis();
Map<String, DossierStats> dossierStatsComputeMap = new HashMap<>();
dossierService.getAllDossiers().stream()
.filter(d -> !d.getStatus().equals(DossierStatus.DELETED))
.forEach(d -> dossierStatsComputeMap.put(d.getId(), computeDossierStats(d)));
dossierStatsMap.clear();
dossierStatsMap = dossierStatsComputeMap;
log.info("Dossier Stats Computed in {}ms", System.currentTimeMillis() - start);
}
// @Scheduled(fixedDelay = 10000, initialDelay = 1000)
// public void computeDossierStats() {
// log.info("Computing Dossier Stats ... ");
// long start = System.currentTimeMillis();
// Map<String, DossierStats> dossierStatsComputeMap = new HashMap<>();
// dossierService.getAllDossiers().stream()
// .filter(d -> !d.getStatus().equals(DossierStatus.DELETED))
// .forEach(d -> dossierStatsComputeMap.put(d.getId(), computeDossierStats(d)));
// dossierStatsMap.clear();
// dossierStatsMap = dossierStatsComputeMap;
// log.info("Dossier Stats Computed in {}ms", System.currentTimeMillis() - start);
// }
public DossierStats getDossierStats(String dossierId) {
var stats = dossierStatsMap.get(dossierId);
if (stats == null) {
stats = computeDossierStats(dossierService.getDossierById(dossierId));
dossierStatsMap.put(dossierId, stats);
}
return stats;
// var stats = dossierStatsMap.get(dossierId);
// if (stats == null) {
// stats = computeDossierStats(dossierService.getDossierById(dossierId));
// dossierStatsMap.put(dossierId, stats);
// }
return computeDossierStats(dossierService.getDossierById(dossierId));
}
private DossierStats computeDossierStats(DossierEntity dossierEntity) {