[
https://issues.apache.org/jira/browse/HTTPASYNC-155?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16979420#comment-16979420
]
Anurag Agarwal commented on HTTPASYNC-155:
------------------------------------------
I guess nothing else should trigger runtime since rest other methods executed
above / below are just referencing one thing or the other. Do you think of any
possibility where it can come because I have deployed with the change earlier
now.
> I/O Reactor Shutdown issues due to race condition in
> AbstractClientExchangeHandler
> ----------------------------------------------------------------------------------
>
> Key: HTTPASYNC-155
> URL: https://issues.apache.org/jira/browse/HTTPASYNC-155
> Project: HttpComponents HttpAsyncClient
> Issue Type: Bug
> Reporter: Anurag Agarwal
> Priority: Major
>
> {code:java}
> HTTP GET http://localhost:8080/AdExchange/healthcheck: 500 Output: Health
> check failed because I/O reactor status STOPPED
> Time: Fri Nov 15 15:52:38 UTC 2019
> org.apache.http.impl.conn.ConnectionShutdownException
> at
> org.apache.http.impl.nio.conn.CPoolProxy.getValidConnection(CPoolProxy.java:74)
> at
> org.apache.http.impl.nio.conn.CPoolProxy.getContext(CPoolProxy.java:219)
> at
> org.apache.http.impl.nio.client.AbstractClientExchangeHandler.connectionAllocated(AbstractClientExchangeHandler.java:328)
> at
> org.apache.http.impl.nio.client.AbstractClientExchangeHandler.access$000(AbstractClientExchangeHandler.java:62)
> at
> org.apache.http.impl.nio.client.AbstractClientExchangeHandler$1.completed(AbstractClientExchangeHandler.java:387)
> at
> org.apache.http.impl.nio.client.AbstractClientExchangeHandler$1.completed(AbstractClientExchangeHandler.java:383)
> at
> org.apache.http.concurrent.BasicFuture.completed(BasicFuture.java:122)
> at
> org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager$1.completed(PoolingNHttpClientConnectionManager.java:306)
> at
> org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager$1.completed(PoolingNHttpClientConnectionManager.java:297)
> at
> org.apache.http.concurrent.BasicFuture.completed(BasicFuture.java:122)
> at
> org.apache.http.nio.pool.RouteSpecificPool.completed(RouteSpecificPool.java:146)
> at
> org.apache.http.nio.pool.AbstractNIOConnPool.requestCompleted(AbstractNIOConnPool.java:563)
> at
> org.apache.http.nio.pool.AbstractNIOConnPool$InternalSessionRequestCallback.completed(AbstractNIOConnPool.java:883)
> at
> org.apache.http.impl.nio.reactor.SessionRequestImpl.completed(SessionRequestImpl.java:154)
> at
> org.apache.http.impl.nio.reactor.AbstractIOReactor.processNewChannels(AbstractIOReactor.java:426)
> at
> org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:287)
> at
> org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104)
> at
> org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:591)
> at java.lang.Thread.run(Thread.java:748)
> {code}
> I am currently not able to identify the excat source of this issue. But
> somewhere I am getting a hint that before execution of line
> AbstractClientExchnageHandler:328
> {noformat}
> final HttpContext context = managedConn.getContext();
> {noformat}
> Cancel is called which discards the connection and detach the pool entry from
> the proxy. It was difficult to come up with the exact source since there are
> many places from where dicard connection and release connection is being
> called. But since only after adding the cancel workflow such errors are
> coming up, I tried to take that road and it seems possible that the race
> condition can indeed happen.
> We can notice in that method just few lines above this line we are checking
> if the handler is closed or not but even that line may have passed after
> which the connection was actually closed. It was just closed before the
> execution of this line as the line just above this line still has entry or
> else NullPointerException would have come.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]