Retrieving directory contents of remote FTP server should be on one thread only
|Reported by:||mariush||Owned by:|
|Component version:||Operating system type:||Windows|
|Operating system version:|
I work a lot with a ftp server that has a lot of files and subfolders in a folder. As it's a high traffic server, it needs some time to show the file list for that folder so I run almost every day into this following problem.
Filezilla is configured to do up to 3 uploads at the same time.
Server has /files/ folder in the root. Folder /files/ has about 2000 folders and 1500 files in it..
I'm dragging four files from the local files list on the /files/ folder.
Three upload threads are started and each sends command to retrieve the directory listing of /files/
Server simply times out in about 10 seconds because it can't process the three directory listing at the same time, so two of the files are right away sent to Failed Transfers tab.
The third thread manages to retrieve the directory listing, file is uploaded
The fourth file thread upload thread is started and no longer retrieves the directory list so it stores the file right away.
If I watch the Failed Transfers tab and click on "Reset queue..." right as the files appear there, the two failed files will be processed successfully.
The way I see it there's two problems about this...
- Files shouldn't be send to "Failed transfers" because an actual transfer attempt was not done - the directory listing failed. There should be a reconnect attempt after a few seconds, an attempt to retrieve the directory listing again (or be smart enough to see another thread got the directory listing already) and then try to store the files.
(It would be worth investigating if there are other cases where files are sent directly to "Failed transfers" even though no transfer was actually attempted.)
- Filezilla should be smart enough to see that if two or more threads try to get the same directory on the same server with the same user account and password, maybe it would be wise to use a mutex or something to force only one directory listing request.
Even nicer would be to have the queue system to have the directory listing as high priority and the four file uploads depending on this "directory listing job" being performed.