What does MasonHandler actually look like? -mj
On Tue, 24 Sep 2002, Ken Miller wrote: > Got a phone call yesterday from a user who was complaining that every few > times a link was clicked on they were getting an "Internal Server Error". > They could click back, try again, and be successful. Further investigation > led me to find that one of the instances of my back end server was always > generating an error. > > Restarts would not fix the problem - one or two of the app servers would > always throw errors.... > > The error was this: > > [Mon Sep 23 19:12:21 2002] [error] Can't call method "dir_config" on an > undefined value at /webroot/lib/Husky/Web/Apache > /MasonHandler.pm line 68. > > The line in question is this: > > my $appl_id = $r->dir_config( 'ApplID' ); > > So, you can see that '$r' was undefined. > > The interesting thing is that the handler that's invoked for this request > has a prototype: > > sub handler( $$ ) { my $class = shift; my $r = shift; ... } > > and the handler is either invoked by Apache directly, or from internal logic > when a request is passed off. The handler is invoked in one of two ways: > > __PACKAGE__->a_method_name( $r ); > > or > > Foo::Bar::Bah->a_method_name( $r ); > > Now, it appears that every now and then the class reference is NOT being > sent; hence, $class actually contains $r, and $r is undefined. This is > obviously bad, since $r->dir_config dies a horrible death..... > > Has anyone had a problem with this? Is there something that might give me a > clue as to why this is failing? In the meantime, I've when back to > referencing the sub directly, as opposed to going through the class. It > works, but it's not as nice as a class method... > > Cheers! > > -klm. > > +---------------------------------+-------------------------------------+ > | Kenneth (Ken) L. Miller | There are 10 kinds of people in the | > | Shetland Software Services Inc. | world: Those who understand binary, | > | [EMAIL PROTECTED] | and those who don't. (unknown) | > +---------------------------------+-------------------------------------+ >