--- loncom/loncnew 2003/10/07 11:23:03 1.27 +++ loncom/loncnew 2003/10/27 10:09:21 1.30 @@ -2,7 +2,7 @@ # The LearningOnline Network with CAPA # lonc maintains the connections to remote computers # -# $Id: loncnew,v 1.27 2003/10/07 11:23:03 foxr Exp $ +# $Id: loncnew,v 1.30 2003/10/27 10:09:21 foxr Exp $ # # Copyright Michigan State University Board of Trustees # @@ -45,6 +45,19 @@ # Change log: # $Log: loncnew,v $ +# Revision 1.30 2003/10/27 10:09:21 foxr +# Tighten up a few compares to eq and flip a few debug levels around... nothing +# critical +# +# Revision 1.29 2003/10/21 14:24:42 foxr +# Fix little typo that may explain growth of connections +# +# Revision 1.28 2003/10/14 15:36:21 albertel +# - making it easier to run loncnew, +# /etc/init.d/loncontrol startnew +# /etc/init.d/loncontrol restartnew +# will now start loncnew in place of lonc +# # Revision 1.27 2003/10/07 11:23:03 foxr # Installed and tested code to process reinit in parent server. # @@ -175,7 +188,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 $NextDebugLevel= 2; # So Sigint can toggle this. my $IdleTimeout= 3600; # Wait an hour before pruning connections. # @@ -192,8 +205,8 @@ my $ConnectionCount = 0; my $IdleSeconds = 0; # Number of seconds idle. my $Status = ""; # Current status string. my $RecentLogEntry = ""; -my $ConnectionRetries=5; # Number of connection retries allowed. -my $ConnectionRetriesLeft=5; # Number of connection retries remaining. +my $ConnectionRetries=2; # Number of connection retries allowed. +my $ConnectionRetriesLeft=2; # Number of connection retries remaining. # # The hash below gives the HTML format for log messages @@ -403,18 +416,18 @@ sub Tick { if ($ConnectionRetriesLeft > 0) { my $Connections = ($Requests <= $MaxConnectionCount) ? $Requests : $MaxConnectionCount; - Debug(1,"Work but no connections, start ".$Connections." of them"); + Debug(5,"Work but no connections, start ".$Connections." of them"); my $successCount = 0; for (my $i =0; $i < $Connections; $i++) { $successCount += MakeLondConnection(); } if($successCount == 0) { # All connections failed: - Debug(1,"Work in queue failed to make any connectiouns\n"); + Debug(5,"Work in queue failed to make any connectiouns\n"); EmptyQueue(); # Fail pending transactions with con_lost. } } else { ShowStatus(GetServerHost()." >>> DEAD!!! <<<"); - Debug(1,"Work in queue, but gave up on connections..flushing\n"); + Debug(5,"Work in queue, but gave up on connections..flushing\n"); EmptyQueue(); # Connections can't be established. } @@ -461,19 +474,19 @@ sub ServerToIdle { my $Socket = shift; # Get the socket. delete($ActiveTransactions{$Socket}); # Server has no transaction - &Debug(6, "Server to idle"); + &Debug(5, "Server to idle"); # If there's work to do, start the transaction: my $reqdata = $WorkQueue->dequeue(); # This is a LondTransaction - unless($reqdata eq undef) { - Debug(9, "Queue gave request data: ".$reqdata->getRequest()); + if ($reqdata ne undef) { + Debug(5, "Queue gave request data: ".$reqdata->getRequest()); &StartRequest($Socket, $reqdata); } else { # There's no work waiting, so push the server to idle list. - &Debug(8, "No new work requests, server connection going idle"); + &Debug(5, "No new work requests, server connection going idle"); $IdleConnections->push($Socket); } } @@ -519,7 +532,7 @@ sub ClientWritable { # request. &Debug(9,"Send result is ".$result." Defined: ".defined($result)); - if(defined($result)) { + if($result ne undef) { &Debug(9, "send result was defined"); if($result == length($Data)) { # Entire string sent. &Debug(9, "ClientWritable data all written"); @@ -590,7 +603,7 @@ The transaction that is being completed. =cut sub CompleteTransaction { - &Debug(6,"Complete transaction"); + &Debug(5,"Complete transaction"); my $Socket = shift; my $Transaction = shift; @@ -629,7 +642,6 @@ sub StartClientReply { &Debug(8," Reply was: ".$data); my $Serial = $ActiveClients{$Client}; my $desc = sprintf("Connection to lonc client %d", - $Serial); Event->io(fd => $Client, poll => "w", @@ -878,7 +890,7 @@ sub LondReadable { $ConnectionRetriesLeft = $ConnectionRetries; # success resets the count $Watcher->cancel(); if(exists($ActiveTransactions{$Socket})) { - Debug(8,"Completing transaction!!"); + Debug(5,"Completing transaction!!"); CompleteTransaction($Socket, $ActiveTransactions{$Socket}); } else { @@ -1125,7 +1137,7 @@ sub MakeLondConnection { my $Connection = LondConnection->new(&GetServerHost(), &GetServerPort()); - if($Connection == undef) { # Needs to be more robust later. + if($Connection eq undef) { # Needs to be more robust later. Log("CRITICAL","Failed to make a connection with lond."); $ConnectionRetriesLeft--; return 0; # Failure. @@ -1137,7 +1149,7 @@ sub MakeLondConnection { # exchange underway. # my $Socket = $Connection->GetSocket(); - if($Socket == undef) { + if($Socket eq undef) { die "did not get a socket from the connection"; } else { &Debug(9,"MakeLondConnection got socket: ".$Socket); @@ -1240,11 +1252,11 @@ sub QueueTransaction { my $LondSocket = $IdleConnections->pop(); if(!defined $LondSocket) { # Need to queue request. - Debug(8,"Must queue..."); + Debug(5,"Must queue..."); $WorkQueue->enqueue($requestData); if($ConnectionCount < $MaxConnectionCount) { if($ConnectionRetriesLeft > 0) { - Debug(4,"Starting additional lond connection"); + Debug(5,"Starting additional lond connection"); if(MakeLondConnection() == 0) { EmptyQueue(); # Fail transactions, can't make connection. } @@ -1282,7 +1294,7 @@ sub ClientRequest { my $rv = $socket->recv($thisread, POSIX::BUFSIZ, 0); Debug(8, "rcv: data length = ".length($thisread) ." read =".$thisread); - unless (defined $rv && length($thisread)) { + unless (defined $rv && length($thisread)) { # Likely eof on socket. Debug(5,"Client Socket closed on lonc for ".$RemoteHost); close($socket); @@ -1774,7 +1786,7 @@ sub Restart { Log("CRITICAL", "Restarting"); my $execdir = $perlvar{'lonDaemons'}; unlink("$execdir/logs/lonc.pid"); - exec("$execdir/lonc"); + exec("$execdir/loncnew"); } =pod 500 Internal Server Error

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at root@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.