Jim Gallacher
jg.lists at sympatico.ca
Thu Apr 7 22:27:08 EDT 2005
Nicolas Lehuen wrote: > On Apr 7, 2005 10:59 PM, Nicolas Lehuen <nicolas.lehuen at gmail.com> wrote: > >>On Apr 7, 2005 9:39 PM, Jim Gallacher <jg.lists at sympatico.ca> wrote: >> >>>Nicolas Lehuen wrote: >>> >>>>Hi, >>>> >>>>Your code seems perfect to me. We could indeed add an extra hash to >>>>the directory name so that all sessions do not end in the same >>>>directory ; but I guess this is not needed on modern FS like ReiserFS >>>>or WinFS. >>>> >>>>Also, the unlink call in do_delete needs an "os." to be correct... >>>> >>>>If everybody is OK I could integrate your class into the Session.py >>>>module, so that it becomes a standard session implementation in the >>>>next release. >>> >>>Shouldn't a lock be aquired and released before reading and writing the >>>session to a file? >> >>Yeah, of course, though we could rely on the native filesystem locking >>capabilities. >> >>Regards, >>Nicolas > > > [switching to python-dev] > > Woops, sorry, I did not see that the locking problem is handled in > BaseSession. From what I read in the source code, the locking is > handled with the granularity of one lock per session, am I right ? So, > as we have one file per session, we can reuse the same locking > mechanisms in do_load, do_save and do_delete. Does this sound OK to > you ? I read it the same way. Why not borrow the locking mechanism used by DbmSession? For example: def do_save(self, dict): _apache._global_lock(self._req.server, None, 0) fp = file('%s/mp_sess_%s' % (tempdir, self._sid), 'w+') try: cPickle.dump(dict, fp) finally: fp.close() _apache._global_unlock(self._req.server, None, 0) > I've seen a few problems in your implementation, so I've took the > liberty of modifying it I've checked it in so that anybody with commit > rights can modify the code. Here it is : > > http://svn.apache.org/repos/asf/httpd/mod_python/trunk/lib/python/mod_python/FileSession.py > > Basically, I've added a few try...finally to make sure that opened > files are closed, but I've not done anything yet about the tempdir > issue, the locking issue or changing the pickling protocol. It's > coming soon. I've also hacked together a (non-working) version that handles the locking and the tempdir issue. Brain a little fuzzy right now, but I'll fix it tomorrow and post it - unless you get to it first, Nicolas - :) Regards, Jim
|