PDA

View Full Version : Directory listing not updating corectly


andreas
10-12-2015, 03:15 AM
1. Create a directory.
2. Let ftp session (session1) timeout.
3. Use an other session to delete the directory.
4. Press F5 to session1.
5. File listing will update to a valid path
6. Directory listing will show the deleted path

Flashfxp version 5.2.0.3883

bigstar
10-12-2015, 07:52 AM
What FTP server software?

I am not seeing this issue when I attempt to reproduce it.

Can you please include a copy of the session status text.

Can you also turn on debug caching using this raw command /debug cache 1 first and then you can use /debug cache 0 to turn it off once you've completed the test.

andreas
10-12-2015, 08:13 AM
- linux proftpd

- Here is the cache:




[15:58:25] [R] Connecting to ftp.xxx.nu -> DNS=xxxx.xxx.nu IP=xxxIPxxx PORT=21
[15:58:25] [R] Connected to ftp.xxx.nu
[15:58:25] [R] 220 GodLike FTP Server
[15:58:25] [R] USER userakos
[15:58:25] [R] 331 Password required for userakos
[15:58:25] [R] PASS (hidden)
[15:58:25] [R] 230 Welcome!!!
[15:58:25] [R] SYST
[15:58:25] [R] 215 UNIX Type: L8
[15:58:25] [R] FEAT
[15:58:25] [R] 211-Features:
[15:58:25] [R] MDTM
[15:58:25] [R] MFMT
[15:58:25] [R] TVFS
[15:58:25] [R] UTF8
[15:58:25] [R] MFF modify;UNIX.group;UNIX.mode;
[15:58:25] [R] MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX .mode*;UNIX.owner*;
[15:58:25] [R] LANG en-US*
[15:58:25] [R] SITE MKDIR
[15:58:25] [R] SITE RMDIR
[15:58:25] [R] SITE UTIME
[15:58:25] [R] SITE SYMLINK
[15:58:25] [R] REST STREAM
[15:58:25] [R] SITE COPY
[15:58:25] [R] SIZE
[15:58:25] [R] 211 End
[15:58:25] [R] OPTS UTF8 ON
[15:58:25] [R] 200 UTF8 set to on
[15:58:25] [R] PWD
[15:58:26] [R] 257 "/" is the current directory
[15:58:26] [R] CWD /
[15:58:26] [R] 250 CWD command successful
[15:58:26] [R] PWD
[15:58:26] [R] 257 "/" is the current directory
[15:58:26] [R] PASV
[15:58:26] [R] 227 Entering Passive Mode (xx,xx,xx,xx,188).
[15:58:26] [R] Opening data connection IP: xxxIPxxx PORT: 54460
[15:58:26] [R] MLSD
[15:58:26] [R] 150 Opening ASCII mode data connection for MLSD
[15:58:26] [R] 226 Transfer complete
[15:58:26] (debug) [cache :: add :: new] /
[15:58:26] [R] List Complete: 655 bytes in 0,07 seconds (0,6 KB/s)
[15:58:27] [R] CWD andreas
[15:58:27] [R] 250 CWD command successful
[15:58:27] [R] PWD
[15:58:27] [R] 257 "/andreas" is the current directory
[15:58:27] [R] PASV
[15:58:27] [R] 227 Entering Passive Mode (xx,xx,xx,xx,xx,195).
[15:58:27] [R] Opening data connection IP: xxxIPxxx PORT: 18627
[15:58:27] [R] MLSD
[15:58:27] [R] 150 Opening ASCII mode data connection for MLSD
[15:58:27] [R] 226 Transfer complete
[15:58:27] (debug) [cache :: add :: new] /andreas/
[15:58:27] [R] List Complete: 3 KB in 0,11 seconds (3,6 KB/s)
[15:58:28] [R] CWD test11111
[15:58:28] [R] 250 CWD command successful
[15:58:28] [R] PWD
[15:58:28] [R] 257 "/andreas/test11111" is the current directory
[15:58:28] [R] PASV
[15:58:28] [R] 227 Entering Passive Mode (xx,xx,xx,xx,xx,216).
[15:58:28] [R] Opening data connection IP: xxxIPxxx PORT: 23768
[15:58:28] [R] MLSD
[15:58:28] [R] 150 Opening ASCII mode data connection for MLSD
[15:58:28] [R] 226 Transfer complete
[15:58:28] (debug) [cache :: add :: new] /andreas/test11111/
[15:58:28] [R] List Complete: 219 bytes in 0,11 seconds (0,2 KB/s)
[16:04:44] [R] Network Error (10054): Connection reset by peer
[16:04:44] [R] Connection lost: ftp.xxx.nu (Duration: 6 minutes 18 seconds / Idle: 6 minutes 15 seconds)


>>> HERE DELETE THE DIRECTORY USING AN OTHER SESSION <<<<


