[
https://issues.apache.org/jira/browse/HTTPCLIENT-1944?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16585234#comment-16585234
]
Ryan Schmitt commented on HTTPCLIENT-1944:
------------------------------------------
In that case, I would imagine that the other response futures would have to be
failed, and then the relevant retry logic (if any) would take over. Would this
be any different from how socket timeouts are handled?
> Async request aborts working on HTTP/2, but not HTTP/1.1
> --------------------------------------------------------
>
> Key: HTTPCLIENT-1944
> URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1944
> Project: HttpComponents HttpClient
> Issue Type: Bug
> Affects Versions: 5.0 Beta1
> Reporter: Ryan Schmitt
> Priority: Major
>
> I have some test code that looks approximately like the following:
> {code:java}
> client = useHttp2 ? HttpAsyncClients.createHttp2Default() :
> HttpAsyncClients.createDefault();
> client.start();
> AsyncEntityProducer requestBody = ...; // A slow, endless stream of data
> AsyncRequestProducer post = AsyncRequestBuilder.create("POST")
> .setUri(endpoint)
> .setEntity(requestBody)
> .build();
> Future<SimpleHttpResponse> future = client.execute(post,
> SimpleResponseConsumer.create(), new FutureCallback<SimpleHttpResponse>() {
> @Override
> public void completed(SimpleHttpResponse result) {
> System.out.println("Request future completed");
> }
> @Override
> public void failed(Exception ex) {
> System.out.println("Request future failed");
> }
> @Override
> public void cancelled() {
> System.out.println("Request future cancelled");
> }
> });
> Thread.sleep(5_000);
> future.cancel(true);
> {code}
> What I'm observing is that request cancellation works immediately with the
> HTTP/2 request, but doesn't work at all with the HTTP/1.1 request, which runs
> until it times out. My own FutureCallback gets notified of the cancellation
> of the request, but nothing else takes place within the client itself; the
> Cancellable associated with the request at the time of cancellation is a
> NOOP_CANCELLABLE, whereas the HTTP/2 request has a callback installed that
> aborts the underlying h2 stream.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]