Loading ...
Sorry, an error occurred while loading the content.

Re: [mp1] Method handler that eventually seems to "forget" it's a method handler

Expand Messages
  • Geoffrey Young
    ... make that PerlTransHandler MyApp::MyInstall::Dispatcher- handler and see if that helps. you should also be preloading via PerlModule
    Message 1 of 7 , Feb 2, 2005
    • 0 Attachment
      > <VirtualHost xxx>
      > PerlTransHandler MyApp::MyInstall::Dispatcher

      make that

      PerlTransHandler MyApp::MyInstall::Dispatcher->handler

      and see if that helps. you should also be preloading via

      PerlModule MyApp::MyInstall::Dispatcher

      or in a startup.pl.

      HTH

      --Geoff
    • Martin Moss
      I ve seen this problem and never got to the bottom of it, on a redhat box with 5.8.3 (I think) and same apache and mod_perl, Marty ...
      Message 2 of 7 , Feb 2, 2005
      • 0 Attachment
        I've seen this problem and never got to the bottom of
        it, on a redhat box with 5.8.3 (I think) and same
        apache and mod_perl,

        Marty




        --- Andrew Green <andrew@...> wrote:
        > 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.
        >





        ___________________________________________________________
        ALL-NEW Yahoo! Messenger - all new features - even more fun! http://uk.messenger.yahoo.com
      • Martin Moss
        I tried - handler in my configs, made no difference. I was doing a require in a startup script if that makes any difference. Haven t seen this issue with
        Message 3 of 7 , Feb 2, 2005
        • 0 Attachment
          I tried ->handler in my configs, made no difference.
          I was doing a 'require' in a startup script if that
          makes any difference. Haven't seen this issue with
          simillar code anywhere else..

          Marty

          --- Geoffrey Young <geoff@...> wrote:

          >
          > > <VirtualHost xxx>
          > > PerlTransHandler MyApp::MyInstall::Dispatcher
          >
          > make that
          >
          > PerlTransHandler
          > MyApp::MyInstall::Dispatcher->handler
          >
          > and see if that helps. you should also be
          > preloading via
          >
          > PerlModule MyApp::MyInstall::Dispatcher
          >
          > or in a startup.pl.
          >
          > HTH
          >
          > --Geoff
          >





          ___________________________________________________________
          ALL-NEW Yahoo! Messenger - all new features - even more fun! http://uk.messenger.yahoo.com
        • Andrew Green
          ... I ll give that a go and see. Is the following also kosher, then? $r- push_handlers( PerlCleanupHandler = MyApp::MyInstall::Cleaner- handler ); ... Yes, I
          Message 4 of 7 , Feb 2, 2005
          • 0 Attachment
            On Wed, 02 Feb 2005 10:10:56 -0500, Geoffrey Young wrote:

            > PerlTransHandler MyApp::MyInstall::Dispatcher->handler
            >
            > and see if that helps.

            I'll give that a go and see. Is the following also kosher, then?

            $r->push_handlers(
            PerlCleanupHandler => MyApp::MyInstall::Cleaner->handler
            );


            > you should also be preloading via
            >
            > PerlModule MyApp::MyInstall::Dispatcher
            >
            > or in a startup.pl.

            Yes, I am -- sorry I forgot to mention this -- in a startup.pl, as
            follows:

            use MyApp::Core::Dispatcher ();
            use MyApp::MyInstall::Dispatcher ();


            Thanks for your help.

            Cheers,
            Andrew.
            --
            ::
            article seven Andrew Green
            automatic internet andrew@... | www.article7.co.uk
          • Geoffrey Young
            ... sorry, no - you can t currently push a method handler like that. see the * method handler cached-CVs entry in the STATUS file that ships with mod_perl-1.0
            Message 5 of 7 , Feb 2, 2005
            • 0 Attachment
              Andrew Green wrote:
              > On Wed, 02 Feb 2005 10:10:56 -0500, Geoffrey Young wrote:
              >
              >
              >> PerlTransHandler MyApp::MyInstall::Dispatcher->handler
              >>
              >>and see if that helps.
              >
              >
              > I'll give that a go and see. Is the following also kosher, then?
              >
              > $r->push_handlers(
              > PerlCleanupHandler => MyApp::MyInstall::Cleaner->handler
              > );

              sorry, no - you can't currently push a method handler like that. see the

              * method handler cached-CVs

              entry in the STATUS file that ships with mod_perl-1.0 for some relevant links.

              --Geoff
            • Geoffrey Young
              ... and for those that don t go and read the links, while the above form isn t valid you should be able to use this instead. $r- push_handlers(
              Message 6 of 7 , Feb 2, 2005
              • 0 Attachment
                >>I'll give that a go and see. Is the following also kosher, then?
                >>
                >> $r->push_handlers(
                >> PerlCleanupHandler => MyApp::MyInstall::Cleaner->handler
                >> );
                >
                >
                > sorry, no - you can't currently push a method handler like that. see the
                >
                > * method handler cached-CVs
                >
                > entry in the STATUS file that ships with mod_perl-1.0 for some relevant links.

                and for those that don't go and read the links, while the above form isn't
                valid you should be able to use this instead.

                $r->push_handlers(
                PerlCleanupHandler => 'MyApp::MyInstall::Cleaner->handler'
                );

                (note the quotes)

                --Geoff
              Your message has been successfully submitted and would be delivered to recipients shortly.