[LON-CAPA-cvs] cvs: loncom / loncron /lonnet/perl lonnet.pm

raeburn raeburn at source.lon-capa.org
Wed May 29 14:11:00 EDT 2013


raeburn		Wed May 29 18:11:00 2013 EDT

  Modified files:              
    /loncom	loncron 
    /loncom/lonnet/perl	lonnet.pm 
  Log:
  lonnet.pm 
    - Move code in BEGIN() block in lonnet.pm used to populate %loncaparevs and 
      %serverhomeIDs to subroutines: load_loncaparevs() and load_serverhomeIDs()
      to facilitate reuse.
  loncron
    - In loncron delay opening loncaparevs.tab and serverhomeIDs.tab files for 
      writing until retrieval of version or server information is complete for
      all contactable servers.
     - Call load_loncaparevs() and load_serverhomeIDs() once writing is complete.
  
  
Index: loncom/loncron
diff -u loncom/loncron:1.98 loncom/loncron:1.99
--- loncom/loncron:1.98	Fri Feb  8 14:49:51 2013
+++ loncom/loncron	Wed May 29 18:10:54 2013
@@ -2,7 +2,7 @@
 
 # Housekeeping program, started by cron, loncontrol and loncron.pl
 #
-# $Id: loncron,v 1.98 2013/02/08 14:49:51 raeburn Exp $
+# $Id: loncron,v 1.99 2013/05/29 18:10:54 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -695,58 +695,68 @@
 
 sub write_loncaparevs {
     print "Retrieving LON-CAPA version information\n";
-    if (open(my $fh,">$perlvar{'lonTabDir'}/loncaparevs.tab")) {
-        my %hostname = &Apache::lonnet::all_hostnames();
-        foreach my $id (sort(keys(%hostname))) {
-            if ($id ne '') {
-                my $loncaparev;
+    my %hostname = &Apache::lonnet::all_hostnames();
+    my $output;
+    foreach my $id (sort(keys(%hostname))) {
+        if ($id ne '') {
+            my $loncaparev;
+            eval {
+                local $SIG{ ALRM } = sub { die "TIMEOUT" };
+                alarm(10);
+                $loncaparev =
+                    &Apache::lonnet::get_server_loncaparev('',$id,1,'loncron');
+                alarm(0);
+            };
+            if ($@ && $@ =~ m/TIMEOUT/) {
+                print "time out while contacting lonHost: $id for version\n";   
+            }
+            if ($loncaparev =~ /^[\w.\-]+$/) {
+                $output .= $id.':'.$loncaparev."\n";
+            }
+        }
+    }
+    if ($output) {
+        if (open(my $fh,">$perlvar{'lonTabDir'}/loncaparevs.tab")) {
+            print $fh $output;
+            close($fh);
+            &Apache::lonnet::load_loncaparevs();
+        }
+    }
+    return;
+}
+
+sub write_serverhomeIDs {
+    print "Retrieving LON-CAPA lonHostID information\n";
+    my %name_to_host = &Apache::lonnet::all_names();
+    my $output;
+    foreach my $name (sort(keys(%name_to_host))) {
+        if ($name ne '') {
+            if (ref($name_to_host{$name}) eq 'ARRAY') {
+                my $serverhomeID;
                 eval {
                     local $SIG{ ALRM } = sub { die "TIMEOUT" };
                     alarm(10);
-                    $loncaparev =
-                        &Apache::lonnet::get_server_loncaparev('',$id,1,'loncron');
+                    $serverhomeID = 
+                        &Apache::lonnet::get_server_homeID($name,1,'loncron');
                     alarm(0);
                 };
                 if ($@ && $@ =~ m/TIMEOUT/) {
-                    print "time out while contacting lonHost: $id for version\n";   
+                    print "Time out while contacting server: $name\n"; 
                 }
-                if ($loncaparev =~ /^[\w.\-]+$/) {
-                    print $fh $id.':'.$loncaparev."\n";
+                if ($serverhomeID ne '') {
+                    $output .= $name.':'.$serverhomeID."\n";
+                } else {
+                    $output .= $name.':'.$name_to_host{$name}->[0]."\n";
                 }
             }
         }
-        close($fh);
     }
-    return;
-}
-
-sub write_serverhomeIDs {
-    print "Retrieving LON-CAPA lonHostID information\n";
-    if (open(my $fh,">$perlvar{'lonTabDir'}/serverhomeIDs.tab")) {
-        my %name_to_host = &Apache::lonnet::all_names();
-        foreach my $name (sort(keys(%name_to_host))) {
-            if ($name ne '') {
-                if (ref($name_to_host{$name}) eq 'ARRAY') {
-                    my $serverhomeID;
-                    eval {
-                        local $SIG{ ALRM } = sub { die "TIMEOUT" };
-                        alarm(10);
-                        $serverhomeID = 
-                            &Apache::lonnet::get_server_homeID($name,1,'loncron');
-                        alarm(0);
-                    };
-                    if ($@ && $@ =~ m/TIMEOUT/) {
-                        print "Time out while contacting server: $name\n"; 
-                    }
-                    if ($serverhomeID ne '') {
-                        print $fh $name.':'.$serverhomeID."\n";
-                    } else {
-                        print $fh $name.':'.$name_to_host{$name}->[0]."\n";
-                    }
-                }
-            }
+    if ($output) {
+        if (open(my $fh,">$perlvar{'lonTabDir'}/serverhomeIDs.tab")) {
+            print $fh $output;
+            close($fh);
+            &Apache::lonnet::load_serverhomeIDs();
         }
-        close($fh);
     }
     return;
 }
Index: loncom/lonnet/perl/lonnet.pm
diff -u loncom/lonnet/perl/lonnet.pm:1.1226 loncom/lonnet/perl/lonnet.pm:1.1227
--- loncom/lonnet/perl/lonnet.pm:1.1226	Wed May 29 17:53:50 2013
+++ loncom/lonnet/perl/lonnet.pm	Wed May 29 18:10:59 2013
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # TCP networking package
 #
-# $Id: lonnet.pm,v 1.1226 2013/05/29 17:53:50 raeburn Exp $
+# $Id: lonnet.pm,v 1.1227 2013/05/29 18:10:59 raeburn Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -12035,6 +12035,39 @@
     return qw(1.1 1.2 1.3 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10);
 }
 
+# ---------------------------------------------------------- Read loncaparev table
+{
+    sub load_loncaparevs { 
+        if (-e "$perlvar{'lonTabDir'}/loncaparevs.tab") {
+            if (open(my $config,"<$perlvar{'lonTabDir'}/loncaparevs.tab")) {
+                while (my $configline=<$config>) {
+                    chomp($configline);
+                    my ($hostid,$loncaparev)=split(/:/,$configline);
+                    $loncaparevs{$hostid}=$loncaparev;
+                }
+                close($config);
+            }
+        }
+    }
+}
+
+# ---------------------------------------------------------- Read serverhostID table
+{
+    sub load_serverhomeIDs {
+        if (-e "$perlvar{'lonTabDir'}/serverhomeIDs.tab") {
+            if (open(my $config,"<$perlvar{'lonTabDir'}/serverhomeIDs.tab")) {
+                while (my $configline=<$config>) {
+                    chomp($configline);
+                    my ($name,$id)=split(/:/,$configline);
+                    $serverhomeIDs{$name}=$id;
+                }
+                close($config);
+            }
+        }
+    }
+}
+
+
 BEGIN {
 
 # ----------------------------------- Read loncapa.conf and loncapa_apache.conf
@@ -12111,33 +12144,14 @@
 }
 
 # ---------------------------------------------------------- Read loncaparev table
-{
-    if (-e "$perlvar{'lonTabDir'}/loncaparevs.tab") {
-        if (open(my $config,"<$perlvar{'lonTabDir'}/loncaparevs.tab")) {
-            while (my $configline=<$config>) {
-                chomp($configline);
-                my ($hostid,$loncaparev)=split(/:/,$configline);
-                $loncaparevs{$hostid}=$loncaparev;
-            }
-            close($config);
-        }
-    }
-}
+
+&load_loncaparevs();
 
 # ---------------------------------------------------------- Read serverhostID table
-{
-    if (-e "$perlvar{'lonTabDir'}/serverhomeIDs.tab") {
-        if (open(my $config,"<$perlvar{'lonTabDir'}/serverhomeIDs.tab")) {
-            while (my $configline=<$config>) {
-                chomp($configline);
-                my ($name,$id)=split(/:/,$configline);
-                $serverhomeIDs{$name}=$id;
-            }
-            close($config);
-        }
-    }
-}
 
+&load_serverhomeIDs();
+
+# ---------------------------------------------------------- Read releaseslist XML
 {
     my $file = $Apache::lonnet::perlvar{'lonTabDir'}.'/releaseslist.xml';
     if (-e $file) {




More information about the LON-CAPA-cvs mailing list