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;
}