[ 
https://issues.apache.org/jira/browse/HTTPCORE-336?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Oleg Kalnichevski updated HTTPCORE-336:
---------------------------------------

    Fix Version/s: 4.3-beta2

We just had a release a few days back. It is a pity this issue did not get 
raised a few days earlier, as I was not going to cut any more releases off the 
4.2.x branch. HttpAsyncClient is soon to get upgraded to HttpCore 4.3-beta1.

Oleg
                
> Unhandled CancelledKeyException leads to a shutdown of the underlying 
> IOReactor
> -------------------------------------------------------------------------------
>
>                 Key: HTTPCORE-336
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-336
>             Project: HttpComponents HttpCore
>          Issue Type: Bug
>          Components: HttpCore NIO
>    Affects Versions: 4.2.3
>         Environment: HttpAsyncClient 4.0-beta3
>            Reporter: Thomas Dudek
>             Fix For: 4.3-beta2
>
>
> An unhandled {{java.nio.channels.CancelledKeyException}} in 
> {{AbstractIOReactor#processNewChannels()}} leads to a shutdown of the 
> underlying {{IOReactor}}.
> Here's the stacktrace:
> {noformat}
> org.apache.http.nio.reactor.IOReactorException: I/O dispatch worker 
> terminated abnormally
>  at 
> org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor.execute(AbstractMultiworkerIOReactor.java:382)
>  at 
> org.apache.http.impl.nio.conn.PoolingClientAsyncConnectionManager.execute(PoolingClientAsyncConnectionManager.java:108)
>  at 
> org.apache.http.impl.nio.client.AbstractHttpAsyncClient.doExecute(AbstractHttpAsyncClient.java:464)
>  at 
> org.apache.http.impl.nio.client.AbstractHttpAsyncClient.access$000(AbstractHttpAsyncClient.java:101)
>  at 
> org.apache.http.impl.nio.client.AbstractHttpAsyncClient$1.run(AbstractHttpAsyncClient.java:485)
> Caused by: java.nio.channels.CancelledKeyException
>  at sun.nio.ch.SelectionKeyImpl.ensureValid(SelectionKeyImpl.java:73)
>  at sun.nio.ch.SelectionKeyImpl.interestOps(SelectionKeyImpl.java:77)
>  at 
> org.apache.http.impl.nio.reactor.IOSessionImpl.<init>(IOSessionImpl.java:94)
>  at 
> org.apache.http.impl.nio.reactor.AbstractIOReactor.processNewChannels(AbstractIOReactor.java:406)
>  at 
> org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:291)
>  at 
> org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:106)
>  at 
> org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:604)
>  at java.lang.Thread.run(Thread.java:722)
> {noformat}
> This happens regularly under non-reproducible circumstances. 
> The particular line of code where the exception is not handled is 
> {{AbstractIOReactor.java:406}}. The exception is thrown in the constructor of 
> {{IOSessionImpl.java:94}} in order of a canceled {{SelectionKey}}.
> As a result of this unhandled exception, the {{AbstractMultiworkerIOReactor}} 
> throws a {{IOReactorException}} in {{AbstractMultiworkerIOReactor.java:382}} 
> and is finally being shutdown. 
> Since this component is used by {{HttpAsyncClient}}, after this exception the 
> instance of {{HttpAsyncClient}} is no longer usable.
> The following patch works for us ({{AbstractIOReactor.java:406}}): 
> {noformat}
> IOSession session = null;
> try {
>       session = new IOSessionImpl(key, interestOpsCallback, 
> sessionClosedCallback);
> } catch (CancelledKeyException ex) {
>       key.attach(null);
>       return;
> }
> {noformat}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

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

Reply via email to