[ 
https://issues.apache.org/jira/browse/SYNAPSE-205?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12556862#action_12556862
 ] 

Oleg Kalnichevski commented on SYNAPSE-205:
-------------------------------------------

Andreas,

Unlike classic I/O NIO does not use SocketTimeoutException to signal a timeout 
on a socket read operation and leaves it up to the transport layer to decide 
how to propagate the timeout condition to the application layer. So, in case of 
session request failing due to a timeout there is no exception instance to 
start with, which could be propagated to the SessionRequestCallback. 
Theoretically I could create one, but do not see a point in doing so. 
SessionRequestCallback implementations ought to be prepared to deal with 
SessionRequest#getException() being null especially in case of a timeout.

Hope this helps

Oleg 

> NPE in HttpCoreNIOSender and "I/O reactor has been shut down"
> -------------------------------------------------------------
>
>                 Key: SYNAPSE-205
>                 URL: https://issues.apache.org/jira/browse/SYNAPSE-205
>             Project: Synapse
>          Issue Type: Bug
>          Components: Transports
>    Affects Versions: NIGHTLY
>            Reporter: Andreas Veithen
>            Priority: Critical
>             Fix For: 1.2
>
>         Attachments: synapse-205.patch.txt
>
>
> When the target service is not available, a request to the proxy service 
> causes the following exception:
> Exception in thread "HttpCoreNIOSender" java.lang.NullPointerException
>       at 
> org.apache.synapse.transport.nhttp.HttpCoreNIOSender$3.handleError(HttpCoreNIOSender.java:460)
>       at 
> org.apache.synapse.transport.nhttp.HttpCoreNIOSender$3.timeout(HttpCoreNIOSender.java:439)
>       at 
> org.apache.http.impl.nio.reactor.SessionRequestImpl.timeout(SessionRequestImpl.java:151)
>       at 
> org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor.processTimeouts(DefaultConnectingIOReactor.java:152)
>       at 
> org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor.processEvents(DefaultConnectingIOReactor.java:96)
>       at 
> org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor.execute(AbstractMultiworkerIOReactor.java:158)
>       at 
> org.apache.synapse.transport.nhttp.HttpCoreNIOSender.executeClientEngine(HttpCoreNIOSender.java:139)
>       at 
> org.apache.synapse.transport.nhttp.HttpCoreNIOSender.access$000(HttpCoreNIOSender.java:68)
>       at 
> org.apache.synapse.transport.nhttp.HttpCoreNIOSender$1.run(HttpCoreNIOSender.java:101)
>       at java.lang.Thread.run(Thread.java:613)
> Any further request then fails with "java.lang.IllegalStateException: I/O 
> reactor has been shut down".
> The instruction in HttpCoreNIOSender that causes the NPE is as follows:
> MessageContext nioFaultMessageContext =
>     MessageContextBuilder.createFaultMessageContext(
>         mc, new AxisFault(exception.toString(), exception));
> Probably, when handleError is called by the timeout (rather than the failed) 
> method, as is the case here (see stacktrace), exception is null. The 
> handleError method doesn't handle this situation appropriately.
> Note that this issue is similar but not identical to the one described in 
> SYNAPSE-168.

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