You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streampipes.apache.org by ri...@apache.org on 2024/08/10 10:09:50 UTC

(streampipes) branch adapter-monitoring-single-request created (now eda4765d9d)

This is an automated email from the ASF dual-hosted git repository.

riemer pushed a change to branch adapter-monitoring-single-request
in repository https://gitbox.apache.org/repos/asf/streampipes.git


      at eda4765d9d chore: Load adapter metrics in a single request

This branch includes the following new commits:

     new eda4765d9d chore: Load adapter metrics in a single request

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(streampipes) 01/01: chore: Load adapter metrics in a single request

Posted by ri...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

riemer pushed a commit to branch adapter-monitoring-single-request
in repository https://gitbox.apache.org/repos/asf/streampipes.git

commit eda4765d9d2187afc49d328fee3d5961ca0bcdb9
Author: Dominik Riemer <do...@gmail.com>
AuthorDate: Sat Aug 10 12:09:32 2024 +0200

    chore: Load adapter metrics in a single request
---
 .../monitoring/pipeline/ExtensionsLogProvider.java     |  8 ++++++++
 .../rest/impl/AdapterMonitoringResource.java           | 11 +++++++++++
 .../src/lib/apis/adapter-monitoring.service.ts         | 10 ++++++++++
 .../existing-adapters/existing-adapters.component.ts   | 18 ++++--------------
 4 files changed, 33 insertions(+), 14 deletions(-)

diff --git a/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/monitoring/pipeline/ExtensionsLogProvider.java b/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/monitoring/pipeline/ExtensionsLogProvider.java
index cf5940cb3e..f5d6009cab 100644
--- a/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/monitoring/pipeline/ExtensionsLogProvider.java
+++ b/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/monitoring/pipeline/ExtensionsLogProvider.java
@@ -94,6 +94,14 @@ public enum ExtensionsLogProvider {
     }
   }
 
+  public Map<String, SpMetricsEntry> getMetricsInfoForResources(List<String> resourceIds) {
+    return allMetricsInfos
+        .entrySet()
+        .stream()
+        .filter(entry -> resourceIds.contains(entry.getKey()))
+        .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
+  }
+
   public Map<String, SpMetricsEntry> getMetricInfosForPipeline(String pipelineId) {
     var pipeline = PipelineManager.getPipeline(pipelineId);
 
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AdapterMonitoringResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AdapterMonitoringResource.java
index b3d91cda69..8260c4c9c6 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AdapterMonitoringResource.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/AdapterMonitoringResource.java
@@ -20,6 +20,7 @@
 package org.apache.streampipes.rest.impl;
 
 import org.apache.streampipes.manager.monitoring.pipeline.ExtensionsLogProvider;
+import org.apache.streampipes.manager.monitoring.pipeline.ExtensionsServiceLogExecutor;
 import org.apache.streampipes.model.monitoring.SpLogEntry;
 import org.apache.streampipes.model.monitoring.SpMetricsEntry;
 
@@ -28,9 +29,11 @@ import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
+import java.util.Map;
 
 @RestController
 @RequestMapping("/api/v2/adapter-monitoring")
@@ -45,4 +48,12 @@ public class AdapterMonitoringResource extends AbstractMonitoringResource {
   public ResponseEntity<SpMetricsEntry> getMetricsInfoForAdapter(@PathVariable("elementId") String elementId) {
     return ok(ExtensionsLogProvider.INSTANCE.getMetricInfosForResource(elementId));
   }
+
+  @GetMapping(path = "metrics", produces = MediaType.APPLICATION_JSON_VALUE)
+  public ResponseEntity<Map<String, SpMetricsEntry>> getMetricsInfos(
+      @RequestParam(value = "filter") List<String> elementIds
+  ) {
+    new ExtensionsServiceLogExecutor().triggerUpdate();
+    return ok(ExtensionsLogProvider.INSTANCE.getMetricsInfoForResources(elementIds));
+  }
 }
diff --git a/ui/projects/streampipes/platform-services/src/lib/apis/adapter-monitoring.service.ts b/ui/projects/streampipes/platform-services/src/lib/apis/adapter-monitoring.service.ts
index 0ce1098f74..a208e6822c 100644
--- a/ui/projects/streampipes/platform-services/src/lib/apis/adapter-monitoring.service.ts
+++ b/ui/projects/streampipes/platform-services/src/lib/apis/adapter-monitoring.service.ts
@@ -47,6 +47,16 @@ export class AdapterMonitoringService extends AbstractMonitoringService {
             .pipe(map(response => response as SpMetricsEntry));
     }
 
+    getMetricsInfoForAdapters(
+        elementIds: string[],
+    ): Observable<Record<string, SpMetricsEntry>> {
+        return this.http
+            .get(`${this.monitoringBasePath}/metrics`, {
+                params: { filter: elementIds.toString() },
+            })
+            .pipe(map(response => response as Record<string, SpMetricsEntry>));
+    }
+
     protected get monitoringBasePath(): string {
         return `${this.platformServicesCommons.apiBasePath}/adapter-monitoring`;
     }
diff --git a/ui/src/app/connect/components/existing-adapters/existing-adapters.component.ts b/ui/src/app/connect/components/existing-adapters/existing-adapters.component.ts
index 7d880838e0..fdf0c5986f 100644
--- a/ui/src/app/connect/components/existing-adapters/existing-adapters.component.ts
+++ b/ui/src/app/connect/components/existing-adapters/existing-adapters.component.ts
@@ -185,22 +185,12 @@ export class ExistingAdaptersComponent implements OnInit, OnDestroy {
     }
 
     getMonitoringInfos(adapters: AdapterDescription[]) {
-        const observables = adapters
-            .map(adapter => adapter.elementId)
-            .map(elementId =>
-                this.adapterMonitoringService.getMetricsInfoForAdapter(
-                    elementId,
-                ),
-            );
+        const filteredElementIds = adapters.map(adapter => adapter.elementId);
 
         this.adapterMonitoringService
-            .triggerMonitoringUpdate()
-            .subscribe(() => {
-                zip(...observables).subscribe(metrics => {
-                    adapters.forEach((adapter, index) => {
-                        this.adapterMetrics[adapter.elementId] = metrics[index];
-                    });
-                });
+            .getMetricsInfoForAdapters(filteredElementIds)
+            .subscribe(metrics => {
+                this.adapterMetrics = metrics;
             });
     }