--- loncom/loncron 2011/11/03 22:32:04 1.93
+++ loncom/loncron 2014/03/17 14:47:38 1.100
@@ -2,7 +2,7 @@
# Housekeeping program, started by cron, loncontrol and loncron.pl
#
-# $Id: loncron,v 1.93 2011/11/03 22:32:04 raeburn Exp $
+# $Id: loncron,v 1.100 2014/03/17 14:47:38 bisitz Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -32,6 +32,7 @@ use strict;
use lib '/home/httpd/lib/perl/';
use LONCAPA::Configuration;
+use LONCAPA::Checksumming;
use LONCAPA;
use Apache::lonnet;
use Apache::loncommon;
@@ -270,12 +271,7 @@ sub log_machine_info {
&log($fh,"
distprobe
");
&log($fh,"");
- open(DSH,"$perlvar{'lonDaemons'}/distprobe |");
- while (my $line=) {
- &log($fh,&encode_entities($line,'<>&"'));
- $psproc++;
- }
- close(DSH);
+ &log($fh,&encode_entities(&LONCAPA::distro(),'<>&"'));
&log($fh,"
");
&errout($fh);
@@ -515,7 +511,7 @@ sub clean_sockets {
# ----------------------------------------------------------------------- httpd
sub check_httpd_logs {
my ($fh)=@_;
- if (open(PIPE,"lchttpdlogs|")) {
+ if (open(PIPE,"./lchttpdlogs|")) {
while (my $line=) {
&log($fh,$line);
if ($line=~/\[error\]/) { $notices++; }
@@ -530,7 +526,7 @@ sub check_httpd_logs {
sub rotate_lonnet_logs {
my ($fh)=@_;
&log($fh,'
lonnet
Temp Log
');
- print "checking logs\n";
+ print "Checking logs.\n";
if (-e "$perlvar{'lonDaemons'}/logs/lonnet.log"){
open (DFH,"tail -n50 $perlvar{'lonDaemons'}/logs/lonnet.log|");
while (my $line=) {
@@ -574,7 +570,7 @@ sub rotate_other_logs {
sub test_connections {
my ($fh)=@_;
&log($fh,'
Connections
');
- print "testing connections\n";
+ print "Testing connections.\n";
&log($fh,"");
my ($good,$bad)=(0,0);
my %hostname = &Apache::lonnet::all_hostnames();
@@ -608,7 +604,7 @@ sub test_connections {
sub check_delayed_msg {
my ($fh)=@_;
&log($fh,'
Delayed Messages
');
- print "checking buffers\n";
+ print "Checking buffers.\n";
&log($fh,'Scanning Permanent Log
');
@@ -627,7 +623,9 @@ sub check_delayed_msg {
}
&log($fh,"Total unsend messages: $unsend
\n");
- $warnings=$warnings+5*$unsend;
+ if ($unsend > 0) {
+ $warnings=$warnings+5*$unsend;
+ }
if ($unsend) { $simplestatus{'unsend'}=$unsend; }
&log($fh,"Outgoing Buffer
\n");
@@ -641,20 +639,27 @@ sub check_delayed_msg {
}
&log($fh,"
\n");
close (DFH);
+ my %hostname = &Apache::lonnet::all_hostnames();
+ my $numhosts = scalar(keys(%hostname));
# 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;
- eval {
- local $SIG{ ALRM } = sub { die "TIMEOUT" };
- alarm(20);
- $answer = &Apache::lonnet::reply("pong",$tryserver);
- alarm(0);
- };
- if ($@ && $@ =~ m/TIMEOUT/) {
- print "time out while contacting: $tryserver for pong\n";
+ foreach my $tryserver (sort(keys(%servers))) {
+ if ($hostname{$tryserver} || !$numhosts) {
+ my $answer;
+ eval {
+ local $SIG{ ALRM } = sub { die "TIMEOUT" };
+ alarm(20);
+ $answer = &Apache::lonnet::reply("pong",$tryserver);
+ alarm(0);
+ };
+ if ($@ && $@ =~ m/TIMEOUT/) {
+ &log($fh,"Attempted pong to $tryserver timed out
");
+ print "Time out while contacting: $tryserver for pong.\n";
+ } else {
+ &log($fh,"Pong to $tryserver: $answer
");
+ }
} else {
- &log($fh,"Pong to $tryserver: $answer
");
+ &log($fh,"$tryserver has delayed messages, but is not part of the cluster -- skipping 'Pong'.
");
}
}
}
@@ -668,7 +673,7 @@ sub finish_logging {
my $now=time;
my $date=localtime($now);
&log($fh,"
$date ($now)