[LON-CAPA-cvs] cvs: loncom / loncron
www
lon-capa-cvs@mail.lon-capa.org
Wed, 25 Oct 2006 21:33:54 -0000
www Wed Oct 25 17:33:54 2006 EDT
Modified files:
/loncom loncron
Log:
Pong machines with delayed messages.
Could not test yet on laptop.
Index: loncom/loncron
diff -u loncom/loncron:1.67 loncom/loncron:1.68
--- loncom/loncron:1.67 Tue Mar 7 15:01:26 2006
+++ loncom/loncron Wed Oct 25 17:33:54 2006
@@ -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.68 2006/10/25 21:33:54 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -486,7 +486,7 @@
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="<b>ok</b>";
$good++;
@@ -511,7 +511,7 @@
# ------------------------------------------------------------ Delayed messages
sub check_delayed_msg {
- my ($fh)=@_;
+ my ($fh,$hostname)=@_;
&log($fh,'<hr /><a name="delayed" /><h2>Delayed Messages</h2>');
print "checking buffers\n";
@@ -536,13 +536,22 @@
if ($unsend) { $simplestatus{'unsend'}=$unsend; }
&log($fh,"<h3>Outgoing Buffer</h3>\n<pre>");
-
+# list directory with delayed messages and remember offline servers
+ my %servers=();
open (DFH,"ls -lF $perlvar{'lonSockDir'}/delayed|");
- while (my $line=<DFH>) {
+ while (my $line=<DFH>) {
+ my ($server)=($line=~/\.(\w+)$/);
+ if ($server) { $servers{$server}=1; }
&log($fh,&encode_entities($line,'<>&"'));
}
&log($fh,"</pre>\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 {
@@ -721,7 +730,7 @@
&test_connections($fh,\%hostname);
}
if (!$justcheckdaemons && !$justcheckconnections && !$justreload) {
- &check_delayed_msg($fh);
+ &check_delayed_msg($fh,\%hostname);
&finish_logging($fh);
&log_simplestatus();