You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hc.apache.org by "Oleg Kalnichevski (JIRA)" <ji...@apache.org> on 2007/01/24 10:33:49 UTC

[jira] Resolved: (HTTPCORE-29) DefaultConnectingIOReactor.execute propagates IOException, but isn't really re-callable

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

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

       Resolution: Fixed
    Fix Version/s: 4.0-alpha4

Anders,

I have applied the following patch to fix the problem. Please review and let me know if you find the fix sufficient. 

Oleg


Index: /home/oleg/src/apache.org/jakarta/httpcomponents/httpcore/module-nio/src/main/java/org/apache/http/nio/impl/reactor/DefaultConnectingIOReactor.java
===================================================================
--- /home/oleg/src/apache.org/jakarta/httpcomponents/httpcore/module-nio/src/main/java/org/apache/http/nio/impl/reactor/DefaultConnectingIOReactor.java	(revision 498997)
+++ /home/oleg/src/apache.org/jakarta/httpcomponents/httpcore/module-nio/src/main/java/org/apache/http/nio/impl/reactor/DefaultConnectingIOReactor.java	(working copy)
@@ -124,10 +124,14 @@
                 }
                 key.cancel();
                 if (channel.isConnected()) {
-                    prepareSocket(channel.socket());
-                    Object attachment = sessionRequest.getAttachment();
-                    ChannelEntry entry = new ChannelEntry(channel, attachment); 
-                    addChannel(entry);
+                    try {
+                        prepareSocket(channel.socket());
+                        Object attachment = sessionRequest.getAttachment();
+                        ChannelEntry entry = new ChannelEntry(channel, attachment); 
+                        addChannel(entry);
+                    } catch (IOException ex) {
+                        sessionRequest.failed(ex);
+                    }
                 }
             }
                         


> 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
>             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: httpcomponents-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: httpcomponents-dev-help@jakarta.apache.org