From eb1de2a37ca8eb540858c21475c746e313691e3d Mon Sep 17 00:00:00 2001 From: John Gray Date: Tue, 9 Apr 2024 11:44:26 -0400 Subject: [PATCH] Defer instantiation of TimeoutExcpetions. By deferring instantiation of TimeoutExcpetions on each request, this prevents an agent, like Dynatrace, from thinking all requests are throwing TimeoutExceptions. Fixes gh-2600 Fixes gh-3344 --- .../cloud/gateway/filter/NettyRoutingFilter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/NettyRoutingFilter.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/NettyRoutingFilter.java index 4d342892..d09931ee 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/NettyRoutingFilter.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/NettyRoutingFilter.java @@ -191,7 +191,7 @@ public class NettyRoutingFilter implements GlobalFilter, Ordered { if (responseTimeout != null) { responseFlux = responseFlux .timeout(responseTimeout, - Mono.error(new TimeoutException("Response took longer than timeout: " + responseTimeout))) + Mono.defer(() -> Mono.error(new TimeoutException("Response took longer than timeout: " + responseTimeout)))) .onErrorMap(TimeoutException.class, th -> new ResponseStatusException(HttpStatus.GATEWAY_TIMEOUT, th.getMessage(), th)); }