From 5ec5c407ab0e55425ee84581cb2334dc51e3a207 Mon Sep 17 00:00:00 2001 From: Mikhail Trofimov Date: Fri, 12 Sep 2025 13:37:47 +0300 Subject: [PATCH] http://jira.mfd.msk:8088/browse/BKI-3203 Do not save empty reports from monitoring service; Updated version to 1.11 --- docker_compose/credit_tracker_config.env | 2 +- pom.xml | 2 +- .../service/MonitoringService.java | 20 ++++++++++++++++++- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/docker_compose/credit_tracker_config.env b/docker_compose/credit_tracker_config.env index f3d9699..1af4328 100644 --- a/docker_compose/credit_tracker_config.env +++ b/docker_compose/credit_tracker_config.env @@ -1,5 +1,5 @@ #commons -APP_VERSION=1.10 +APP_VERSION=1.11 REGISTRY_URL=rh8-vm3.nbki.msk:5000 JMX_PORT= JMX_HOSTNAME= diff --git a/pom.xml b/pom.xml index e12044d..fa3b295 100644 --- a/pom.xml +++ b/pom.xml @@ -10,7 +10,7 @@ ru.nbch credit-tracker - 1.10 + 1.11 credit_tracker Credit Tracker Application diff --git a/src/main/java/ru/nbch/credit_tracker/service/MonitoringService.java b/src/main/java/ru/nbch/credit_tracker/service/MonitoringService.java index 13e649d..059d3f2 100644 --- a/src/main/java/ru/nbch/credit_tracker/service/MonitoringService.java +++ b/src/main/java/ru/nbch/credit_tracker/service/MonitoringService.java @@ -33,6 +33,7 @@ import java.util.UUID; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; @@ -126,7 +127,10 @@ public class MonitoringService { } String responsePath = generateResponse(userPackage, reportPath); - String fileName = createResponseFile(userPackage, responsePath); + String fileName = null; + if (responsePath != null) { + fileName = createResponseFile(userPackage, responsePath); + } if (fileName != null) { log.info("New report fileName: {}", fileName); updateSignalHits(userPackage, responsePath, fileName); @@ -147,6 +151,8 @@ public class MonitoringService { * @return Путь к временному рещультирующему файлу */ private String generateResponse(UserPackage userPackage, String reportPath) { + AtomicBoolean generateResponse = new AtomicBoolean(false); // Выставляется в true, если хотя бы один субъект с мониторинга подошел под условие срабатывания сигнала. В этом случае отчет сохраняется + String folderPath = config.getLoadDir() + File.separator + "tmp_folder" + File.separator + userPackage.getId() + File.separator; String responsePath = folderPath + UUID.randomUUID() + "_response_output.xml"; @@ -161,6 +167,9 @@ public class MonitoringService { staxXmlProcessor.read(in, Persons.class, personsData -> { // как только считали пачку Persons сразу записали ее в результирующий файл List subjectsBatch = processPersons(personsData.getPersons()); + if (!subjectsBatch.isEmpty()) { + generateResponse.set(true); + } writer.accept(subjectsBatch); personsData.getPersons().clear(); // чистим список для экономии памяти }, @@ -179,6 +188,15 @@ public class MonitoringService { log.warn("File {} hasn't been deleted", reportPath); } + if (!generateResponse.get()) { // ни один субъект не подошел под условие, удаляем временный отчет + try { + Files.delete(Path.of(responsePath)); + } catch (IOException e) { + log.warn("File {} hasn't been deleted", responsePath); + } + return null; + } + return responsePath; }