You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hc.apache.org by "James Beckett (JIRA)" <ji...@apache.org> on 2017/06/29 15:48:00 UTC
[jira] [Commented] (HTTPASYNC-104) IlligalStateException when using
the same client for mutiple requests.
[ 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: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org