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

Reply via email to