The socket timeout indicate the connection has been established but
the reply couldn't be processed in time. How many Threads did you
allow to the service ?
2006/5/10, Chris Mattmann <[EMAIL PROTECTED]>:
Guys,
In followup to my prior message, here is the full stack trace of the error
that I am receiving:
java.net.SocketTimeoutException: Read timed out
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)
at
org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:77)
at
org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:105)
at
org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:11
15)
at
org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.j
ava:1832)
at
org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.jav
a:1590)
at
org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:995
)
at
org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethod
Director.java:397)
at
org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDir
ector.java:170)
at
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
at
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346)
at
org.apache.xmlrpc.CommonsXmlRpcTransport.sendXmlRpc(CommonsXmlRpcTransport.j
ava:111)
at
org.apache.xmlrpc.XmlRpcClientWorker.execute(XmlRpcClientWorker.java:72)
at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java:194)
at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java:185)
at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java:178)
at
gov.nasa.jpl.oodt.cas.filemgr.system.XmlRpcFileManagerClient.ingestProduct(X
mlRpcFileManagerClient.java:493)
Line 493 in my XmlRpcFileManagerClient code is where I make the call to:
productId = (String)fClient.execute("filemgr.ingestProduct",
argList);
Any ideas? Could it be a problem with the amount of allowed open sockets on
of my computer nodes? As I mentioned, the error doesn't manifest when I run
the File Manager client and server on the same powerful (4x Xeon processor,
head node in a cluster) host, only when they are run on different hosts (the
File Manager server on the powerful host, and the File Manager client on a
less powerful, dual CPU, compute node in my cluster).
Thanks, again.
Cheers,
Chris Mattmann
On 5/9/06 9:05 PM, "Chris Mattmann" <[EMAIL PROTECTED]> wrote:
> Hi guys,
>
> I'm trying to figure out a pretty frustrating problem I'm having with the
> 2.1-dev branch of xmlrpc. I have some simple code in a server component
> exposed through the XmlRpc WebServer class that does an ingest of a file and
> some metadata into an underlying catalog. The code looks something to the
> effect of:
>
> public class MyServer{
>
> public MyServer(int port){
> fWebServerPort = port;
>
> // start up the web server
> fWebServer = new WebServer(fWebServerPort);
> fWebServer.addHandler("filemgr", this);
> fWebServer.start();
> }
>
> public synchronized String ingestProduct(params...){
> //add catalog data
> //transfer file
> return fileId;
> }
>
> }
>
> In my client application, I call the ingestMethod, and I am noticing under
> some light stress (e.g., most likely between 30-40 communications,
> potentially simultaneous), that my MyServer class fails to respond to the
> client's invocation of it. My Client class looks like:
>
> public class MyClient{
> public XmlRpcClient fClient = null;
>
> public MyClient(URL serverUrl){
> //init fClient to point to the XmlRpcServer
> fClient = new XmlRpcClient(new URL(serverUrl));
> }
>
> public String ingestCall(params...){
> String productId = nulll;
> Vector argList = new Vector();
> argList.addAll(params);
> try {
> productId = (String)fClient.execute("filemgr.ingestProduct",
> argList);
> } catch (XmlRpcException e) {
> e.printStackTrace();
> throw new Exception(e.getMessage());
> } catch (IOException e) {
> e.printStackTrace();
> throw new Exception(e.getMessage());
> }
> }
>
> }
>
> The exception that is being thrown is the IOException, and it throws back:
>
> java.lang.Exception: Read timed out
>
> It throws back the regular Exception because I wrapped the IOException in
> the regular exception class. In any case, the method call to fClient.execute
> never returns and an exception is thrown. I've racked my brain trying to
> figure out why this happens. The weirder thing is, if I run the client and
> the server on the same machine, the error goes away. It's when I distribute
> the client and server to different machines that this error springs up.
> Could anyone suggest why this is happening, and furthermore, are there any
> ways to potentially fix this problem? I seem to only experience it under
> heavy stress to the Server class. Any help would be greatly appreciated.
>
> Thanks!
>
> Cheers,
> Chris
>
>
>