[ 
https://issues.apache.org/jira/browse/HTTPASYNC-104?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16068502#comment-16068502
 ] 

James Beckett commented on HTTPASYNC-104:
-----------------------------------------

I've seen this very recently *on Linux* with HttpAsyncClient 4.1, and it 
_appears_ to be due to an hours-earlier OOM error (heap exhaustion) unrelated 
to HttpComponents; several other components failed relatively gracefully, where 
HttpAsyncClient went into this sticky failure state. To be fair, that might be 
the most graceful thing it can do, but perhaps the documentation could reflect 
a way of detecting the state and recovering, if it can't be made to recover 
automatically. Would the {{isRunning()}} and {{start()}} methods be appropriate 
for this (on CloseableHttpAsyncClient)?

Additionally, should the case be reported via the {{FutureCallback<>}}'s 
{{failed(Exception ex)}} instead of being thrown by {{execute()}}, which might 
allow for less intrusive handling?

(In my case, the AsyncClient is being used via a third party class 
([Elasticsearch 
RESTClient|https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/index.html])
 which would likely require them to make any such changes)

{code}
2017-06-23 20:41:35.765 ERROR 20131 ... OOM somewhere between here and
2017-06-23 21:35:58.412 ERROR 20131 ... here

2017-06-24 00:59:39.016 ERROR 20131 --- [-8080-exec-2877] (...) due to 
exception [Request cannot be executed; I/O reactor status: STOPPED]
java.lang.IllegalStateException: Request cannot be executed; I/O reactor 
status: STOPPED
        at org.apache.http.util.Asserts.check(Asserts.java:46) 
~[httpcore-4.4.6.jar:4.4.6]
        at 
org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase.ensureRunning(CloseableHttpAsyncClientBase.java:90)
 ~[httpasyncclient-4.1.jar:4.1]
        at 
org.apache.http.impl.nio.client.InternalHttpAsyncClient.execute(InternalHttpAsyncClient.java:123)
 ~[httpasyncclient-4.1.jar:4.1]
        at 
org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:67)
 ~[httpasyncclient-4.1.jar:4.1]
        at 
org.elasticsearch.client.RestClient.performRequestAsync(RestClient.java:300) 
~[rest-5.2.0.jar:5.2.0]
        at 
org.elasticsearch.client.RestClient.performRequestAsync(RestClient.java:290) 
~[rest-5.2.0.jar:5.2.0]
        at 
org.elasticsearch.client.RestClient.performRequest(RestClient.java:211) 
~[rest-5.2.0.jar:5.2.0]
        at 
org.elasticsearch.client.RestClient.performRequest(RestClient.java:184) 
~[rest-5.2.0.jar:5.2.0]
        at 
org.elasticsearch.client.RestClient.performRequest(RestClient.java:163) 
~[rest-5.2.0.jar:5.2.0]
        at (...).getConfig(...:222) ~[...]
{code}

> IlligalStateException when using the same client for mutiple requests.
> ----------------------------------------------------------------------
>
>                 Key: HTTPASYNC-104
>                 URL: https://issues.apache.org/jira/browse/HTTPASYNC-104
>             Project: HttpComponents HttpAsyncClient
>          Issue Type: Bug
>    Affects Versions: 4.1.1
>         Environment: JDK 1.6
>            Reporter: maria deepak marneni
>         Attachments: eclipseOutput-1, eclipseOutput.txt, 
> HttpAsyncResponseHandler.java, HttpRequestPublisherTester.java
>
>
> In a multi thread environment where all requests use the same client. 
> CloseableHttpAsyncClient throws illegalStateException when execute method is 
> called.
> Exception in thread "Thread-91" java.lang.IllegalStateException: Request 
> cannot be executed; I/O reactor status: STOPPED
>       at org.apache.http.util.Asserts.check(Asserts.java:46)
>       at 
> org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase.ensureRunning(CloseableHttpAsyncClientBase.java:90)
>       at 
> org.apache.http.impl.nio.client.InternalHttpAsyncClient.execute(InternalHttpAsyncClient.java:123)
>       at 
> org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:74)
>       at 
> org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:107)
>       at 
> org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:91)
>       at 
> domain.hardware.http.HttpRequestPublisher1.execute(HttpRequestPublisherTester.java:282)
>       at 
> domain.hardware.http.HttpHandler1.makeAsyncHttpGetRequest(HttpRequestPublisherTester.java:179)
>       at 
> domain.hardware.http.HttpRequestPublisherTester.run(HttpRequestPublisherTester.java:48)
>       at java.lang.Thread.run(Thread.java:662)
> Exception in thread "Thread-46" java.lang.IllegalStateException: Request 
> cannot be executed; I/O reactor status: STOPPED
>       at org.apache.http.util.Asserts.check(Asserts.java:46)
>       at 
> org.apache.http.impl.nio.client.CloseableHttpAsyncClientBase.ensureRunning(CloseableHttpAsyncClientBase.java:90)
>       at 
> org.apache.http.impl.nio.client.InternalHttpAsyncClient.execute(InternalHttpAsyncClient.java:123)
>       at 
> org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:74)
>       at 
> org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:107)
>       at 
> org.apache.http.impl.nio.client.CloseableHttpAsyncClient.execute(CloseableHttpAsyncClient.java:91)
>       at 
> domain.hardware.http.HttpRequestPublisher1.execute(HttpRequestPublisherTester.java:282)
>       at 
> domain.hardware.http.HttpHandler1.makeAsyncHttpGetRequest(HttpRequestPublisherTester.java:179)
>       at 
> domain.hardware.http.HttpRequestPublisherTester.run(HttpRequestPublisherTester.java:48)
>       at java.lang.Thread.run(Thread.java:662)



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to