Details
-
Bug
-
Status: Resolved
-
Critical
-
Resolution: Fixed
-
NIGHTLY
-
None
Description
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.
Attachments
Attachments
Issue Links
- incorporates
-
AXIS2-3532 NPE in HttpCoreNIOSender
- Resolved
- is part of
-
AXIS2-3428 NullPointerException in HttpCoreNIOSender
- Resolved