From 4fc38d462b530ed28ce69d7853279802d3733e6d Mon Sep 17 00:00:00 2001 From: dahyvuun Date: Tue, 7 Apr 2026 19:48:59 +0200 Subject: [PATCH] fix(web): handle HttpMessageNotWritableException in DisconnectedClientHelper Signed-off-by: dahyvuun --- .../web/util/DisconnectedClientHelper.java | 3 ++- .../web/util/DisconnectedClientHelperTests.java | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/spring-web/src/main/java/org/springframework/web/util/DisconnectedClientHelper.java b/spring-web/src/main/java/org/springframework/web/util/DisconnectedClientHelper.java index e4658f914c68..1506f9bbd291 100644 --- a/spring-web/src/main/java/org/springframework/web/util/DisconnectedClientHelper.java +++ b/spring-web/src/main/java/org/springframework/web/util/DisconnectedClientHelper.java @@ -42,7 +42,8 @@ public class DisconnectedClientHelper { private static final Set EXCEPTION_PHRASES = - Set.of("broken pipe", "connection reset by peer"); + Set.of("broken pipe", "connection reset by peer", + "response may not be written"); private static final Set EXCEPTION_TYPE_NAMES = Set.of("AbortedException", "ClientAbortException", diff --git a/spring-web/src/test/java/org/springframework/web/util/DisconnectedClientHelperTests.java b/spring-web/src/test/java/org/springframework/web/util/DisconnectedClientHelperTests.java index c0ff6ecc39dd..48aa1923e25f 100644 --- a/spring-web/src/test/java/org/springframework/web/util/DisconnectedClientHelperTests.java +++ b/spring-web/src/test/java/org/springframework/web/util/DisconnectedClientHelperTests.java @@ -34,6 +34,7 @@ import org.springframework.web.client.ResourceAccessException; import org.springframework.web.context.request.async.AsyncRequestNotUsableException; import org.springframework.web.testfixture.http.MockHttpInputMessage; +import org.springframework.http.converter.HttpMessageNotWritableException; import static org.assertj.core.api.Assertions.assertThat; @@ -99,4 +100,11 @@ void nullException() { assertThat(DisconnectedClientHelper.isClientDisconnectedException(null)).isFalse(); } + @Test // gh-36421 + void httpMessageNotWritableFromClosedConnection() { + IOException cause = new IOException("The response may not be written to once it has been closed"); + Exception ex = new HttpMessageNotWritableException("Could not write JSON", cause); + assertThat(DisconnectedClientHelper.isClientDisconnectedException(ex)).isTrue(); + } + }