From d674808f3c7d4403ab17b8206e9a5218080c468a Mon Sep 17 00:00:00 2001 From: Ilya Kuramshin Date: Fri, 26 Nov 2021 14:50:32 +0300 Subject: [PATCH] ISSUE-1128: Add respect to cluster's order in ClustersStorage (#1130) * add respect to cluster's order in ClustersStorage * minor cleaning --- .../ui/service/ClustersMetricsScheduler.java | 4 +-- .../kafka/ui/service/ClustersStorage.java | 27 +++++-------------- 2 files changed, 7 insertions(+), 24 deletions(-) diff --git a/kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ClustersMetricsScheduler.java b/kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ClustersMetricsScheduler.java index 0555243bb1..712077d604 100644 --- a/kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ClustersMetricsScheduler.java +++ b/kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ClustersMetricsScheduler.java @@ -1,6 +1,5 @@ package com.provectus.kafka.ui.service; -import java.util.Map; import javax.annotation.PostConstruct; import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j2; @@ -24,10 +23,9 @@ public class ClustersMetricsScheduler { initialDelayString = "${kafka.update-metrics-rate-millis:30000}" ) public void updateMetrics() { - Flux.fromIterable(clustersStorage.getKafkaClustersMap().entrySet()) + Flux.fromIterable(clustersStorage.getKafkaClusters()) .parallel() .runOn(Schedulers.parallel()) - .map(Map.Entry::getValue) .flatMap(cluster -> { log.debug("Start getting metrics for kafkaCluster: {}", cluster.getName()); return metricsService.updateCache(cluster) diff --git a/kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ClustersStorage.java b/kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ClustersStorage.java index b77135f034..08b71b4d31 100644 --- a/kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ClustersStorage.java +++ b/kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/ClustersStorage.java @@ -1,33 +1,22 @@ package com.provectus.kafka.ui.service; +import com.google.common.collect.ImmutableMap; import com.provectus.kafka.ui.config.ClustersProperties; import com.provectus.kafka.ui.mapper.ClusterMapper; import com.provectus.kafka.ui.model.KafkaCluster; import java.util.Collection; -import java.util.Map; import java.util.Optional; -import java.util.concurrent.ConcurrentHashMap; -import javax.annotation.PostConstruct; -import lombok.RequiredArgsConstructor; -import org.mapstruct.factory.Mappers; import org.springframework.stereotype.Component; @Component -@RequiredArgsConstructor public class ClustersStorage { - private final Map kafkaClusters = new ConcurrentHashMap<>(); + private final ImmutableMap kafkaClusters; - private final ClustersProperties clusterProperties; - - private final ClusterMapper clusterMapper = Mappers.getMapper(ClusterMapper.class); - - @PostConstruct - public void init() { - for (ClustersProperties.Cluster clusterProperties : clusterProperties.getClusters()) { - KafkaCluster cluster = clusterMapper.toKafkaCluster(clusterProperties); - kafkaClusters.put(clusterProperties.getName(), cluster); - } + public ClustersStorage(ClustersProperties properties, ClusterMapper mapper) { + var builder = ImmutableMap.builder(); + properties.getClusters().forEach(c -> builder.put(c.getName(), mapper.toKafkaCluster(c))); + this.kafkaClusters = builder.build(); } public Collection getKafkaClusters() { @@ -37,8 +26,4 @@ public class ClustersStorage { public Optional getClusterByName(String clusterName) { return Optional.ofNullable(kafkaClusters.get(clusterName)); } - - public Map getKafkaClustersMap() { - return kafkaClusters; - } }