[LON-CAPA-cvs] cvs: loncom /lonnet/perl lonnet.pm
albertel
lon-capa-cvs-allow@mail.lon-capa.org
Mon, 25 Jun 2007 18:12:26 -0000
albertel Mon Jun 25 14:12:26 2007 EDT
Modified files:
/loncom/lonnet/perl lonnet.pm
Log:
- fall back to yesterday's cached info if dns is failing
Index: loncom/lonnet/perl/lonnet.pm
diff -u loncom/lonnet/perl/lonnet.pm:1.893 loncom/lonnet/perl/lonnet.pm:1.894
--- loncom/lonnet/perl/lonnet.pm:1.893 Thu Jun 21 20:11:04 2007
+++ loncom/lonnet/perl/lonnet.pm Mon Jun 25 14:12:24 2007
@@ -1,7 +1,7 @@
# The LearningOnline Network
# TCP networking package
#
-# $Id: lonnet.pm,v 1.893 2007/06/22 00:11:04 albertel Exp $
+# $Id: lonnet.pm,v 1.894 2007/06/25 18:12:24 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -8009,6 +8009,7 @@
sub get_iphost {
my ($ignore_cache) = @_;
+
if (!$ignore_cache) {
if (%iphost) {
return %iphost;
@@ -8022,16 +8023,31 @@
return %iphost;
}
}
+
+ # get yesterday's info for fallback
+ my %old_name_to_ip;
+ my ($ip_info,$cached)=
+ &Apache::lonnet::is_cached_new('iphost','iphost');
+ if ($cached) {
+ %old_name_to_ip = %{$ip_info->[1]};
+ }
+
my %name_to_host = &all_names();
foreach my $name (keys(%name_to_host)) {
my $ip;
if (!exists($name_to_ip{$name})) {
$ip = gethostbyname($name);
if (!$ip || length($ip) ne 4) {
- &logthis("Skipping name $name no IP found");
- next;
+ if (defined($old_name_to_ip{$name})) {
+ $ip = $old_name_to_ip{$name};
+ &logthis("Can't find $name defaulting to old $ip");
+ } else {
+ &logthis("Name $name no IP found");
+ next;
+ }
+ } else {
+ $ip=inet_ntoa($ip);
}
- $ip=inet_ntoa($ip);
$name_to_ip{$name} = $ip;
} else {
$ip = $name_to_ip{$name};
@@ -8043,7 +8059,7 @@
}
&Apache::lonnet::do_cache_new('iphost','iphost',
[\%iphost,\%name_to_ip,\%lonid_to_ip],
- 24*60*60);
+ 48*60*60);
return %iphost;
}