Hi,

I seem to have a bizarre problem with method handlers on my setup.  I 
have a set of different handlers, all of which are method handlers so 
that I can easily inherit shared code across a collection of different 
installations of my application on the same server.

The first handler to get invoked is a PerlTransHandler -- everything 
works fine (or at least seems to) for quite some time, but then the 
handler begins "forgetting" that it's a method handler, and instead of 
the class being passed before $r, $r becomes the first thing passed.  
At least, that seems to be what's happening.  Is this a known problem?

My setup is as follows:

         Perl 5.8.0 (Red Hat EL 3 default)
         Apache/1.3.29
         mod_perl/1.29


Here's what I imagine to be the relevant bits of httpd.conf:

        MinSpareServers 10
        MaxSpareServers 20
        StartServers 10
        MaxClients 60
        MaxRequestsPerChild 1000
        ...
        <VirtualHost xxx>
                PerlTransHandler MyApp::MyInstall::Dispatcher
                ...


Here's the relevant bits of Dispatcher.pm:

        package MyApp::MyInstall::Dispatcher;

        use strict;
        use Apache::Constants qw(OK DECLINED NOT_FOUND REDIRECT FORBIDDEN);
        use Apache::URI;

        our @ISA = qw(MyApp::Core::Dispatcher);

        1;

        ####

        sub handler ($$) {

                my ($class,$r) = @_;
                return DECLINED unless ($r->is_initial_req());
                ...


And here's the error (that only starts appearing after the server's 
been running for a while:

        Can't call method "is_initial_req" on an undefined value...

The error then points to the line quoted above.  Of course, Apache 
never gets to other handlers later in the sequence, so I can't easily 
see whether the problem is limited to TransHandlers, or whether all my 
method handlers would stop acting as such.  Restarting the server makes 
the problem go away -- for a while!

I'd really like to avoid having to upgrade/change Perl or mod_perl if 
at all possible.  Nonetheless, any help, advice or guidance anyone can 
provide would be very much appreciated.

Cheers,
Andrew.

Reply via email to