From e78b112c753d3f617c2e6cad2582edc355500d95 Mon Sep 17 00:00:00 2001 From: miker Date: Mon, 7 Mar 2005 22:00:06 +0000 Subject: [PATCH] lots of debuging to find that the zombie loop was broken git-svn-id: svn://svn.open-ils.org/OpenSRF/trunk@194 9efc2488-bf62-4759-914b-345cdb29e865 --- src/perlmods/OpenSRF/AppSession.pm | 2 +- src/perlmods/OpenSRF/Application.pm | 4 +-- .../OpenSRF/DomainObject/oilsMessage.pm | 5 +++- src/perlmods/OpenSRF/Transport.pm | 3 +++ src/perlmods/OpenSRF/UnixServer.pm | 27 +++++++++++++------ 5 files changed, 29 insertions(+), 12 deletions(-) diff --git a/src/perlmods/OpenSRF/AppSession.pm b/src/perlmods/OpenSRF/AppSession.pm index c8dcc48..487e207 100644 --- a/src/perlmods/OpenSRF/AppSession.pm +++ b/src/perlmods/OpenSRF/AppSession.pm @@ -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 ); diff --git a/src/perlmods/OpenSRF/Application.pm b/src/perlmods/OpenSRF/Application.pm index ee4648a..b79c785 100644 --- a/src/perlmods/OpenSRF/Application.pm +++ b/src/perlmods/OpenSRF/Application.pm @@ -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 { diff --git a/src/perlmods/OpenSRF/DomainObject/oilsMessage.pm b/src/perlmods/OpenSRF/DomainObject/oilsMessage.pm index 27de89f..c6c7af5 100644 --- a/src/perlmods/OpenSRF/DomainObject/oilsMessage.pm +++ b/src/perlmods/OpenSRF/DomainObject/oilsMessage.pm @@ -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; diff --git a/src/perlmods/OpenSRF/Transport.pm b/src/perlmods/OpenSRF/Transport.pm index 7cab41e..3859409 100644 --- a/src/perlmods/OpenSRF/Transport.pm +++ b/src/perlmods/OpenSRF/Transport.pm @@ -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); } diff --git a/src/perlmods/OpenSRF/UnixServer.pm b/src/perlmods/OpenSRF/UnixServer.pm index d433e61..b25e3ce 100644 --- a/src/perlmods/OpenSRF/UnixServer.pm +++ b/src/perlmods/OpenSRF/UnixServer.pm @@ -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( -- 2.43.2