[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();