From 73b01f81e60e8d41d22f7fb26d48d94cf7db1174 Mon Sep 17 00:00:00 2001 From: ukayani Date: Tue, 7 Apr 2020 23:52:03 -0400 Subject: [PATCH] Preserves the order of route definitions. This preserves the order in which route definitions are composited together and likewise for routes this would ensure that route definitions from properties do not lose their relative ordering. Fixes gh-1660 --- .../cloud/gateway/route/CompositeRouteDefinitionLocator.java | 3 ++- .../cloud/gateway/route/CompositeRouteLocator.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/route/CompositeRouteDefinitionLocator.java b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/route/CompositeRouteDefinitionLocator.java index 4cafd929..18d929b0 100644 --- a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/route/CompositeRouteDefinitionLocator.java +++ b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/route/CompositeRouteDefinitionLocator.java @@ -49,7 +49,8 @@ public class CompositeRouteDefinitionLocator implements RouteDefinitionLocator { @Override public Flux getRouteDefinitions() { - return this.delegates.flatMap(RouteDefinitionLocator::getRouteDefinitions) + return this.delegates + .flatMapSequential(RouteDefinitionLocator::getRouteDefinitions) .flatMap(routeDefinition -> { if (routeDefinition.getId() == null) { return randomId().map(id -> { diff --git a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/route/CompositeRouteLocator.java b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/route/CompositeRouteLocator.java index 13e1f7ce..a58dce30 100644 --- a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/route/CompositeRouteLocator.java +++ b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/route/CompositeRouteLocator.java @@ -31,7 +31,7 @@ public class CompositeRouteLocator implements RouteLocator { @Override public Flux getRoutes() { - return this.delegates.flatMap(RouteLocator::getRoutes); + return this.delegates.flatMapSequential(RouteLocator::getRoutes); } }