http://jira.mfd.msk:8088/browse/BKI-3203 Do not save empty reports from monitoring service; Updated version to 1.11

This commit is contained in:
Mikhail Trofimov 2025-09-12 13:37:47 +03:00
parent 7c6a5fef6b
commit 5ec5c407ab
3 changed files with 21 additions and 3 deletions

View file

@ -1,5 +1,5 @@
#commons
APP_VERSION=1.10
APP_VERSION=1.11
REGISTRY_URL=rh8-vm3.nbki.msk:5000
JMX_PORT=
JMX_HOSTNAME=

View file

@ -10,7 +10,7 @@
</parent>
<groupId>ru.nbch</groupId>
<artifactId>credit-tracker</artifactId>
<version>1.10</version>
<version>1.11</version>
<name>credit_tracker</name>
<description>Credit Tracker Application</description>

View file

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