From b32ac563738dd532851f2ce991241a1c33904de2 Mon Sep 17 00:00:00 2001 From: Andreas Fankhauser <23085769+hiddenalpha@users.noreply.github.com> Date: Mon, 17 Jun 2024 11:00:43 +0200 Subject: [PATCH] [SDCISA-16207] Respond failure immediately in place of waiting for a timeout. Related: SDCISA-15633, SDCISA-15833, SDCISA-16147, SDCISA-16293, SDCISA-16207, SDCISA-16197, SDCISA-16194, SDCISA-16204,https://github.com/swisspost/vertx-redisques/issues/170, https://github.com/swisspost/vertx-redisques/pull/177, https://github.com/swisspost/vertx-rest-storage/pull/186, #577, https://github.com/swisspost/vertx-redisques/pull/181, #493, https://github.com/swisspost/vertx-rest-storage/issues/188, #583, #584, https://github.com/swisspost/vertx-redisques/issues/186, #593 --- .../org/swisspush/gateleen/routing/Forwarder.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/gateleen-routing/src/main/java/org/swisspush/gateleen/routing/Forwarder.java b/gateleen-routing/src/main/java/org/swisspush/gateleen/routing/Forwarder.java index f5485552..3a049add 100755 --- a/gateleen-routing/src/main/java/org/swisspush/gateleen/routing/Forwarder.java +++ b/gateleen-routing/src/main/java/org/swisspush/gateleen/routing/Forwarder.java @@ -503,7 +503,7 @@ private Handler> getAsyncHttpClientResponseHandl final LoggingWriteStream loggingWriteStream = new LoggingWriteStream(req.response(), loggingHandler, false); final Pump pump = Pump.pump(cRes, loggingWriteStream); - cRes.endHandler(v -> { + Handler cResEndHandler = v -> { try { req.response().end(); @@ -516,7 +516,14 @@ private Handler> getAsyncHttpClientResponseHandl // ignore because maybe already closed } vertx.runOnContext(event -> loggingHandler.log()); - }); + }; + try { + cRes.endHandler(cResEndHandler); + } catch (IllegalStateException ex) { + log.warn("cRes.endHandler() failed", ex); + respondError(req, StatusCode.INTERNAL_SERVER_ERROR); + return; + } pump.start(); Runnable unpump = () -> {