[ 
https://issues.apache.org/jira/browse/HTTPCORE-165?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12612814#action_12612814
 ] 

Oleg Kalnichevski commented on HTTPCORE-165:
--------------------------------------------

OK. Now I understand the problem a little better. I think IO reactor should 
never pass CancelledKeyException to the exception handler. 
CancelledKeyExceptions must always be handled internally. This will also 
eliminate the need for #handleTerminatingThrowable method. Could you live with 
this approach?

> Also the IOReactor just quietly shutsdown with out saying why,.. 

This certainly should not be happening. If I/O reactor terminates abnormally it 
is definitely expected to throw either an IOReactorException or a 
RuntimeException. Could you please give some more details as to when such 
condition can occur?

Oleg

> Poor handling of CancelledKeyException with custom IOReactorExceptionHandler 
> -----------------------------------------------------------------------------
>
>                 Key: HTTPCORE-165
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-165
>             Project: HttpComponents HttpCore
>          Issue Type: Bug
>          Components: HttpCore NIO
>    Affects Versions: 4.0-beta2
>            Reporter: Patrick Moore
>
> IOReactorExceptionHandler documentation for handle(RuntimeException ex) is 
> misleading. Specifically the documentation says :
>      @return <code>true</code> if it is safe to ignore the exception 
>      and continue execution of the I/O reactor; <code>false</code> if the
>      I/O reactor must throw [EMAIL PROTECTED] RuntimeException} and terminate 
> However, a CancelledKeyException should be rethrown because the BaseIOReactor 
> and the AbstractIOReactor expect and handle CancelledKeyException correctly.
> BUT -- NOT always.
> Looking at the call stack for where 
> IOReactorExceptionHandler.handle(RuntimeException) is called reveals some 
> problems.
> If a custom IOReactorExceptionHandler was to return false (indicating that 
> the CanceledKeyException was to be rethrown or to do the rethrow itself) 
> WOULD result in the IOReactor being shutdown:
>   BaseIOReactor.sessionClosed(IOSession)
>   BaseIOReactor.timeoutCheck(SelectionKey, long)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to