Hi,
we have an environment where multiple instances of XmlRpcClient in
different JVMs on our side call a single XML-RPC server on another host.
We have at least tens of thousands of calls per day, even hundreds of thousands.
We are using Jakarta's XML-RPC 1.1.
Problem:
sometimes (rarely, maybe 5-10 times per day) our client gets stuck. Here's
the interesting part of thread dump:
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:183)
at java.io.BufferedInputStream.read(BufferedInputStream.java:201)
- locked <e17b45e0> (a java.io.BufferedInputStream)
at
org.apache.xmlrpc.XmlRpcClientLite$HttpClient.readLine(XmlRpcClientLite.java)
at
org.apache.xmlrpc.XmlRpcClientLite$HttpClient.sendRequest(XmlRpcClientLite.java)
at
org.apache.xmlrpc.XmlRpcClientLite$LiteWorker.execute(XmlRpcClientLite.java)
What I mean with getting stuck is that just call never returns. We are
running this on live environment, so I don't have a possibility to check
if it really doesn't _ever_ return but so far we've seen situations of call
taking 10 hours and still not returning (at which point, we've rebooted
the server).
Any ideas? I know there is no timeouts in Jakarta's XML-RPC 1.1, but
really, is it normal that call can be blocked for this long? AFAIK, there
is no way to interrupt a call - is there?
BR,
Janne