diff --git a/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/metrics/EurekaInstanceMonitor.java b/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/metrics/EurekaInstanceMonitor.java index 5442ec232..50d2ff98f 100644 --- a/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/metrics/EurekaInstanceMonitor.java +++ b/spring-cloud-netflix-eureka-server/src/main/java/org/springframework/cloud/netflix/eureka/server/metrics/EurekaInstanceMonitor.java @@ -71,12 +71,18 @@ public class EurekaInstanceMonitor implements SmartApplicationListener { @Override public void onApplicationEvent(ApplicationEvent event) { - final Map aggregatedCounts = instanceRegistry.getApplications() + executor.execute(() -> { + Map aggregatedCounts = collectAggregatedCounts(); + registerMetrics(aggregatedCounts); + }); + } + + private Map collectAggregatedCounts() { + return instanceRegistry.getApplications() .getRegisteredApplications() .stream() .flatMap(application -> application.getInstances().stream()) .collect(Collectors.groupingBy(tagProvider::eurekaInstanceTags, Collectors.counting())); - executor.execute(() -> registerMetrics(aggregatedCounts)); } private void registerMetrics(Map aggregatedCounts) {