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) |
> +---------------------------------+-------------------------------------+
>