--- loncom/loncron 2006/03/07 20:01:26 1.67
+++ loncom/loncron 2007/04/03 00:47:26 1.71
@@ -2,7 +2,7 @@
# Housekeeping program, started by cron, loncontrol and loncron.pl
#
-# $Id: loncron,v 1.67 2006/03/07 20:01:26 albertel Exp $
+# $Id: loncron,v 1.71 2007/04/03 00:47:26 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -79,9 +79,8 @@ ENDERROUT
sub start_daemon {
my ($fh,$daemon,$pidfile,$args) = @_;
my $progname=$daemon;
- if ($daemon eq 'lonc' && $args eq 'new') {
+ if ($daemon eq 'lonc') {
$progname='loncnew';
- print "new ";
}
my $error_fname="$perlvar{'lonDaemons'}/logs/${daemon}_errors";
my $size=(stat($error_fname))[7];
@@ -486,7 +485,7 @@ sub test_connections {
foreach my $tryserver (sort(keys(%{$hostname}))) {
print(".");
my $result;
- my $answer=reply("ping",$tryserver,$hostname);
+ my $answer=&reply("ping",$tryserver,$hostname);
if ($answer eq "$tryserver:$perlvar{'lonHostID'}") {
$result="ok";
$good++;
@@ -511,7 +510,7 @@ sub test_connections {
# ------------------------------------------------------------ Delayed messages
sub check_delayed_msg {
- my ($fh)=@_;
+ my ($fh,$hostname)=@_;
&log($fh,'
Delayed Messages
');
print "checking buffers\n";
@@ -536,13 +535,22 @@ sub check_delayed_msg {
if ($unsend) { $simplestatus{'unsend'}=$unsend; }
&log($fh,"Outgoing Buffer
\n");
-
+# list directory with delayed messages and remember offline servers
+ my %servers=();
open (DFH,"ls -lF $perlvar{'lonSockDir'}/delayed|");
- while (my $line=) {
+ while (my $line=) {
+ my ($server)=($line=~/\.(\w+)$/);
+ if ($server) { $servers{$server}=1; }
&log($fh,&encode_entities($line,'<>&"'));
}
&log($fh,"
\n");
close (DFH);
+# pong to all servers that have delayed messages
+# this will trigger a reverse connection, which should flush the buffers
+ foreach my $tryserver (keys %servers) {
+ my $answer=&reply("pong",$tryserver,$hostname);
+ &log($fh,"Pong to $tryserver: $answer
");
+ }
}
sub finish_logging {
@@ -593,8 +601,7 @@ sub usage {
loncron - housekeeping program that checks up on various parts of Lon-CAPA
Options:
- --help Display help
- --oldlonc When starting the lonc daemon use 'lonc' not 'loncnew'
+ --help Display
--noemail Do not send the status email
--justcheckconnections Only check the current status of the lonc/d
connections, do not send emails do not
@@ -614,10 +621,9 @@ USAGE
# ================================================================ Main Program
sub main () {
- my ($oldlonc,$help,$justcheckdaemons,$noemail,$justcheckconnections,
+ my ($help,$justcheckdaemons,$noemail,$justcheckconnections,
$justreload);
&GetOptions("help" => \$help,
- "oldlonc" => \$oldlonc,
"justcheckdaemons" => \$justcheckdaemons,
"noemail" => \$noemail,
"justcheckconnections" => \$justcheckconnections,
@@ -705,23 +711,20 @@ sub main () {
if ( &checkon_daemon($fh,'lond',40000,'USR1') eq 'running') {
&checkon_daemon($fh,'lond',40000,'USR2');
}
- my $args='new';
- if ($oldlonc) { $args = ''; }
- &checkon_daemon($fh,'lonc',40000,'USR1',$args);
+ &checkon_daemon($fh,'lonc',40000,'USR1');
&checkon_daemon($fh,'lonhttpd',40000);
&checkon_daemon($fh,'lonmemcached',40000);
+ &checkon_daemon($fh,'lonmaxima',40000);
}
if ($justreload) {
&checkon_daemon($fh,'lond',40000,'USR2');
- my $args='new';
- if ($oldlonc) { $args = ''; }
- &checkon_daemon($fh,'lonc',40000,'USR2',$args);
+ &checkon_daemon($fh,'lonc',40000,'USR2');
}
if ($justcheckconnections) {
&test_connections($fh,\%hostname);
}
if (!$justcheckdaemons && !$justcheckconnections && !$justreload) {
- &check_delayed_msg($fh);
+ &check_delayed_msg($fh,\%hostname);
&finish_logging($fh);
&log_simplestatus();