lots of debuging to find that the zombie loop was broken
authormiker <miker@9efc2488-bf62-4759-914b-345cdb29e865>
Mon, 7 Mar 2005 22:00:06 +0000 (22:00 +0000)
committermiker <miker@9efc2488-bf62-4759-914b-345cdb29e865>
Mon, 7 Mar 2005 22:00:06 +0000 (22:00 +0000)
git-svn-id: svn://svn.open-ils.org/OpenSRF/trunk@194 9efc2488-bf62-4759-914b-345cdb29e865

src/perlmods/OpenSRF/AppSession.pm
src/perlmods/OpenSRF/Application.pm
src/perlmods/OpenSRF/DomainObject/oilsMessage.pm
src/perlmods/OpenSRF/Transport.pm
src/perlmods/OpenSRF/UnixServer.pm

index c8dcc48..487e207 100644 (file)
@@ -118,7 +118,7 @@ sub server_build {
 
        #my $max_requests = $conf->$service->max_requests;
        my $max_requests        = $config_client->config_value("apps",$service,"max_requests");
-       $logger->debug( "Max Requests for $service is $max_requests", INTERNAL );# if $max_requests;
+       $logger->debug( "Max Requests for $service is $max_requests", INTERNAL ) if (defined $max_requests);
 
        $logger->transport( "AppSession creating new session: $sess_id", INTERNAL );
 
index ee4648a..b79c785 100644 (file)
@@ -62,7 +62,7 @@ sub handler {
        my ($self, $session, $app_msg) = @_;
 
        if( ! $app_msg ) {
-               return 0;  # error?
+               return 1;  # error?
        }
 
        $log->debug( "In Application::handler()", DEBUG );
@@ -379,7 +379,7 @@ sub run {
                        $log->debug("... Responding with : " . join(" ",$req->responses), DEBUG);
                        return $req->responses;
                } else {
-                       $log->debug("A top level Request object is responding $resp", DEBUG);
+                       $log->debug("A top level Request object is responding $resp", DEBUG) if (defined $resp);
                        return $resp;
                }
        } else {
index 27de89f..c6c7af5 100644 (file)
@@ -160,7 +160,6 @@ sub handler {
        $log->debug("endpoint => [".$session->endpoint."]", DEBUG);
        $log->debug("OpenSRF::AppSession->SERVER => [".$session->SERVER()."]", DEBUG);
 
-       $log->debug("Before ALL", DEBUG);
 
        my $val;
        if ( $session->endpoint == $session->SERVER() ) {
@@ -171,8 +170,12 @@ sub handler {
        }
 
        if( $val ) {
+               $log->debug("Passing request up to OpenSRF::Application", DEBUG);
                return OpenSRF::Application->handler($session, $self->payload);
+       } else {
+               $log->debug("Request was handled internally", DEBUG);
        }
+       $log->debug("Returning to ".join('::',(caller)[0,3]), DEBUG);
 
        return 1;
 
index 7cab41e..3859409 100644 (file)
@@ -162,6 +162,8 @@ sub handler {
 
                                if( ! $msg->handler( $app_session ) ) { return 0; }
 
+                               $logger->debug("Successfully handled message", DEBUG);
+
                        } catch Error with {
 
                                my $e = shift;
@@ -177,6 +179,7 @@ sub handler {
                } else { 
 
                        if( ! $msg->handler( $app_session ) ) { return 0; } 
+                       $logger->debug("Successfully handled message", DEBUG);
 
                }
 
index d433e61..b25e3ce 100644 (file)
@@ -96,14 +96,14 @@ sub process_request {
        my $keepalive = $client->config_value("apps", $self->app(), "keepalive");
 
        my $req_counter = 0;
-       while( $app_session->state and $app_session->state != $app_session->DISCONNECTED() and
+       while( $app_session and $app_session->state and $app_session->state != $app_session->DISCONNECTED() and
                        $app_session->find( $app_session->session_id ) ) {
                
 
                my $before = time;
-               $logger->transport( "UnixServer calling queue_wait $keepalive", INTERNAL );
+               $logger->debug( "UnixServer calling queue_wait $keepalive", INTERNAL );
                $app_session->queue_wait( $keepalive );
-               $logger->transport( "after queue wait $keepalive", INTERNAL );
+               $logger->debug( "after queue wait $keepalive", INTERNAL );
                my $after = time;
 
                if( ($after - $before) >= $keepalive ) { 
@@ -119,13 +119,12 @@ sub process_request {
        }
 
        my $x = 0;
-       while( 1 ) {
-               $logger->transport( "Looping on zombies " . $x++ , DEBUG);
-               last unless ( $app_session->queue_wait(0));
+       while( $app_session && $app_session->queue_wait(0) ) {
+               $logger->debug( "Looping on zombies " . $x++ , DEBUG);
        }
 
-       $logger->transport( "Timed out, disconnected, or auth failed", INFO );
-       $app_session->kill_me;
+       $logger->debug( "Timed out, disconnected, or auth failed", INFO );
+       $app_session->kill_me if ($app_session);
 
        $0 = $orig;
 
@@ -207,6 +206,18 @@ sub child_init_hook {
 
        $0 =~ s/master/drone/g;
 
+       if ($ENV{OPENSRF_PROFILE}) {
+               my $file = $0;
+               $file =~ s/\W/_/go;
+               eval "use Devel::Profiler output_file => '/tmp/profiler_$file.out', buffer_size => 0;";
+               if ($@) {
+                       $logger->debug("Could not load Devel::Profiler: $@",ERROR);
+               } else {
+                       $0 .= ' [PROFILING]';
+                       $logger->debug("Running under Devel::Profiler", INFO);
+               }
+       }
+
        my $self = shift;
 
 #      $logger->transport(