This is an automated email from the ASF dual-hosted git repository. marat pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-karavan.git
commit 08b11db48d25c0a3d6876a25b8bce609758a83cf Author: Marat Gubaidullin <ma...@talismancloud.io> AuthorDate: Tue Feb 13 12:37:43 2024 -0500 Docker statistic collection issue fixed --- .../org/apache/camel/karavan/docker/DockerService.java | 7 +++++++ .../camel/karavan/service/ContainerStatusService.java | 16 +++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java index 776e5f58..7b8efdc4 100644 --- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java +++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/docker/DockerService.java @@ -117,6 +117,13 @@ public class DockerService extends DockerServiceUtils { return result; } + public ContainerStatus collectContainerStatistics(ContainerStatus containerStatus) { + Container container = getContainerByName(containerStatus.getContainerName()); + Statistics stats = getContainerStats(container.getId()); + updateStatistics(containerStatus, stats); + return containerStatus; + } + public void startListeners() { getDockerClient().eventsCmd().exec(dockerEventListener); } diff --git a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ContainerStatusService.java b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ContainerStatusService.java index e8d34d20..1f54a52e 100644 --- a/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ContainerStatusService.java +++ b/karavan-web/karavan-app/src/main/java/org/apache/camel/karavan/service/ContainerStatusService.java @@ -38,6 +38,7 @@ import java.util.Objects; public class ContainerStatusService { public static final String CONTAINER_STATUS = "CONTAINER_STATUS"; + public static final String CONTAINER_STATISTIC = "CONTAINER_STATISTIC"; public static final String CONTAINER_DELETED = "CONTAINER_DELETED"; private static final Logger LOGGER = Logger.getLogger(ContainerStatusService.class.getName()); @ConfigProperty(name = "karavan.environment") @@ -55,13 +56,22 @@ public class ContainerStatusService { @Scheduled(every = "{karavan.container.statistics.interval}", concurrentExecution = Scheduled.ConcurrentExecution.SKIP) void collectContainersStatistics() { if (karavanCacheService.isReady() && !ConfigService.inKubernetes()) { - List<ContainerStatus> statusesInDocker = dockerService.collectContainersStatistics(); + List<ContainerStatus> statusesInDocker = dockerService.collectContainersStatuses(); statusesInDocker.forEach(containerStatus -> { - eventBus.publish(ContainerStatusService.CONTAINER_STATUS, JsonObject.mapFrom(containerStatus)); + eventBus.publish(ContainerStatusService.CONTAINER_STATISTIC, JsonObject.mapFrom(containerStatus)); }); } } + @ConsumeEvent(value = CONTAINER_STATISTIC, blocking = true, ordered = false) + void collectContainersStatistics(JsonObject data) { + if (karavanCacheService.isReady()) { + ContainerStatus status = data.mapTo(ContainerStatus.class); + ContainerStatus newStatus = dockerService.collectContainerStatistics(status); + eventBus.publish(ContainerStatusService.CONTAINER_STATUS, JsonObject.mapFrom(newStatus)); + } + } + @Scheduled(every = "{karavan.container.status.interval}", concurrentExecution = Scheduled.ConcurrentExecution.SKIP) void collectContainersStatuses() { if (karavanCacheService.isReady() && !ConfigService.inKubernetes()) { @@ -126,7 +136,7 @@ public class ContainerStatusService { return; } } - if (newStatus.getCpuInfo() == null || newStatus.getCpuInfo().isEmpty()) { + if (newStatus.getCpuInfo() == null || newStatus.getCpuInfo().isBlank()) { newStatus.setCpuInfo(oldStatus.getCpuInfo()); newStatus.setMemoryInfo(oldStatus.getMemoryInfo()); }