From 9ba1e67fd6415b03517574dda299e368b7023ce1 Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Thu, 15 Feb 2018 14:16:38 -0500 Subject: [PATCH] Removes use of DefaultRepeat, moves iteration count to predicate. --- .../gateway/filter/factory/RetryGatewayFilterFactory.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/factory/RetryGatewayFilterFactory.java b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/factory/RetryGatewayFilterFactory.java index c468bc51..788b2f84 100644 --- a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/factory/RetryGatewayFilterFactory.java +++ b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/filter/factory/RetryGatewayFilterFactory.java @@ -67,6 +67,12 @@ public class RetryGatewayFilterFactory implements GatewayFilterFactory { retry.validate(); Predicate> predicate = context -> { + boolean retryableAttempt = context.iteration() < retry.getRetries(); + + if (!retryableAttempt) { + return false; + } + ServerWebExchange exchange = context.applicationContext(); HttpStatus statusCode = exchange.getResponse().getStatusCode(); HttpMethod httpMethod = exchange.getRequest().getMethod(); @@ -84,7 +90,7 @@ public class RetryGatewayFilterFactory implements GatewayFilterFactory { }; //TODO: use Repeat statics once updated with a create() like method - Repeat repeat = DefaultRepeat.create(predicate, retry.getRetries()); + Repeat repeat = Repeat.onlyIf(predicate); //TODO: support timeout, backoff, jitter, etc... in Builder return apply(repeat);