From 39e8dab41ed9a375a55fbf9f7b6ce99eb99ce3e8 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 --- .../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 f3ab2dd34d..103964bb52 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 @@ -121,7 +121,8 @@ else if (bufferFactory instanceof DefaultDataBufferFactory) { 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(); } }