Hi devs!

first of all I'd like to apologize for posting a "user-problem" to two 
dev-lists. I only did this as have not much background knowledge of the NIO 
implementation and think a solid understanding of NIO is necessary to help 
tackling our problem.

We are using the WSO2 ESB which is based on Apache Synapse, Apache Axis2 and 
the HTTP Core NIO module. As the stacktrace only contains http-nio details, I 
cc'ed the http components dev list. Hopefully someone can help out.

When sending about 3000 Hessian-requests per hour from clients (Tomcat) over 
the ESB (Synapse 1.2 running on JDK 1.5.15, Linux 2.6.23.1-amd64-75) to a Bea 
Weblogic 8.1 we see about 1 to 10 exceptions of type "java.io.IOException: 
Connection reset by peer" in the ESB-log. 

If I understand it right the ESB then executes a failover to the next service 
node as we are using a load balancing group. So the client is not affected, but 
the endpoint with the failure will be marked as inactive.

The problem is I don't understand the cause of this exception. It occurs during 
the read on a Socket-Channel. So I think the server might close the connection 
while the ESB is reading. But maybe internally some kind of pool is used and a 
connection can change to some abnormal state?

We have seen such Exceptions before when we were using HTTP 1.1 in combination 
with the Bea Weblogic server. Very likely an issue with HTTP keepalive 
(persistent connections). So for any connection to a Bea service we use the 
property mediator of Synapse to change the connection ESB <-> Bea to use HTTP 
1.0:
<syn:property name="FORCE_HTTP_1.0" value="true" scope="axis2" />

Since then we hadn't seen this exception again. But now switching to another 
environment we see this exception again, but only for Hessian services.
I have no clue what else could cause this exception. How can we detect the 
cause? How to narrow down possible causes, if there are different 
possibilities. I don't expect any network outages to be the reason, as other 
services (SOAP)-based are working pretty well.

The exact exception we are getting is:

java.io.IOException: Connection reset by peer
        at sun.nio.ch.FileDispatcher.read0(Native Method)
        at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:21)
        at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:233)
        at sun.nio.ch.IOUtil.read(IOUtil.java:206)
        at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:207)
        at 
org.apache.http.impl.nio.reactor.SessionInputBufferImpl.fill(SessionInputBufferImpl.java:85)
        at 
org.apache.http.impl.nio.codecs.AbstractMessageParser.fillBuffer(AbstractMessageParser.java:97)
        at 
org.apache.http.impl.nio.DefaultNHttpClientConnection.consumeInput(DefaultNHttpClientConnection.java:113)
        at 
org.apache.http.impl.nio.DefaultClientIOEventDispatch.inputReady(DefaultClientIOEventDispatch.java:99)
        at 
org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:98)
        at 
org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:195)
        at 
org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:180)
        at 
org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:142)
        at 
org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:70)
        at 
org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:318) 


This exception occurs consistently a few time per hour on every possible 
combination of client node, esb node and service endpoint node.

Any pointer or idea is greatly appreciated. Thanks a lot in advance!


Regards,
   Eric

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to