I have a process that is supposed to ftp a file to a remote location every 5 minutes.
It seems to have become stuck for a number of hours and hasn't been sending files.
I took a thread dump to see what was going on and this is the state of my thread:
"SPPersister" prio=6 tid=0x03782400 nid=0x16c4 runnable [0x0468f000..0x0468fd14] java.lang.Thread.State: RUNNABLE at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(Unknown Source) at sun.nio.cs.StreamDecoder.readBytes(Unknown Source) at sun.nio.cs.StreamDecoder.implRead(Unknown Source) at sun.nio.cs.StreamDecoder.read(Unknown Source) - locked <0x239ebea0> (a java.io.InputStreamReader) at java.io.InputStreamReader.read(Unknown Source) at java.io.BufferedReader.fill(Unknown Source) at java.io.BufferedReader.readLine(Unknown Source) - locked <0x239ebea0> (a java.io.InputStreamReader) at java.io.BufferedReader.readLine(Unknown Source) at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:294) at org.apache.commons.net.ftp.FTP._connectAction_(FTP.java:364) at org.apache.commons.net.ftp.FTPClient._connectAction_(FTPClient.java:540) at org.apache.commons.net.SocketClient.connect(SocketClient.java:178) at org.apache.commons.net.SocketClient.connect(SocketClient.java:268) ...
I am using the following code to connect:
FTPClient client = new FTPClient(); client.setConnectTimeout(10000); client.connect(host); // <-- stuck here client.setDataTimeout(20000); client.setSoTimeout(20000); client.login(user, pass); client.changeWorkingDirectory(dir);
Shouldn't the connection attempt have timed out within 10 seconds?