From 785d56310cb2914a436b48188d34501ae7971f98 Mon Sep 17 00:00:00 2001 From: elton <34131964+caixunshi@users.noreply.github.com> Date: Fri, 12 May 2023 10:29:40 +0800 Subject: [PATCH 1/2] Update DiscoveryClientRouteDefinitionLocator.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit filter out illegal serviceIds(#2952) --- .../discovery/DiscoveryClientRouteDefinitionLocator.java | 2 ++ 1 file changed, 2 insertions(+) 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 82e746b88e..16f9ee3376 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 @@ -99,6 +99,8 @@ public Flux getRouteDefinitions() { return serviceInstances.filter(instances -> !instances.isEmpty()).flatMap(Flux::fromIterable) .filter(includePredicate).collectMap(ServiceInstance::getServiceId) // remove duplicates + .filter(instance -> !instance.getServiceId().startsWith(" ")) + // filter out illegal serviceIds .flatMapMany(map -> Flux.fromIterable(map.values())).map(instance -> { RouteDefinition routeDefinition = buildRouteDefinition(urlExpr, instance); From b300d639a00b4962d7813286b0cdb6c42f315a40 Mon Sep 17 00:00:00 2001 From: elton <34131964+caixunshi@users.noreply.github.com> Date: Fri, 12 May 2023 02:57:29 +0000 Subject: [PATCH 2/2] add debug log --- .../DiscoveryClientRouteDefinitionLocator.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) 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 16f9ee3376..4fb12e28a5 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 @@ -98,9 +98,15 @@ public Flux getRouteDefinitions() { return serviceInstances.filter(instances -> !instances.isEmpty()).flatMap(Flux::fromIterable) .filter(includePredicate).collectMap(ServiceInstance::getServiceId) + // Filter out illegal serviceIds + .filter(instance -> { + if (instance.getServiceId().startsWith(" ")) { + log.debug("Illegal ServiceId: +" + instance.getServiceId()); + return false; + } + return true; + }) // remove duplicates - .filter(instance -> !instance.getServiceId().startsWith(" ")) - // filter out illegal serviceIds .flatMapMany(map -> Flux.fromIterable(map.values())).map(instance -> { RouteDefinition routeDefinition = buildRouteDefinition(urlExpr, instance);