Phoenix.pm: Apache::Session::Lock::File under mod_perl

Scott Walters scott at illogics.org
Wed Jan 15 17:20:22 CST 2003


> Doug incantonated: 
> Did you dive into the code any to see what the problem was?  I'm trying 
> to decide if it's worth the effort.

No. I opened it in vi once and noticed that it was a few thousands more
lines that it should be. I sighed and decided it would be easier to replace
it than try to fix, undestand, clean, or decruft it. Hrm. I should write a 
module that takes another module and puts it through the unit tests
taking out each line of code one by one. Each line that can be removed
will be removed, and the module output in its new, decrufted form. Not
as good as a hand polish job, but it'd be interesting to see how much
the average module reduces. Reading most peoples code, lines that don't
do anything are scattered all over the place. Anyway, in all seriousness,
require, flock/SQL's lock row, and Storable worked fine, and is essentially
what Apache::Session is doing under all of the cruft anyway. Perl has
SYSV SHM primitives built in, but I recommend against this -  a core fault
or incomplete exception handling code could leave the semaphore stuck. 
You'll have to write a little object wrapper if you want to release the
lock based on scope...

-scott



> 
> 
> 
> Scott Walters wrote:
> > 
> > Ahhh, I distinctly remember the 18th time that Apache::Session failed on
> > Contact Designs. We were sitting in our attorney's office in a downtown
> > Phoenix highrise, arbitrating with an non-paying client who was alleging
> > that we didn't have the experience needed to write an e-commerce site,
> > so they could step out of the contract and use Yahoo! sites, which look
> > like garbage - this after cating to demand after demand by this client.
> > Laptop and Ricochet wireless Internet on the confrence table, I prepare
> > to demonostrate the check out process on another clients site - when
> > Apache::Session decides that another processes hasn't released the SHM 
> > lock. 
> > 
> > This is an absolutely true story. Apache::Session caused constant
> > problems in each of its modes - locking on SHM, locking on a database,
> > serializing to file, serializing to database, etc. 
> > 
> > I've flamed Apache::Session in this channel before, and I'll do it again.
> > Use require, flock, and Storable, just like God intended. 
> > 
> > Apache::Session is one of those things that looks cool, but fails
> > erratically under real-world conditions.  Sorry to be patronizing, but I told 
> > you so, nanana!
> > 
> > -scott
> > 
> 
> > 
> >>
> >>Anyone out there using Apache::Session::File and 
> >>Apache::Session::Lock::File under mod_perl?  The problem I am having is 
> >>that Apache::Session::Lock::File is aparently not releasing the 
> >>exclusive lock when the tied hash goes out of scope.  I can get a simple 
> >>test program to work from the command line, but when I try it under 
> >>mod_perl, it locks on the tie to the existing session.  If I delete the 
> >>lock file, it works fine.  Any ideas?
> >>
> >>
> > 
> > 
> > 
> 
> 
> 




More information about the Phoenix-pm mailing list