[
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]