Hi Support,
I was just going to post about this although I am not sure if I am experiencing the exact same problem, here is what I am noticing:
I perform a single put with a single FTPClient in a thread (there maybe several concurrent threads putting different files to the same remote host). I also built a JSP dashboard to monitor the progress of each When the file being transferred is particularly large ( 600+ MB ) I noticed that the thread stays alive and the put appears to have stopped at 99% just a few bytes short of completion according to the progress monitor. However, when I manually log into the remote host I see that the transfer was indeed successful, 100%. So if PUT never completes then that explains why my thread won't die. I am unable to replicate this situation when transferring smaller files. I am doing all transfers in PASV, TYPE I. My hypothesis is that certain FTP servers may be immediately closing the socket (or IO stream) after transfer completes, causing the data to throw the NullPointerException.
Not sure if this is related as well, but should I always do a ftp.quit() after a single put or just let the thread finish and die? If the connection has timed out after a transfer, I have seen the server return "500 connection timed out". I'm afraid if the server is closing after a lengthy transfer that errant Exceptions may be throw when everything was actually successful.
Thanks!