This is an automated email from the ASF dual-hosted git repository.
riemer pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/streampipes.git
The following commit(s) were added to refs/heads/dev by this push:
new c65e78655f chore: Load adapter metrics in a single request (#3125)
c65e78655f is described below
commit c65e78655f03a5145657047430a796209e2e0a36
Author: Dominik Riemer <[email protected]>
AuthorDate: Sun Aug 11 21:54:47 2024 +0200
chore: Load adapter metrics in a single request (#3125)
---
.../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;
});
}