--- loncom/lonnet/perl/lonnet.pm 2002/12/05 22:59:37 1.306
+++ loncom/lonnet/perl/lonnet.pm 2002/12/06 12:55:44 1.310
@@ -1,7 +1,7 @@
# The LearningOnline Network
# TCP networking package
#
-# $Id: lonnet.pm,v 1.306 2002/12/05 22:59:37 albertel Exp $
+# $Id: lonnet.pm,v 1.310 2002/12/06 12:55:44 www Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -80,7 +80,8 @@ use vars
qw(%perlvar %hostname %homecache %badServerCache %hostip %iphost %spareid %hostdom
%libserv %pr %prp %metacache %packagetab %titlecache
%courselogs %accesshash $processmarker $dumpcount
- %coursedombuf %coursehombuf %courseresdatacache %domaindescription);
+ %coursedombuf %coursehombuf %courseresdatacache
+ %domaindescription);
use IO::Socket;
use GDBM_File;
use Apache::Constants qw(:common :http);
@@ -142,8 +143,8 @@ sub reply {
unless (defined($hostname{$server})) { return 'no_such_host'; }
my $answer=subreply($cmd,$server);
if ($answer eq 'con_lost') {
- #sleep 5;
- #$answer=subreply($cmd,$server);
+ sleep 5;
+ $answer=subreply($cmd,$server);
#if ($answer eq 'con_lost') {
# &logthis("Second attempt con_lost on $server");
# my $peerfile="$perlvar{'lonSockDir'}/$server";
@@ -202,7 +203,6 @@ sub critical {
" Critical message to unknown server ($server)");
return 'no_such_host';
}
- sleep 2;
my $answer=reply($cmd,$server);
if ($answer eq 'con_lost') {
my $pingreply=reply('ping',$server);
@@ -2848,27 +2848,35 @@ sub EXT {
my $courselevelm=$courseid.'.'.$mapparm;
# ----------------------------------------------------------- first, check user
- my %resourcedata=&get('resourcedata',
- [$courselevelr,$courselevelm,$courselevel],
- $udom,$uname);
- my ($tmp)=keys(%resourcedata);
- &Apache::lonnet::logthis("Returned $tmp: ".join(':',keys(%resourcedata)));
- if (($tmp!~/^error\:/) && ($tmp!~/^con_lost/)) {
-
- if ($resourcedata{$courselevelr}) {
- return $resourcedata{$courselevelr}; }
- if ($resourcedata{$courselevelm}) {
- return $resourcedata{$courselevelm}; }
- if ($resourcedata{$courselevel}) {
- return $resourcedata{$courselevel}; }
- } else {
- if ($tmp!~/No such file/) {
- &logthis("WARNING:".
- " Trying to get resource data for ".
- $uname." at ".$udom.": ".
- $tmp."");
- } elsif ($tmp =~ /^(con_lost|no_such_host)/) {
- return $tmp;
+ #most student don't have any data set, check if there is some data
+ #every thirty minutes
+ if (!
+ (exists($ENV{'cache.studentresdata'})
+ && (($ENV{'cache.studentresdata'}+1800) > time))) {
+ my %resourcedata=&get('resourcedata',
+ [$courselevelr,$courselevelm,$courselevel],
+ $udom,$uname);
+ my ($tmp)=keys(%resourcedata);
+ if (($tmp!~/^error\:/) && ($tmp!~/^con_lost/)) {
+ if ($resourcedata{$courselevelr}) {
+ return $resourcedata{$courselevelr}; }
+ if ($resourcedata{$courselevelm}) {
+ return $resourcedata{$courselevelm}; }
+ if ($resourcedata{$courselevel}) {
+ return $resourcedata{$courselevel}; }
+ } else {
+ if ($tmp!~/No such file/) {
+ &logthis("WARNING:".
+ " Trying to get resource data for ".
+ $uname." at ".$udom.": ".
+ $tmp."");
+ } elsif ($tmp=~/error:No such file/) {
+ $ENV{'cache.studentresdata'}=time;
+ &appenv(('cache.studentresdata'=>
+ $ENV{'cache.studentresdata'}));
+ } elsif ($tmp =~ /^(con_lost|no_such_host)/) {
+ return $tmp;
+ }
}
}