[ https://issues.apache.org/jira/browse/NET-249?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13107411#comment-13107411 ]
Bogdan Drozdowski commented on NET-249: --------------------------------------- Perhaps timing and synchronization plays a role here? Try the ftp-synchro.diff patch from NET-419 and let us know. > FtpClient hangs 20 minutes in FTPClient.completePendingCommand from > retrieveFile or listFiles > --------------------------------------------------------------------------------------------- > > Key: NET-249 > URL: https://issues.apache.org/jira/browse/NET-249 > Project: Commons Net > Issue Type: Bug > Components: FTP > Affects Versions: 1.4, 2.0 > Environment: Client and Server running on Solaris 9 > Reporter: David Tavoularis > > I have a Ftp Client with several connections in multi-thread that connects to > a remote Ftp Server to list files and download new ones. > After 3 minutes of runtime, I get a 20-minute timeout for all running Ftp > connections. > Here are the logs for 1 thread : > {noformat} > 20090114 142216 (Command Sent Message): PASV > 20090114 142216 (Reply Received Message): 227 Entering Passive Mode > (10,250,10,116,224,172) > 20090114 142216 (Command Sent Message): LIST /Dir1/Dir2/Dir3 > 20090114 142216 (Reply Received Message): 150 Opening BINARY mode data > connection for /bin/ls. > 20090114 142216 (Reply Received Message): 226 Transfer complete. > 20090114 142216 (Command Sent Message): PASV > 20090114 142216 (Reply Received Message): 227 Entering Passive Mode > (10,250,10,116,138,240) > 20090114 142216 (Command Sent Message): RETR /Dir1/Dir2/Dir3/File1 > 20090114 142216 (Reply Received Message): 150 Opening BINARY mode data > connection for /Dir1/Dir2/Dir3/File1 (12364 bytes). > *** 20 minutes without any message *** > 20090114 144216 (Reply Received Message): 426 Data connection: Interrupted > system call. > 20090114 144216 (Command Sent Message): PASV > 20090114 144216 (Reply Received Message): 227 Entering Passive Mode > (10,250,10,116,109,169) > 20090114 144216 (Command Sent Message): RETR /Dir1/Dir2/Dir3/File1 > 20090114 144216 (Reply Received Message): 150 Opening BINARY mode data > connection for /Dir1/Dir2/Dir3/File2 (12387 bytes). > 20090114 144216 (Reply Received Message): 226 Transfer complete. > {noformat} > Here are the logs for another thread : > {noformat} > 20090114 142216 (Command Sent Message): PASV > 20090114 142216 (Reply Received Message): 227 Entering Passive Mode > (10,250,10,116,174,233) > 20090114 142216 (Command Sent Message): RETR /DirA/DirB/DirC/FileA > 20090114 142216 (Reply Received Message): 150 Opening BINARY mode data > connection for /DirA/DirB/DirC/FileA (14209 bytes). > 20090114 142216 (Reply Received Message): 226 Transfer complete. > 20090114 142216 (Command Sent Message): PASV > 20090114 142216 (Reply Received Message): 227 Entering Passive Mode > (10,250,10,116,202,81) > 20090114 142216 (Command Sent Message): LIST /DirA/DirB/DirD > 20090114 142216 (Reply Received Message): 150 Opening BINARY mode data > connection for /bin/ls. > *** 20 minutes without any message *** > 20090114 144216 (Reply Received Message): 426 Data connection: Interrupted > system call. > 20090114 144216 (Command Sent Message): PASV > 20090114 144216 (Reply Received Message): 227 Entering Passive Mode > (10,250,10,116,11,16) > 20090114 144216 (Command Sent Message): RETR /DirA/DirB/DirD/FileB > 20090114 144216 (Reply Received Message): 150 Opening BINARY mode data > connection for /DirA/DirB/DirD/FileB (14145 bytes). > {noformat} > So it happens during LIST or during RETR command. > The issue is always reproducible when connecting to this Ftp server. > What is the meaning of the error message "426 Data connection: Interrupted > system call." ? > Here are the stack-traces where the FtpClient is blocked during 20 minutes. > For 1st connection : > {noformat} > Stack 30 - Wed Jan 14 14:40:00 CET 2009 > "FTPMediationTask" prio=3 tid=0x00aac800 nid=0x156 runnable > [0x6877e000..0x6877fb70] > java.lang.Thread.State: RUNNABLE > at java.net.SocketInputStream.socketRead0(Native Method) > at java.net.SocketInputStream.read(SocketInputStream.java:129) > at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264) > at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306) > at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158) > - locked <0x8fc23880> (a java.io.InputStreamReader) > at java.io.InputStreamReader.read(InputStreamReader.java:167) > at java.io.BufferedReader.fill(BufferedReader.java:136) > at java.io.BufferedReader.readLine(BufferedReader.java:299) > - locked <0x8fc23880> (a java.io.InputStreamReader) > at java.io.BufferedReader.readLine(BufferedReader.java:362) > at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:294) > at org.apache.commons.net.ftp.FTP.getReply(FTP.java:619) > at > org.apache.commons.net.ftp.FTPClient.completePendingCommand(FTPClient.java:1244) > at > org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:2309) > at > org.apache.commons.net.ftp.FTPClient.initiateListParsing(FTPClient.java:2269) > at org.apache.commons.net.ftp.FTPClient.listFiles(FTPClient.java:2046) > [...] > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907) > at java.lang.Thread.run(Thread.java:619) > {noformat} > And for the second connection : > {noformat} > Stack 27 - Wed Jan 14 14:37:00 CET 2009 > "FTPMediationTask" prio=3 tid=0x0140b800 nid=0xe7 runnable > [0x6967e000..0x6967f8f0] > java.lang.Thread.State: RUNNABLE > at java.net.SocketInputStream.socketRead0(Native Method) > at java.net.SocketInputStream.read(SocketInputStream.java:129) > at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264) > at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306) > at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158) > - locked <0x7ea6cd20> (a java.io.InputStreamReader) > at java.io.InputStreamReader.read(InputStreamReader.java:167) > at java.io.BufferedReader.fill(BufferedReader.java:136) > at java.io.BufferedReader.readLine(BufferedReader.java:299) > - locked <0x7ea6cd20> (a java.io.InputStreamReader) > at java.io.BufferedReader.readLine(BufferedReader.java:362) > at org.apache.commons.net.ftp.FTP.__getReply(FTP.java:294) > at org.apache.commons.net.ftp.FTP.getReply(FTP.java:619) > at > org.apache.commons.net.ftp.FTPClient.completePendingCommand(FTPClient.java:1244) > at > org.apache.commons.net.ftp.FTPClient.retrieveFile(FTPClient.java:1301) > [...] > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907) > at java.lang.Thread.run(Thread.java:619) > {noformat} > The issue originally happened on commons-net 1.4, but I have upgraded to 2.0, > and the issue is still there. > Here is the normal configuration : > Client1 connects to FtpServer to download files -> No issue > Client2 connects to FtpServer to download files -> 20-min timeout issue > (Client1 and Client2 are 2 different servers) > But when I try : Client2 connects to Client1 (instead of FtpServer) to > download files -> No issue > Please help me find out a workaround or tell me if this is a bug in > commons-net, or on remote FtpServer (but this would be strange, because > Client1 has no issue) > Thanks in advance -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira