diff --git a/CHANGELOG.md b/CHANGELOG.md index 044b417..2fd0c38 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ java-приложение для работы с блокировками в С * Обновлены action-ы в gitHubActions * Прекращена поддержка PostgreSQL версий ниже 10, удалена настройка для отображения типа процесса * Добавлены новые столбцы `Тип ожидаемого события` и `Имя ожидаемого события` +* Исправлен подсчет процессов, теперь учитывается только уникальные pid 1.9.0 diff --git a/src/main/java/ru/taximaxim/pgsqlblocks/common/models/DBProcess.java b/src/main/java/ru/taximaxim/pgsqlblocks/common/models/DBProcess.java index 5c112c4..97b2338 100644 --- a/src/main/java/ru/taximaxim/pgsqlblocks/common/models/DBProcess.java +++ b/src/main/java/ru/taximaxim/pgsqlblocks/common/models/DBProcess.java @@ -107,6 +107,12 @@ public String getBlocksRelationsString() { .collect(Collectors.joining(",")); } + public Set getChildrenPid() { + Set uniqueId = new HashSet<>(); + children.stream().map(e -> uniqueId.addAll(e.getChildrenPid())); + return uniqueId; + } + public int getPid() { return pid; } diff --git a/src/main/java/ru/taximaxim/pgsqlblocks/modules/db/controller/DBController.java b/src/main/java/ru/taximaxim/pgsqlblocks/modules/db/controller/DBController.java index a69e627..2926a5c 100644 --- a/src/main/java/ru/taximaxim/pgsqlblocks/modules/db/controller/DBController.java +++ b/src/main/java/ru/taximaxim/pgsqlblocks/modules/db/controller/DBController.java @@ -231,13 +231,13 @@ public List getProcesses() { return processes; } - // TODO possible duplicate processes with same pid public int getProcessesCount() { - return processes.size() + processes.stream().mapToInt(DBController::countChildren).sum(); - } - - private static int countChildren(DBProcess process) { - return process.getChildren().size() + process.getChildren().stream().mapToInt(DBController::countChildren).sum(); + Set uniqueIds = new HashSet<>(); + processes.stream().forEach(e -> { + uniqueIds.add(e.getPid()); + uniqueIds.addAll(e.getChildrenPid()); + }); + return uniqueIds.size(); } public DBBlocksJournal getBlocksJournal() {