diff --git a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/factory/SpringCloudCircuitBreakerFilterFactory.java b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/factory/SpringCloudCircuitBreakerFilterFactory.java index 79461968..07b64cbd 100644 --- a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/factory/SpringCloudCircuitBreakerFilterFactory.java +++ b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/factory/SpringCloudCircuitBreakerFilterFactory.java @@ -87,17 +87,16 @@ public abstract class SpringCloudCircuitBreakerFilterFactory extends @Override public GatewayFilter apply(Config config) { ReactiveCircuitBreaker cb = reactiveCircuitBreakerFactory.create(config.getId()); + Set statuses = config.getStatusCodes().stream() + .map(HttpStatusHolder::parse) + .filter(statusHolder -> statusHolder.getHttpStatus() != null) + .map(HttpStatusHolder::getHttpStatus).collect(Collectors.toSet()); return new GatewayFilter() { @Override public Mono filter(ServerWebExchange exchange, GatewayFilterChain chain) { return cb.run(chain.filter(exchange).doOnSuccess(v -> { - Set statuses = config.getStatusCodes().stream() - .map(HttpStatusHolder::parse) - .filter(statusHolder -> statusHolder.getHttpStatus() != null) - .map(HttpStatusHolder::getHttpStatus) - .collect(Collectors.toSet()); if (statuses.contains(exchange.getResponse().getStatusCode())) { HttpStatus status = exchange.getResponse().getStatusCode(); exchange.getResponse().setStatusCode(null);