Asiri Rathnayake wrote:
Hi Devs,
I've looked into the issues with webdav on MacOSX and following is the
diagnosis:
Finder(Mac) and other text editors on Mac relies a lot on temporary files /
directories created just for the duration of their operation. These files
usually start with a "." and can be easily distinguished from others. But
ignoring these files does not help at all because they are needed for the
proper operation of those applications. There for, we need to support them
somehow.
Approach 1: Store all of those temporary files inside user's session object
- This doesn't work always because some clients (Nautilus, Redirector,
Davfs) creates a new session for each and every request they make, so the
information will not be persistent across different requests. Although some
clients (Konqurer, NetDrive, DAVExplorer) keeps a single session open
throughout their operation and they can support temporary files with this
approach.
Approach 2: Store the temporary objects (resources) inside a database table
or file system - This can be complex to implement and will slow down the
operations.
-1 for this one.
Approach 3: Use an in-memory storage in a per-user
basis and store temporary
files there (Ex HashMap<User,Object>). This is quite easy to implement but
we need to manage the temporary storage carefully.
I have implemented and tested Approach 1 and I will convert this to Approach
3 asap. In the mean time, if you think there is a better way to do this,
please let me know.
I would prefer 1, but since it doesn't work for all clients, +1 for 3.
You should consider an expiration mechanism, since otherwise this will
grow indefinitely. Maybe you could use the cache module, since it is a
generic temp storage.
--
Sergiu Dumitriu
http://purl.org/net/sergiu/