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

Oleg Kalnichevski resolved HTTPCORE-29.
---------------------------------------

    Resolution: Fixed

Anders,

I committed the following changes to the SVN trunk:

(1) I/O reactor implementations now re-throw all I/O exceptions I thought were 
fatal as IOReactorException (subclass of IOException) in order to clearly 
demarcate them as such
(2) I went thought the whole code base and took extra case all non-fatal I/O 
exceptions were passed onto a user defined event dispatcher
(3) The default implementation of the listening I/O reactor now uses an 
optional exception handler to determine whether an I/O exception thrown while 
accepting a new connection is fatal or not

Please review the changes and If you think I missed some cases where legitimate 
non-fatal I/O exceptions can occur, please do let me know

Oleg


> DefaultConnectingIOReactor.execute propagates IOException, but isn't really 
> re-callable
> ---------------------------------------------------------------------------------------
>
>                 Key: HTTPCORE-29
>                 URL: https://issues.apache.org/jira/browse/HTTPCORE-29
>             Project: HttpComponents Core
>          Issue Type: Bug
>          Components: HttpCore NIO
>    Affects Versions: 4.0-alpha3
>            Reporter: Anders Wallgren
>         Assigned To: Oleg Kalnichevski
>             Fix For: 4.0-alpha4
>
>
> I'm trying to figure out what to do when DefaultConnectingIOReactor.execute 
> throws an exception.  It doesn't seem like I can just call execute() again 
> after handling the exception, since that will recreate all the state in DCIOR.
> Seems to me that there needs to be a different way to handle exceptions, or 
> the execute method should be callable more than once.
> For reference, here's the stack trace of an exception:
> {code}
> 2007-01-23T16:23:19.800 | ERROR | urceInvoker |                               
>                 | NewResourceInvoker             | Invalid argument: 
> sun.nio.ch.Net.setIntOption
> java.net.SocketException: Invalid argument: sun.nio.ch.Net.setIntOption
>       at sun.nio.ch.Net.setIntOption0(Native Method)
>       at sun.nio.ch.Net.setIntOption(Net.java:154)
>       at sun.nio.ch.SocketChannelImpl$1.setInt(SocketChannelImpl.java:406)
>       at sun.nio.ch.SocketOptsImpl.setBoolean(SocketOptsImpl.java:38)
>       at sun.nio.ch.SocketOptsImpl$IP$TCP.noDelay(SocketOptsImpl.java:284)
>       at sun.nio.ch.OptionAdaptor.setTcpNoDelay(OptionAdaptor.java:48)
>       at sun.nio.ch.SocketAdaptor.setTcpNoDelay(SocketAdaptor.java:268)
>       at 
> org.apache.http.nio.impl.reactor.DefaultConnectingIOReactor.prepareSocket(DefaultConnectingIOReactor.java:171)
>       at 
> org.apache.http.nio.impl.reactor.DefaultConnectingIOReactor.processEvent(DefaultConnectingIOReactor.java:158)
>       at 
> org.apache.http.nio.impl.reactor.DefaultConnectingIOReactor.processEvents(DefaultConnectingIOReactor.java:134)
>       at 
> org.apache.http.nio.impl.reactor.DefaultConnectingIOReactor.execute(DefaultConnectingIOReactor.java:94)
>       at 
> com.electriccloud.commander.domain.NewResourceInvoker.innerRun(NewResourceInvoker.java:304)
>       at 
> com.electriccloud.util.FailsafeRunnable.run(FailsafeRunnable.java:105)
>       at java.lang.Thread.run(Thread.java:619)
> {code}

-- 
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