From eb1de2a37ca8eb540858c21475c746e313691e3d Mon Sep 17 00:00:00 2001 From: John Gray Date: Tue, 9 Apr 2024 11:44:26 -0400 Subject: [PATCH 1/2] 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)); } From 726b9efd9b3de383e97bb8cf640d58dc0e6c6618 Mon Sep 17 00:00:00 2001 From: spencergibb Date: Thu, 26 Sep 2024 16:38:46 -0400 Subject: [PATCH 2/2] formatting --- .../cloud/gateway/filter/NettyRoutingFilter.java | 3 ++- 1 file changed, 2 insertions(+), 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 d09931ee..bf4f6ad7 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,8 @@ public class NettyRoutingFilter implements GlobalFilter, Ordered { if (responseTimeout != null) { responseFlux = responseFlux .timeout(responseTimeout, - Mono.defer(() -> 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)); }