--- loncom/lonnet/perl/lonnet.pm 2005/02/14 02:22:25 1.587.2.3.2.6 +++ loncom/lonnet/perl/lonnet.pm 2005/02/14 04:26:29 1.587.2.3.2.10 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.587.2.3.2.6 2005/02/14 02:22:25 albertel Exp $ +# $Id: lonnet.pm,v 1.587.2.3.2.10 2005/02/14 04:26:29 albertel Exp $ # # Copyright Michigan State University Board of Trustees # @@ -35,11 +35,11 @@ use HTTP::Headers; use HTTP::Date; # use Date::Parse; use vars -qw(%perlvar %hostname %homecache %badServerCache %hostip %iphost %spareid %hostdom +qw(%perlvar %hostname %badServerCache %hostip %iphost %spareid %hostdom %libserv %pr %prp $memcache %packagetab %courselogs %accesshash %userrolehash $processmarker $dumpcount - %coursedombuf %coursenumbuf %coursehombuf %coursedescrbuf %courseinstcodebuf %courseownerbuf %courseresdatacache - %userresdatacache %getsectioncache %domaindescription %domain_auth_def %domain_auth_arg_def + %coursedombuf %coursenumbuf %coursehombuf %coursedescrbuf %courseinstcodebuf %courseownerbuf + %getsectioncache %domaindescription %domain_auth_def %domain_auth_arg_def %domain_lang_def %domain_city %domain_longi %domain_lati $tmpdir $_64bit); use IO::Socket; @@ -563,7 +563,7 @@ sub homeserver { my ($uname,$udom,$ignoreBadCache)=@_; my $index="$uname:$udom"; - my ($result,$cached)=&is_cached(\%homecache,$index,'home',86400); + my ($result,$cached)=&is_cached_new('home',$index); if (defined($cached)) { return $result; } my $tryserver; foreach $tryserver (keys %libserv) { @@ -572,7 +572,7 @@ sub homeserver { if ($hostdom{$tryserver} eq $udom) { my $answer=reply("home:$udom:$uname",$tryserver); if ($answer eq 'found') { - return &do_cache(\%homecache,$index,$tryserver,'home'); + return &do_cache_new('home',$index,$tryserver,86400); } elsif ($answer eq 'no_host') { $badServerCache{$tryserver}=1; } @@ -1028,8 +1028,8 @@ my %accessed; my $kicks=0; my $hits=0; sub devalidate_cache_new { - my ($name,$id) = @_; - if (0) { &Apache::lonnet::logthis("deleting $name:$id"); } + my ($name,$id,$debug) = @_; + if ($debug) { &Apache::lonnet::logthis("deleting $name:$id"); } $id=&escape($name.':'.$id); $memcache->delete($id); delete($remembered{$id}); @@ -1038,7 +1038,6 @@ sub devalidate_cache_new { sub is_cached_new { my ($name,$id,$debug) = @_; - $debug=0; $id=&escape($name.':'.$id); if (exists($remembered{$id})) { if ($debug) { &Apache::lonnet::logthis("Earyl return $id of $remembered{$id} "); } @@ -1051,7 +1050,7 @@ sub is_cached_new { if ($debug) { &Apache::lonnet::logthis("getting $id is not defined"); } return (undef,undef); } - &make_room($id,$value); + &make_room($id,$value,$debug); if ($value eq '__undef__') { if ($debug) { &Apache::lonnet::logthis("getting $id is __undef__"); } return (undef,1); @@ -1062,7 +1061,6 @@ sub is_cached_new { sub do_cache_new { my ($name,$id,$value,$time,$debug) = @_; - $debug=0; $id=&escape($name.':'.$id); my $setvalue=$value; if (!defined($setvalue)) { @@ -1070,13 +1068,12 @@ sub do_cache_new { } if ($debug) { &Apache::lonnet::logthis("Setting $id to $value"); } $memcache->set($id,$setvalue,300); - &make_room($id,$value); + &make_room($id,$value,$debug); return $value; } sub make_room { - my ($id,$value)=@_; - my $debug=0; + my ($id,$value,$debug)=@_; $remembered{$id}=$value; $accessed{$id}=[&gettimeofday()]; if (scalar(keys(%remembered)) <= $to_remember) { return; } @@ -4202,7 +4199,7 @@ sub condval { sub devalidatecourseresdata { my ($coursenum,$coursedomain)=@_; my $hashid=$coursenum.':'.$coursedomain; - &devalidate_cache(\%courseresdatacache,$hashid,'courseres'); + &devalidate_cache_new('courseres',$hashid); } # --------------------------------------------------- Course Resourcedata Query @@ -4211,18 +4208,18 @@ sub courseresdata { my ($coursenum,$coursedomain,@which)=@_; my $coursehom=&homeserver($coursenum,$coursedomain); my $hashid=$coursenum.':'.$coursedomain; - my ($result,$cached)=&is_cached(\%courseresdatacache,$hashid,'courseres'); + my ($result,$cached)=&is_cached_new('courseres',$hashid); unless (defined($cached)) { my %dumpreply=&dump('resourcedata',$coursedomain,$coursenum); $result=\%dumpreply; my ($tmp) = keys(%dumpreply); if ($tmp !~ /^(con_lost|error|no_such_host)/i) { - &do_cache(\%courseresdatacache,$hashid,$result,'courseres'); + &do_cache_new('courseres',$hashid,$result,600); } elsif ($tmp =~ /^(con_lost|no_such_host)/) { return $tmp; } elsif ($tmp =~ /^(error)/) { $result=undef; - &do_cache(\%courseresdatacache,$hashid,$result,'courseres'); + &do_cache_new('courseres',$hashid,$result,600); } } foreach my $item (@which) { @@ -4411,12 +4408,11 @@ sub EXT { #most student don\'t have any data set, check if there is some data if (! &EXT_cache_status($udom,$uname)) { my $hashid="$udom:$uname"; - my ($result,$cached)=&is_cached(\%userresdatacache,$hashid, - 'userres'); + my ($result,$cached)=&is_cached_new('userres',$hashid); if (!defined($cached)) { my %resourcedata=&dump('resourcedata',$udom,$uname); $result=\%resourcedata; - &do_cache(\%userresdatacache,$hashid,$result,'userres'); + &do_cache_new('userres',$hashid,$result); } my ($tmp)=keys(%$result); if (($tmp!~/^error\:/) && ($tmp!~/^con_lost/)) { @@ -5657,11 +5653,11 @@ sub goodbye { &logthis(sprintf("%-20s is %s",'%badServerCache',length(&freeze(\%badServerCache)))); #converted # &logthis(sprintf("%-20s is %s",'%metacache',scalar(%metacache))); - &logthis(sprintf("%-20s is %s",'%homecache',length(&freeze(\%homecache)))); +# &logthis(sprintf("%-20s is %s",'%homecache',length(&freeze(\%homecache)))); # &logthis(sprintf("%-20s is %s",'%titlecache',length(&freeze(\%titlecache)))); - &logthis(sprintf("%-20s is %s",'%courseresdatacache',length(&freeze(\%courseresdatacache)))); +# &logthis(sprintf("%-20s is %s",'%courseresdatacache',length(&freeze(\%courseresdatacache)))); #1.1 only - &logthis(sprintf("%-20s is %s",'%userresdatacache',length(&freeze(\%userresdatacache)))); +# &logthis(sprintf("%-20s is %s",'%userresdatacache',length(&freeze(\%userresdatacache)))); &logthis(sprintf("%-20s is %s",'%getsectioncache',length(&freeze(\%getsectioncache)))); # &logthis(sprintf("%-20s is %s",'%courseresversioncache',length(&freeze(\%courseresversioncache)))); # &logthis(sprintf("%-20s is %s",'%resversioncache',length(&freeze(\%resversioncache))));