See my comment at the end (was: Re: [Catalyst] Troubleshooting Help Please)

Chisel Wright chisel at herlpacker.co.uk
Mon Oct 6 15:43:57 BST 2008


On Mon, Oct 06, 2008 at 09:30:42AM -0500, James R. Leu wrote:
> See my comment at the end.

I'm sorry if I start a flame-war, but is there any reason why long posts
don't get trimmed in this (and other) posts?

It happens quite a bit, and I seem to spend half my time scrolling past
the un-trimmed posts I've already read earlier in the thread.

Maybe we should switch to top-posting *G*

Chiz

> 
> On Mon, Oct 06, 2008 at 07:10:53AM -0700, J. Shirley wrote:
> > On Mon, Oct 6, 2008 at 6:47 AM, Paul Cory <pcory at wcpss.net> wrote:
> > > All,
> > >
> > > I've Googled repeatedly, and RTFMed, and I've reached a point where I have
> > > to ask for help.
> > >
> > > I have a Catalyst Web App that requires users to log in before they can do
> > > anything (it's a front end for managing mailing list subscriptions).
> > >
> > > This runs on Apache 1.3/mod_perl 1/perl 5.8.8/MySQL 5.0 on SLES 10. Apache,
> > > perl and mod_perl are compiled from source, not the distribution versions.
> > >
> > > The problem is that as the day progresses, and the application sees more and
> > > more use, login behavior becomes inconsistent.
> > >
> > > It starts out working flawlessly. Then, after a while, valid logins start to
> > > occasionally fail. Trying again gets you in - at the start. As time passes,
> > > the problem gets progressively worse and it eventually gets to the point
> > > where people quit trying because the success rate for logging in drops to
> > > 10% or less.
> > >
> > > By fail, I mean you go to the log in screen, put in a valid username and
> > > password combination, and then get seamlessly redirected to the log in
> > > screen, as if you had just arrived fresh to the app.
> > >
> > > Restarting Apache solves the problem, at least for a while. And then things
> > > begin to degrade again...
> > >
> > > I've verified that the problem is not end user error. Once you get it to
> > > recognize your login, the system work fine.
> > >
> > > Other Web Apps I've written, using HTML::Mason and running on this exact
> > > same server under mod_perl do not exhibit this behavior.
> > >
> > > I've checked the Apache error log, and I can't find any related errors.
> > >
> > > I'm using the following plug-in for authentication:
> > >
> > >         Authentication
> > >                 Session
> > >                        Session::Store::FastMmap
> > >                        Session::State::Cookie
> > >
> > >
> > > The problem did not appear in testing, only in production.
> > >
> > > Any ideas on where to look, or what to try?
> > >
> > > FWIW, here's the login controller code (no promises on it being great -
> > > programming is something I've learned in self-defense). The controller
> > > handles log ins for both the regular and admin side of the application.
> > > First it checks the regular users realm, and, if that fails,  then the admin
> > > users realm (two separate databases) .
> > >
> > >
> > >
> > > package esubscription::Controller::Login;
> > >
> > > use strict;
> > > use warnings;
> > > use base 'Catalyst::Controller';
> > >
> > >
> > >
> > > sub index : Private {
> > >    my ( $self, $c ) = @_;
> > >
> > >        # Get the username and password from form
> > >        my $login = $c->request->params->{login} || "";
> > >        my $password = $c->request->params->{password} || "";
> > >
> > >        # If the username and password values were found in form
> > >        if ($login && $password) {
> > >            # Attempt to log the user in
> > >            if ( $c->authenticate({login => $login, password => $password}) )
> > > {
> > >                # If successful, then let them use the application
> > >                $c->response->redirect($c->uri_for('/'));
> > >                return;
> > >            } else {
> > >
> > >                if (  $c->authenticate({login => $login, password =>
> > > $password}, 'admin') ) {
> > >
> > >  $c->response->redirect($c->uri_for('/admin/'));
> > >                                        return;
> > >
> > >                }
> > >
> > >                else { # Set an error message
> > >
> > >                 $c->stash->{message} = "Bad username or password.";
> > >                 $c->stash->{login} = "$login";
> > >                }
> > >            }
> > >        }
> > >
> > >        # If either of above don't work out, send to the login page
> > >        $c->stash->{template} = 'templates/forms/login_form.mas';
> > > }
> > >
> > >
> > >
> > > 1;
> > >
> > >
> > >
> > > Also, there's this snippet in the root controller that handles checking for
> > > valid user:
> > >
> > >        # If a user doesn't exist, force login
> > >
> > >        if (!$c->user_exists) {
> > >
> > >                $c->response->redirect($c->uri_for('login'));
> > >                # Return 0 to cancel 'post-auto' processing and prevent use
> > > of application
> > >                return 0;
> > >        }
> > >
> > >
> > >
> > > Thanks for the help!
> > >
> > >
> > > Paul Cory
> > > WCPSS Webmaster
> > > pcory at wcpss.net
> > >
> > >
> > >
> > 
> > 
> > Please also send your applications configuration so we can see your
> > auth store.  I do just have to ask though... why such ancient
> > software?  Apache 1 and MP1?  Ouch.
> > 
> > Off the top of my head, you are running out of space on your cache dir
> > (how big is your tmp dir?).  If you change your Session::Store or
> > setup for a larger cache it'd probably alleviate the problem.
> 
> ... or running out of file descriptors.  Do a 'lsof -p <pid>' where PID
> is that of the httpd children.  I see a file descriptor leak in
> Catalyst::Engine::finalize_body in my cat app.
> 
> See this post for more info:
> 
>     http://lists.scsys.co.uk/pipermail/catalyst/2007-November/015817.html
> 
> > -J
> > 
> > _______________________________________________
> > List: Catalyst at lists.scsys.co.uk
> > Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
> > Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
> > Dev site: http://dev.catalyst.perl.org/
> 
> -- 
> James R. Leu
> jleu at mindspring.com



> _______________________________________________
> List: Catalyst at lists.scsys.co.uk
> Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
> Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
> Dev site: http://dev.catalyst.perl.org/


-- 
Chisel Wright
e: chisel at herlpacker.co.uk
w: http://www.herlpacker.co.uk/

  Pedantry is a hugely underrated attribute.



More information about the Catalyst mailing list