java.lang.IllegalStateException: Request cannot be executed; I/O reactor status: STOPPED

社会主义新天地 提交于 2020-01-01 04:19:07

问题


I have a service that is expected to execute requests at ~5 or more requests/min. This service depends on Apache AsyncHttpClient. After every few minutes, the clients hits some condition which causes java.lang.IllegalStateException: Request cannot be executed; I/O reactor status: STOPPED. All requests to the client start failing with same exception message. After service is restarted, this cycle repeats.

It is really hard to debug this problem as the request execution failure surprisingly does not cause a callback to the failed() method of the AsyncResponse.

From what I could gather, there has been a fix HTTPCORE-370 in HttpCore NIO which solved a similar problem in 4.3.2. I am using the following version -

commons-httpclient-3.1.jar
httpasyncclient-4.1.1.jar
httpcore-4.4.4.jar
httpcore-nio-4.4.4.jar

Yet seeing this problem.


回答1:


I've been dealing with this same exception in my application, and I finally found a helpful suggestion from this post - http://httpcomponents.10934.n7.nabble.com/I-O-reactor-status-STOPPED-td29059.html

You can use #getAuditLog() method of the I/O reactor to find out exactly what exception caused it to terminate.

If you keep a reference to your ConnectionManager's IOReactor, you can call this method to get insight into the actual problem:

http://hc.apache.org/httpcomponents-core-4.4.x/httpcore-nio/apidocs/org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor.html#getAuditLog()

Turns out I was doing something incredibly stupid in my own code. But I couldn't figure it out until I read the audit log.




回答2:


If you see OutOfMemoryError before this, try this

-XX:MaxDirectMemorySize=512M

See https://issues.apache.org/jira/browse/HTTPASYNC-104



来源:https://stackoverflow.com/questions/35350376/java-lang-illegalstateexception-request-cannot-be-executed-i-o-reactor-status

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!