From bd57642ab2d5451a5652e0cf2f318f1cd9c402c1 Mon Sep 17 00:00:00 2001 From: Jose Date: Mon, 5 Dec 2022 09:33:57 +0100 Subject: [PATCH] Revert "Reactive Rest Client closing connections after server failures" This reverts commit 23f9abc6e13994edb8b3ab99cf5cf66abb3c604a. --- .../client/reactive/BasicRestClientTest.java | 22 --------------- .../rest/client/reactive/HelloClient2.java | 7 ----- .../rest/client/reactive/HelloResource.java | 19 ------------- .../handlers/ClientSendRequestHandler.java | 27 ++++++++----------- 4 files changed, 11 insertions(+), 64 deletions(-) diff --git a/extensions/resteasy-reactive/rest-client-reactive/deployment/src/test/java/io/quarkus/rest/client/reactive/BasicRestClientTest.java b/extensions/resteasy-reactive/rest-client-reactive/deployment/src/test/java/io/quarkus/rest/client/reactive/BasicRestClientTest.java index ab885f48c3866..3148c53acf512 100644 --- a/extensions/resteasy-reactive/rest-client-reactive/deployment/src/test/java/io/quarkus/rest/client/reactive/BasicRestClientTest.java +++ b/extensions/resteasy-reactive/rest-client-reactive/deployment/src/test/java/io/quarkus/rest/client/reactive/BasicRestClientTest.java @@ -1,10 +1,7 @@ package io.quarkus.rest.client.reactive; -import static io.restassured.RestAssured.given; import static org.assertj.core.api.Assertions.assertThat; -import static org.awaitility.Awaitility.await; -import java.time.Duration; import java.util.Map; import java.util.Set; @@ -75,23 +72,4 @@ void shouldMapQueryParamsWithSpecialCharacters() { assertThat(map.get("p5")).isEqualTo("5"); assertThat(map.get("p6")).isEqualTo("6"); } - - /** - * Test to reproduce https://github.com/quarkusio/quarkus/issues/28818. - */ - @Test - void shouldCloseConnectionsWhenFailures() { - // It's using 30 seconds because it's the default timeout to release connections. This timeout should not be taken into - // account when there are failures, and we should be able to call 3 times to the service without waiting. - await().atMost(Duration.ofSeconds(30)) - .until(() -> { - for (int call = 0; call < 3; call++) { - given() - .when().get("/hello/callClientForImageInfo") - .then() - .statusCode(500); - } - return true; - }); - } } diff --git a/extensions/resteasy-reactive/rest-client-reactive/deployment/src/test/java/io/quarkus/rest/client/reactive/HelloClient2.java b/extensions/resteasy-reactive/rest-client-reactive/deployment/src/test/java/io/quarkus/rest/client/reactive/HelloClient2.java index 2c2c31eab3473..660c55a0260d9 100644 --- a/extensions/resteasy-reactive/rest-client-reactive/deployment/src/test/java/io/quarkus/rest/client/reactive/HelloClient2.java +++ b/extensions/resteasy-reactive/rest-client-reactive/deployment/src/test/java/io/quarkus/rest/client/reactive/HelloClient2.java @@ -4,7 +4,6 @@ import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; -import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import org.eclipse.microprofile.rest.client.inject.RegisterRestClient; @@ -24,10 +23,4 @@ public interface HelloClient2 { @GET @Path("delay") Uni delay(); - - @POST - @Path("/imageInfo") - @Consumes("image/gif") - @Produces(MediaType.TEXT_PLAIN) - String imageInfo(byte[] imageFile); } diff --git a/extensions/resteasy-reactive/rest-client-reactive/deployment/src/test/java/io/quarkus/rest/client/reactive/HelloResource.java b/extensions/resteasy-reactive/rest-client-reactive/deployment/src/test/java/io/quarkus/rest/client/reactive/HelloResource.java index 65b0dc25760c7..f298c0b303011 100644 --- a/extensions/resteasy-reactive/rest-client-reactive/deployment/src/test/java/io/quarkus/rest/client/reactive/HelloResource.java +++ b/extensions/resteasy-reactive/rest-client-reactive/deployment/src/test/java/io/quarkus/rest/client/reactive/HelloResource.java @@ -78,23 +78,4 @@ public Uni delay() { return Uni.createFrom().item("Hello") .onItem().delayIt().by(Duration.ofMillis(500)); } - - @Path("callClientForImageInfo") - @GET - public String callClientForImageInfo() { - int size = 1024 * 1024 * 5; - - byte[] buffer = new byte[size]; - - //Should provoke 415 Unsupported Media Type - return client2.imageInfo(buffer); - } - - @POST - @Consumes({ "image/jpeg", "image/png" }) - @Path("/imageInfo") - @Produces(MediaType.TEXT_PLAIN) - public String imageInfo(byte[] imageFile) { - throw new IllegalStateException("This method should never be invoked"); - } } diff --git a/independent-projects/resteasy-reactive/client/runtime/src/main/java/org/jboss/resteasy/reactive/client/handlers/ClientSendRequestHandler.java b/independent-projects/resteasy-reactive/client/runtime/src/main/java/org/jboss/resteasy/reactive/client/handlers/ClientSendRequestHandler.java index 2bf3f434ecb41..8d1d7d62c3cbb 100644 --- a/independent-projects/resteasy-reactive/client/runtime/src/main/java/org/jboss/resteasy/reactive/client/handlers/ClientSendRequestHandler.java +++ b/independent-projects/resteasy-reactive/client/runtime/src/main/java/org/jboss/resteasy/reactive/client/handlers/ClientSendRequestHandler.java @@ -20,7 +20,6 @@ import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.MultivaluedMap; -import javax.ws.rs.core.Response; import javax.ws.rs.core.Variant; import org.jboss.logging.Logger; @@ -244,11 +243,6 @@ public void handle(HttpClientResponse clientResponse) { } } - if (Response.Status.Family.familyOf(status) != Response.Status.Family.SUCCESSFUL) { - httpClientRequest.connection().close(); - requestContext.resume(); - } - if (isResponseMultipart(requestContext)) { QuarkusMultipartResponseDecoder multipartDecoder = new QuarkusMultipartResponseDecoder( clientResponse); @@ -372,16 +366,17 @@ public void handle(Buffer buffer) { requestContext.resume(t); } } - }).onFailure(new Handler<>() { - @Override - public void handle(Throwable failure) { - if (failure instanceof IOException) { - requestContext.resume(new ProcessingException(failure)); - } else { - requestContext.resume(failure); - } - } - }); + }) + .onFailure(new Handler<>() { + @Override + public void handle(Throwable failure) { + if (failure instanceof IOException) { + requestContext.resume(new ProcessingException(failure)); + } else { + requestContext.resume(failure); + } + } + }); } private boolean isResponseMultipart(RestClientRequestContext requestContext) {