crash on Perlbal 1.51

Kevin Rosenberg kevin at rosenberg.net
Wed Nov 29 15:22:50 UTC 2006


Del Raco wrote:
> Has anyone seen the following error on Perlbal 1.51? 
> Nov 28 03:10:37 app-200 perlbal[16356]: crash log:
> Can't call method "req_keep_alive" on an undefined
> value at
> /usr/local/share/perl/5.8.7/Perlbal/ClientHTTPBase.pm
> line 124.

Yes.

> Any help would be appreciated.  Thanks.

I quickly hacked a workaround, but I don't understand the true cause of
the error:

Index: lib/Perlbal/ClientHTTPBase.pm
===================================================================
--- lib/Perlbal/ClientHTTPBase.pm       (revision 608)
+++ lib/Perlbal/ClientHTTPBase.pm       (working copy)
@@ -121,7 +121,7 @@
     print "  service's persist_client = $persist_client\n" if
     Perlbal::DEBUG >= 3;
 
     # do keep alive if they sent content-length or it's a head
     request
-    my $do_keepalive = $persist_client && $rqhd->req_keep_alive($reshd);
+    my $do_keepalive = $persist_client && $rqhd && $rqhd->req_keep_alive($reshd);
     if ($do_keepalive) {
         print "  doing keep-alive to client\n" if Perlbal::DEBUG >=
         3;
         my $timeout = $self->max_idle_time;
Index: lib/Perlbal/BackendHTTP.pm
===================================================================
--- lib/Perlbal/BackendHTTP.pm  (revision 608)
+++ lib/Perlbal/BackendHTTP.pm  (working copy)
@@ -483,6 +483,9 @@
         return $self->handle_response;
     }
 
+    # KMR
+    return if ref $client eq "Perlbal::ClientHTTPBase";
+
     # if our client's behind more than the max limit, stop buffering
     if ($client->too_far_behind_backend) {
         $self->watch_read(0);


More information about the perlbal mailing list