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