From 6a2af16ff8d7f5e18109366db2617cbc8c896417 Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Wed, 8 Apr 2020 20:48:30 -0400 Subject: [PATCH] Avoid concurrent modification errors by copying list of filters. Fixes gh-1073 --- .../cloud/gateway/route/RouteDefinitionRouteLocator.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/route/RouteDefinitionRouteLocator.java b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/route/RouteDefinitionRouteLocator.java index f7ab0183..142ee7cb 100644 --- a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/route/RouteDefinitionRouteLocator.java +++ b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/route/RouteDefinitionRouteLocator.java @@ -226,14 +226,15 @@ public class RouteDefinitionRouteLocator // TODO: support option to apply defaults after route specific filters? if (!this.gatewayProperties.getDefaultFilters().isEmpty()) { filters.addAll(loadGatewayFilters(DEFAULT_FILTERS, - this.gatewayProperties.getDefaultFilters())); + new ArrayList<>(this.gatewayProperties.getDefaultFilters()))); } if (!routeDefinition.getFilters().isEmpty()) { filters.addAll(loadGatewayFilters(routeDefinition.getId(), - routeDefinition.getFilters())); + new ArrayList<>(routeDefinition.getFilters()))); } + Flux.just().onErrorContinue() AnnotationAwareOrderComparator.sort(filters); return filters; }