[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