Honored MPs! 

I've taken over maintenance of AxKit::XSP::BasicSession from Mike 
Nachbaur, but Mike still contributes and we've been discussing some 
problems with it over the past few days.

A:X:BS lets Apache::Session do most of its hard work. However, it seems 
like no users have ever gotten it to work with a PostgreSQL backend. 
I'm trying to address that now. 

On the surface, the symptom is that for certain pages, it will just sit 
and spin at the $self->{materialize_sth}->execute; call in 
Apache::Session::Store::Postgres for exactly two minutes, then time 
out, and that makes the rest of the app confused, so most things go 
boom... 

We've been banging our heads against this problem in #axkit-dahut for a 
couple of days now, and I created the following Pg log:
http://paste.husk.org/3133
Then, I realized at had to read up on what "FOR UPDATE" means. It means 
that it'll lock and wait around for a subsequent UPDATE. 

So, I'm guessing that what happens is that it sits and waits for a 
UPDATE that never happens. I tried to remove the FOR UPDATE from the 
SQL statement, and it solves the immediate problem. But FOR UPDATE is 
something that is used for transactional integrity, and so, it is 
probably a Good Thing and there is probably a good reason why it is 
there... So, I'm turning to you with the hope that you can clue me in 
to how I can live with it. :-) 

A:X:BS is now on CPAN, the latest version is 0.23_3 and previous 
versions has had some problems, so this is the one I'm working on. I 
realized the Pg store would need different defaults than the others, 
and I have also been experimenting with the Commit stuff, in case that 
meant something. I've been testing with stuff like 

    # When using Postgres, a different default is needed.  
    if ($flex_options{'Store'} eq 'Postgres') {
        $flex_options{'Commit'} = 1;
        $flex_options{'AutoCommit'} = 1;
        $flex_options{'Serialize'} = $r->dir_config( $prefix . 'Serialize' ) || 
'Base64'
    }

with no effect.... 

I guess it could be that the use we make of Apache::Session is flawed, 
that we should call an update somewhere, but it works (apparently) with 
the other data stores. It feels like there is something in the 
direction of transactions but I can't figure out what... Or, if it 
could be somebody else's bug, relieve me of the feeling of being 
stupid... :-)

Clues are most welcome! 

Cheers,

Kjetil
-- 
Kjetil Kjernsmo
Astrophysicist/IT Consultant/Skeptic/Ski-orienteer/Orienteer/Mountaineer
[EMAIL PROTECTED]  [EMAIL PROTECTED]  [EMAIL PROTECTED]
Homepage: http://www.kjetil.kjernsmo.net/        OpenPGP KeyID: 6A6A0BBC

Reply via email to