--- loncom/loncnew 2003/07/15 02:07:05 1.15 +++ loncom/loncnew 2003/07/29 02:33:05 1.16 @@ -2,7 +2,7 @@ # The LearningOnline Network with CAPA # lonc maintains the connections to remote computers # -# $Id: loncnew,v 1.15 2003/07/15 02:07:05 foxr Exp $ +# $Id: loncnew,v 1.16 2003/07/29 02:33:05 foxr Exp $ # # Copyright Michigan State University Board of Trustees # @@ -46,6 +46,10 @@ # Change log: # $Log: loncnew,v $ +# Revision 1.16 2003/07/29 02:33:05 foxr +# Add SIGINT processing to child processes to toggle annoying trace mode +# on/off.. will try to use this to isolate the compute boud process issue. +# # Revision 1.15 2003/07/15 02:07:05 foxr # Added code for lonc/lond transaction timeouts. Who knows if it works right. # The intent is for a timeout to fail any transaction in progress and kill @@ -125,6 +129,7 @@ my $MaxConnectionCount = 10; # Will get my $ClientConnection = 0; # Uniquifier for client events. my $DebugLevel = 0; +my $NextDebugLevel= 10; # So Sigint can toggle this. my $IdleTimeout= 3600; # Wait an hour before pruning connections. # @@ -261,7 +266,7 @@ sub Debug { my $level = shift; my $message = shift; if ($level <= $DebugLevel) { - print $message." host = ".$RemoteHost."\n"; + Log("INFO", "-Debug- $message host = $RemotHost"); } } @@ -1368,6 +1373,22 @@ sub SignalledToDeath { exit 0; } + +=head2 ToggleDebug + +This sub toggles trace debugging on and off. + +=cut + +sub ToggleDebug { + my $Current = $DebugLevel; + $DebugLevel = $NextDebugLevel; + $NextDebugLevel = $Current; + + Log("SUCCESS", "New debugging level for $RemoteHost now $DebugLevel"); + +} + =head2 ChildProcess This sub implements a child process for a single lonc daemon. @@ -1380,12 +1401,6 @@ sub ChildProcess { # # Signals must be handled by the Event framework... # -# $SIG{QUIT} = \&SignalledToDeath; -# $SIG{HUP} = \&ChildStatus; -# $SIG{USR1} = IGNORE; -# $SIG{INT} = DEFAULT; -# $SIG{CHLD} = IGNORE; -# $SIG{__DIE__} = \&SignalledToDeath; Event->signal(signal => "QUIT", cb => \&SignalledToDeath, @@ -1396,6 +1411,9 @@ sub ChildProcess { Event->signal(signal => "USR1", cb => \&ChildStatus, data => "USR1"); + Event->signal(signal => "INT", + cb => \&ToggleDebug, + data => "INT"); SetupTimer();