From 33bf09d513a11f655c6b35e85b09e4fb97f66048 Mon Sep 17 00:00:00 2001 From: Johnny Lim Date: Fri, 11 Oct 2019 20:32:08 +0900 Subject: [PATCH 1/2] Polish HttpWebHandlerAdapter.handleUnresolvedError() --- .../server/adapter/HttpWebHandlerAdapter.java | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/web/server/adapter/HttpWebHandlerAdapter.java b/spring-web/src/main/java/org/springframework/web/server/adapter/HttpWebHandlerAdapter.java index 8f4788adaf..403fc2c136 100644 --- a/spring-web/src/main/java/org/springframework/web/server/adapter/HttpWebHandlerAdapter.java +++ b/spring-web/src/main/java/org/springframework/web/server/adapter/HttpWebHandlerAdapter.java @@ -267,12 +267,12 @@ public class HttpWebHandlerAdapter extends WebHandlerDecorator implements HttpHa ServerHttpResponse response = exchange.getResponse(); String logPrefix = exchange.getLogPrefix(); - if (isDisconnectedClientError(ex)) { - // Request handling error (e.g. remote call), if we manage to set the status.. - if (response.setStatusCode(HttpStatus.INTERNAL_SERVER_ERROR)) { - logger.error(logPrefix + "500 Server Error for " + formatRequest(request), ex); - return Mono.empty(); - } + // Request handling error (e.g. remote call), if we manage to set the status.. + if (response.setStatusCode(HttpStatus.INTERNAL_SERVER_ERROR)) { + logger.error(logPrefix + "500 Server Error for " + formatRequest(request), ex); + return Mono.empty(); + } + else if (isDisconnectedClientError(ex)) { if (lostClientLogger.isTraceEnabled()) { lostClientLogger.trace(logPrefix + "Client went away", ex); } @@ -282,10 +282,6 @@ public class HttpWebHandlerAdapter extends WebHandlerDecorator implements HttpHa } return Mono.empty(); } - else if (response.setStatusCode(HttpStatus.INTERNAL_SERVER_ERROR)) { - logger.error(logPrefix + "500 Server Error for " + formatRequest(request), ex); - return Mono.empty(); - } else { // After the response is committed, propagate errors to the server... logger.error(logPrefix + "Error [" + ex + "] for " + formatRequest(request) + From 780eef8d367a1cf9322ffa3d9e73ea64ba7c7236 Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Wed, 23 Oct 2019 17:31:59 +0100 Subject: [PATCH 2/2] Update comment in HttpWebHandlerAdapter See gh-23780 --- .../web/server/adapter/HttpWebHandlerAdapter.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spring-web/src/main/java/org/springframework/web/server/adapter/HttpWebHandlerAdapter.java b/spring-web/src/main/java/org/springframework/web/server/adapter/HttpWebHandlerAdapter.java index 403fc2c136..bd3edea6ac 100644 --- a/spring-web/src/main/java/org/springframework/web/server/adapter/HttpWebHandlerAdapter.java +++ b/spring-web/src/main/java/org/springframework/web/server/adapter/HttpWebHandlerAdapter.java @@ -267,7 +267,9 @@ public class HttpWebHandlerAdapter extends WebHandlerDecorator implements HttpHa ServerHttpResponse response = exchange.getResponse(); String logPrefix = exchange.getLogPrefix(); - // Request handling error (e.g. remote call), if we manage to set the status.. + // Sometimes a remote call error can look like a disconnected client. + // Try to set the response first before the "isDisconnectedClient" check. + if (response.setStatusCode(HttpStatus.INTERNAL_SERVER_ERROR)) { logger.error(logPrefix + "500 Server Error for " + formatRequest(request), ex); return Mono.empty();