[16:06:33] [R] Connecting to ftp.xxx.nu -> DNS=xxxx.xxx.nu IP=xxxIPxxx PORT=21
[16:06:33] [R] Connected to ftp.xxx.nu
[16:06:33] [R] 220 GodLike FTP Server
[16:06:33] [R] USER userakos
[16:06:33] [R] 331 Password required for userakos
[16:06:33] [R] PASS (hidden)
[16:06:33] [R] 230 Welcome!!!
[16:06:33] [R] SYST
[16:06:33] [R] 215 UNIX Type: L8
[16:06:33] [R] FEAT
[16:06:33] [R] 211-Features:
[16:06:33] [R] MDTM
[16:06:33] [R] MFMT
[16:06:33] [R] TVFS
[16:06:33] [R] UTF8
[16:06:33] [R] MFF modify;UNIX.group;UNIX.mode;
[16:06:33] [R] MLST modify*;perm*;size*;type*;unique*;UNIX.group*;UNIX .mode*;UNIX.owner*;
[16:06:33] [R] LANG en-US*
[16:06:33] [R] SITE MKDIR
[16:06:33] [R] SITE RMDIR
[16:06:33] [R] SITE UTIME
[16:06:33] [R] SITE SYMLINK
[16:06:33] [R] REST STREAM
[16:06:33] [R] SITE COPY
[16:06:33] [R] SIZE
[16:06:33] [R] 211 End
[16:06:33] [R] OPTS UTF8 ON
[16:06:33] [R] 200 UTF8 set to on
[16:06:33] [R] PWD
[16:06:33] [R] 257 "/" is the current directory
[16:06:33] [R] CWD /andreas/test11111/
[16:06:34] [R] 550 /andreas/test11111/: No such file or directory
[16:06:34] (debug) [cache :: remove :: not-cached :: 8 ] /
[16:06:34] [R] CWD /
[16:06:34] [R] 250 CWD command successful
[16:06:34] [R] PWD
[16:06:34] [R] 257 "/" is the current directory
[16:06:34] [R] PASV
[16:06:34] [R] 227 Entering Passive Mode (xx,xx,xx,xx,xx,156).
[16:06:34] [R] Opening data connection IP: xxxIPxxx PORT: 62364
[16:06:34] [R] MLSD
[16:06:34] [R] 150 Opening ASCII mode data connection for MLSD
[16:06:34] [R] 226 Transfer complete
[16:06:34] (debug) [cache :: add :: new] /
[16:06:34] [R] List Complete: 655 bytes in 0,12 seconds (0,6 KB/s)





I attach an image from this point

bigstar
10-12-2015, 02:53 PM
Thank you.

When I conducted my tests; I was creating a sub-folder within the root location, so on reconnect the root was being refreshed and everything appeared to work correctly.

However in your case the sub-folder is being created within another sub-folder located in root and in this case the cache/folder of the parent is not refreshed.

The problem is that in most cases its not 100% clear why the CWD failed. What I mean by that is some FTP servers return 550 permission denied, or 550 not found, 550 Unable to handle command, etc.

Some FTP servers may use other response codes as well and we rely on these response codes to determine our action.
99% of the time when the CWD command fails we just accept the failure and move on.

However in this specific situation there is something more we can do. Since we know that we had permission to the folder at some point and now we don't it's fairly safe to assume that the folder was moved, renamed, or deleted. (Permissions may have been changed but that's the least likely)

What I can do is after reconnect if the CWD fails then remove the folder from the tree, file list, and cache.

I just finished these changes but I need to do some more testing, once I wrap that up I'll give you a link with the new build.

andreas
10-13-2015, 03:39 AM
Or just update the directory listing in any case, not showing what is in the cache.

bigstar
10-13-2015, 07:14 AM
Aside from the cache expire after setting, refresh cache on transfer setting, and a manual refresh. A directory listing will remain cached for the current session until an operation is performed in the folder that invalidates the cache.

Since the folder is being deleted by the second session only the cache on the second session is updated, the cache for the first session is not touched.

FlashFXP doesn't know that the cache for the first session is stale, so it doesn't know to refresh from the server.

And this is what I am working to change, so if changing to a folder fails on reconnect then its safe to assume that the cache for the parent of said folder is also invalid and should be refreshed from the server.

andreas
10-13-2015, 09:24 AM
I think is simpler than that.

You try to enter a path that does not exist or you dont have permission or you cant enter for any reason.
The right window (files) moves to a path that you have access or to the root directory.
Obviously the left window remains to wrong path: you just can move both windows to the same path & of course clear the cache.

Rember that you have connected again after a timeout. After a timeout cache should be cleaned?

bigstar
10-14-2015, 08:11 AM
Rember that you have connected again after a timeout. After a timeout cache should be cleaned?

No, after a connection timeout the cache isn't cleared; There's no reason to clear cache under this condition.

Update:

I am working on some unrelated issues that I've discovered while testing the cache system and its taking much longer than I expected.

bigstar
10-18-2015, 12:58 PM
Here's a new build you can test, I am still testing all my changes, so please let me know if you find something that you think is not right.

Download ffxp5.2.0.3885.zip
(https://oss.azurewebsites.net/testr/dev-builds/ffxp5.2.0.3885.zip)
Unzip the flashfxp.exe into your FlashFXP program folder and overwrite the existing file.

This new build should address the original problem when the folder no longer exists on reconnect, and it makes several improvements to the caching system, when a file is deleted, renamed, moved, etc we update the information within the cache whenever possible and eliminate forcing a refresh from the server when it can be avoided.