From 2f2163c49a6e00db62d26290b2a8909083e7143e Mon Sep 17 00:00:00 2001 From: YoungWeng Date: Tue, 29 Dec 2020 21:02:08 +0800 Subject: [PATCH] Add channel check before dispose which may cause reactor-netty PrematureCloseException Fixes gh-2046 Fixes gh-2093 --- .../cloud/gateway/filter/NettyWriteResponseFilter.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/NettyWriteResponseFilter.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/NettyWriteResponseFilter.java index 6dffb401..386678f1 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/NettyWriteResponseFilter.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/filter/NettyWriteResponseFilter.java @@ -123,7 +123,8 @@ public class NettyWriteResponseFilter implements GlobalFilter, Ordered { private void cleanup(ServerWebExchange exchange) { Connection connection = exchange.getAttribute(CLIENT_RESPONSE_CONN_ATTR); - if (connection != null) { + if (connection != null && connection.channel().isActive() + && !connection.isPersistent()) { connection.dispose(); } }