hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Allen (JIRA)" <j...@apache.org>
Subject [jira] [Reopened] (HTTPCORE-455) The client does not check if the IO thread is alive
Date Tue, 25 Apr 2017 02:03:04 GMT

     [ https://issues.apache.org/jira/browse/HTTPCORE-455?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Allen reopened HTTPCORE-455:
----------------------------

The latest version of httpcore-nio in maven repository is 4.4.6,the worker thread catch
exception but not throwable, and the connecting thread just checked whether an exception happened。Once
an unknown error happens, the worker thread will stop but the connecting thread will never
know,it seems that the problem dose not be fixed in the 4.4.6。

> The client does not check if the IO thread is alive
> ---------------------------------------------------
>
>                 Key: HTTPCORE-455
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-455
>             Project: HttpComponents HttpCore
>          Issue Type: Bug
>         Environment: Mac OSX, Java 8
>            Reporter: Allen
>             Fix For: 4.4.7, 5.0-alpha3
>
>
> When I developed with the latest HttpAsyncclient, it was hard for me to know whether
the IO thread in BaseIOReactor was alive。 For example, if I throw an error in the callback,the
IO thread will terminate,but the connecting thread  will not check if the IO thread is alive,and
will still add new  channels to the dispatcher。
> The java code:
>  CloseableHttpAsyncClient client = HttpAsyncClients.custom().build();
>         client.start();
>         HttpUriRequest getRequest = new HttpGet("www.google.com");
>         client.execute(getRequest, new FutureCallback<HttpResponse>() {
>             @Override
>             public void completed(HttpResponse result) {
>                 throw new StackOverflowError();
>             }
>             @Override
>             public void failed(Exception ex) {
>             }
>             @Override
>             public void cancelled() {
>             }
>         });
>         for(int i = 0 ; i < 100 ; i++){
>             client.execute(getRequest, new FutureCallback<HttpResponse>() {
>                 @Override
>                 public void completed(HttpResponse result) {
>                     
>                 }
>                 @Override
>                 public void failed(Exception ex) {
>                 }
>                 @Override
>                 public void cancelled() {
>                 }
>             });
>         }
> one of the IO threads is dead,but the java Error dose not be caught,and hte client
will continue work and add new channels to the dispather, but the newChannel queue will be
not be consumed, so I want to know is there any method to deal with this situation.
> Thanks



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org


Mime
View raw message