diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/discovery/DiscoveryClientRouteDefinitionLocator.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/discovery/DiscoveryClientRouteDefinitionLocator.java index 9c1156d5..82e746b8 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/discovery/DiscoveryClientRouteDefinitionLocator.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/discovery/DiscoveryClientRouteDefinitionLocator.java @@ -96,11 +96,10 @@ public class DiscoveryClientRouteDefinitionLocator implements RouteDefinitionLoc }; } - return serviceInstances.filter(instances -> !instances.isEmpty()) - .flatMap(Flux::fromIterable).filter(includePredicate).collectMap(ServiceInstance::getServiceId) + return serviceInstances.filter(instances -> !instances.isEmpty()).flatMap(Flux::fromIterable) + .filter(includePredicate).collectMap(ServiceInstance::getServiceId) // remove duplicates - .flatMapMany(map -> Flux.fromIterable(map.values())) - .map(instance -> { + .flatMapMany(map -> Flux.fromIterable(map.values())).map(instance -> { RouteDefinition routeDefinition = buildRouteDefinition(urlExpr, instance); final ServiceInstance instanceForEval = new DelegatingServiceInstance(instance, properties); diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/discovery/DiscoveryClientRouteDefinitionLocatorTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/discovery/DiscoveryClientRouteDefinitionLocatorTests.java index 85fda6ce..d5344fb3 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/discovery/DiscoveryClientRouteDefinitionLocatorTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/discovery/DiscoveryClientRouteDefinitionLocatorTests.java @@ -67,8 +67,7 @@ public class DiscoveryClientRouteDefinitionLocatorTests { public void includeExpressionWorks() { assertThat(locator).as("DiscoveryClientRouteDefinitionLocator was null").isNotNull(); - List definitions = locator.getRouteDefinitions().collectList() - .block(); + List definitions = locator.getRouteDefinitions().collectList().block(); assertThat(definitions).hasSize(2); RouteDefinition definition = definitions.get(0); @@ -125,7 +124,7 @@ public class DiscoveryClientRouteDefinitionLocatorTests { "localhost", 8001, false, metadata); when(discoveryClient.getInstances(serviceId)).thenReturn(Flux.just(instance1)); } - else if ("service3".equalsIgnoreCase(serviceId)){ + else if ("service3".equalsIgnoreCase(serviceId)) { // given 3 instances, only one routedefinition should be created DefaultServiceInstance instance2 = new DefaultServiceInstance(serviceId + "8002", serviceId, "localhost", 8002, false, Collections.emptyMap());