Skip to content

Commit 7854f49

Browse files
committed
Polishing in HttpWebHandlerAdapter
Closes gh-23780
1 parent 53dcb00 commit 7854f49

File tree

1 file changed

+8
-10
lines changed

1 file changed

+8
-10
lines changed

spring-web/src/main/java/org/springframework/web/server/adapter/HttpWebHandlerAdapter.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -267,12 +267,14 @@ private Mono<Void> handleUnresolvedError(ServerWebExchange exchange, Throwable e
267267
ServerHttpResponse response = exchange.getResponse();
268268
String logPrefix = exchange.getLogPrefix();
269269

270-
if (isDisconnectedClientError(ex)) {
271-
// Request handling error (e.g. remote call), if we manage to set the status..
272-
if (response.setStatusCode(HttpStatus.INTERNAL_SERVER_ERROR)) {
273-
logger.error(logPrefix + "500 Server Error for " + formatRequest(request), ex);
274-
return Mono.empty();
275-
}
270+
// Sometimes a remote call error can look like a disconnected client.
271+
// Try to set the response first before the "isDisconnectedClient" check.
272+
273+
if (response.setStatusCode(HttpStatus.INTERNAL_SERVER_ERROR)) {
274+
logger.error(logPrefix + "500 Server Error for " + formatRequest(request), ex);
275+
return Mono.empty();
276+
}
277+
else if (isDisconnectedClientError(ex)) {
276278
if (lostClientLogger.isTraceEnabled()) {
277279
lostClientLogger.trace(logPrefix + "Client went away", ex);
278280
}
@@ -282,10 +284,6 @@ else if (lostClientLogger.isDebugEnabled()) {
282284
}
283285
return Mono.empty();
284286
}
285-
else if (response.setStatusCode(HttpStatus.INTERNAL_SERVER_ERROR)) {
286-
logger.error(logPrefix + "500 Server Error for " + formatRequest(request), ex);
287-
return Mono.empty();
288-
}
289287
else {
290288
// After the response is committed, propagate errors to the server...
291289
logger.error(logPrefix + "Error [" + ex + "] for " + formatRequest(request) +

0 commit comments

Comments
 (0)