[
https://issues.apache.org/jira/browse/HTTPCLIENT-2425?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Oleg Kalnichevski resolved HTTPCLIENT-2425.
-------------------------------------------
Resolution: Invalid
> RequestConfig#responseTimeout is not enforced for HTTP/2 streams
> ----------------------------------------------------------------
>
> Key: HTTPCLIENT-2425
> URL: https://issues.apache.org/jira/browse/HTTPCLIENT-2425
> Project: HttpComponents HttpClient
> Issue Type: Bug
> Components: HttpClient (async)
> Affects Versions: 5.6.2
> Environment: HttpClient Version: 5.6.2
> Java Version: OpenJDK 17+
> Protocol: HTTP/2 (h2)
> Reporter: yhzdys
> Priority: Major
>
> h2. Description
> {{*RequestConfig#responseTimeout*}} is not enforced when using
> {{CloseableHttpAsyncClient}} over HTTP/2. The configured timeout value is
> ignored, and the request completes only after receiving the full server
> response. This behavior does not occur under HTTP/1.1.
> h2. Minimal Reproducible Example
>
> {code:java}
> import org.apache.hc.client5.http.async.methods.SimpleHttpRequest;
> import org.apache.hc.client5.http.async.methods.SimpleHttpResponse;
> import org.apache.hc.client5.http.config.RequestConfig;
> import org.apache.hc.client5.http.impl.async.CloseableHttpAsyncClient;
> import org.apache.hc.client5.http.impl.async.HttpAsyncClientBuilder;
> import org.apache.hc.core5.util.Timeout;
> import org.junit.jupiter.api.Test;
> public class ResponseTimeoutTest {
> @Test
> public void testResponseTimeoutWithH2() throws Exception {
> CloseableHttpAsyncClient client =
> HttpAsyncClientBuilder.create().build();
> client.start();
>
> RequestConfig config = RequestConfig.custom()
> .setResponseTimeout(Timeout.ofSeconds(1L))
> .build();
>
> SimpleHttpRequest request = SimpleHttpRequest.create("GET",
> "https://httpbingo.org/delay/3");
> request.setConfig(config);
> // Expected: Should throw timeout exception after ~1 second
> // Actual: Returns successfully after ~3 seconds
> SimpleHttpResponse response = client.execute(request, null).get();
> System.out.println(response);
> }
> }
> {code}
> h2. Expected Behavior
> The future should complete exceptionally with a timeout-related exception
> after approximately 1 second, as defined by
> {*}RequestConfig#responseTimeout{*}.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]