Re: Apache::Session::Store::Postgres FOR UPDATE problems [OT]
- On tirsdag 03 mai 2005, 00:40, Michael Schout wrote:
> Jeffrey W. Baker wrote:Thank you all for the follow-up!
> > It is possible that the FOR UPDATE is spurious. It signals to the
> > database system that this transaction intends to write that row.
> > With PostgreSQL's MVCC transaction isolation system, it's probably
> > not necessary and may be causing problems.
> It definately *is* necessary if you want to ensure that only one
> process has access to your session data at a time. MVCC will prevent
> a second client from WRITING to the same row, but it will not block
> it from reading the row.
Indeed the problem here is that we're not destroying the object
properly. It is the classical untie trap that we're in, described in
the Camel Book. However, neither of us has sufficient understanding of
the code, and of tied hashes, I suppose, to really track down the
issue. There really isn't any $foo = \%session in there, but we're
calling the handler from the invalidate method, which is most likely
the source of the problem.
It sort of works, with a few quirks, with DB_File as backend store, but
unsurprisingly, it doesn't with Pg. So, for now, I have filed a bug
against my own package, so that at least my users will have a fair
chance to understand what's going on:
If anyone wants to have a look, it is certainly appreciated, otherwise,
we'll just have to return to it $later.
kjetil@... webmaster@... editor@...
Homepage: http://www.kjetil.kjernsmo.net/ OpenPGP KeyID: 6A6A0BBC