Our Products:   CompleteFTP  edtFTPnet/Free  edtFTPnet/PRO  edtFTPj/Free  edtFTPj/PRO

FTPInputStream.close() hangs until socket timeout

0 votes
126 views
asked Jun 2, 2016 in Java FTP by jkroeber (180 points)

The following code causes the thread to hang until a socket timeout occurs:

FileTransferClient ftpClient = ...create and connect... ;
try (InputStream is = ftpClient.downloadStream("does_not_exist");
      OutputStream os = new FileOutputStream(new File(localFileName));) {
            IOUtils.copy(is, os);
}

The effect is that IOUtils.copy() fails with an IOException ("com.enterprisedt.net.ftp.FTPException: does_not_exist: No such file or directory") and the try-with-resources subsequently calls FTPInputStream.close() on "is". The FTPInputStream.close() hangs until the socket timeout (default 60s) occurs.

This problem is reproducable with a "FtpTester" tool I built (and I can provide, if desired). The output of the FtpTester tool is here: http://pastebin.com/srPgkJRY - note the timestamps [16/06/02 15:04:57.772 CEST] and [16/06/02 15:05:57.775 CEST] that are 60 seconds apart (socket timeout).

The image "stacktrace.png" shows where the thread hangs after FTPInputStream.close() is called: stacktrace

commented Jul 5, 2016 by support2 (143,710 points)
moved Jul 5, 2016 by support2
Sorry for the late reply - we only just noticed this question.

That's a weird issue, because the first thing downloadStream does is to test if the file exists. If it does not, an exception is thrown, so it should never get to IOUtils.copy(is, os).

If you have a DEBUG level log file that might tell us more.
commented Jul 5, 2016 by jkroeber (180 points)
You can fing the DEBUG log here: http://pastebin.com/srPgkJRY
commented Jul 5, 2016 by support2 (143,710 points)
Please email support at enterprisedt dot com and we'll send you the latest version to try - it looks like it is fixed there (unreleased, we'll release it soon).
commented Jul 13, 2016 by jkroeber (180 points)
I downloaded the latest version ("edtftpj-2.5.0.zip") and re-built my FTP tester tool with that. The issue is indeed fixed with 2.5.0. Thank you very much!

Here's the output of my FTP tester tool with both versions: http://pastebin.com/Qe4UYVJ4

Please log in or register to answer this question.

...