[LON-CAPA-cvs] cvs: loncom(memcached_2_0_early) /lonnet/perl lonnet.pm

albertel lon-capa-cvs@mail.lon-capa.org
Wed, 16 Feb 2005 20:16:44 -0000


albertel		Wed Feb 16 15:16:44 2005 EDT

  Modified files:              (Branch: memcached_2_0_early)
    /loncom/lonnet/perl	lonnet.pm 
  Log:
  - home cache seems quintativly different from the other caches, it's small, it's tiny, once we have the data it's probably best fif we just keep it, and we access it alot. Seemsfaster to revert to be like the old way. Right now also preserving the data for the liftime of the child, home's don't change. almost ever.
  
  - adding the option of to_rember -1 never throwing anything away until the end of the request. End of thrashing and any one single request is unlikely to balloon it to much
  
  
Index: loncom/lonnet/perl/lonnet.pm
diff -u loncom/lonnet/perl/lonnet.pm:1.598.2.2 loncom/lonnet/perl/lonnet.pm:1.598.2.3
--- loncom/lonnet/perl/lonnet.pm:1.598.2.2	Tue Feb 15 12:13:54 2005
+++ loncom/lonnet/perl/lonnet.pm	Wed Feb 16 15:16:44 2005
@@ -1,7 +1,7 @@
 # The LearningOnline Network
 # TCP networking package
 #
-# $Id: lonnet.pm,v 1.598.2.2 2005/02/15 17:13:54 albertel Exp $
+# $Id: lonnet.pm,v 1.598.2.3 2005/02/16 20:16:44 albertel Exp $
 #
 # Copyright Michigan State University Board of Trustees
 #
@@ -559,12 +559,12 @@
 
 # ---------------------- Find the homebase for a user from domain's lib servers
 
+my %homecache;
 sub homeserver {
     my ($uname,$udom,$ignoreBadCache)=@_;
     my $index="$uname:$udom";
 
-    my ($result,$cached)=&is_cached_new('home',$index);
-    if (defined($cached)) { return $result; }
+    if (exists($homecache{$index})) { return $homecache{$index}; }
     my $tryserver;
     foreach $tryserver (keys %libserv) {
         next if ($ignoreBadCache ne 'true' && 
@@ -572,7 +572,7 @@
 	if ($hostdom{$tryserver} eq $udom) {
            my $answer=reply("home:$udom:$uname",$tryserver);
            if ($answer eq 'found') { 
-	       return &do_cache_new('home',$index,$tryserver,86400);
+	       return $homecache{$index}=$tryserver;
            } elsif ($answer eq 'no_host') {
 	       $badServerCache{$tryserver}=1;
            }
@@ -838,7 +838,7 @@
     &purge_remembered();
 }
 
-my $to_remember=20;
+my $to_remember=-1;
 my %remembered;
 my %accessed;
 my $kicks=0;
@@ -891,6 +891,7 @@
 sub make_room {
     my ($id,$value,$debug)=@_;
     $remembered{$id}=$value;
+    if ($to_remember<0) { return; }
     $accessed{$id}=[&gettimeofday()];
     if (scalar(keys(%remembered)) <= $to_remember) { return; }
     my $to_kick;
@@ -910,6 +911,7 @@
 
 sub purge_remembered {
     &logthis("Tossing ".scalar(keys(%remembered)));
+    &logthis(sprintf("%-20s is %s",'%remembered',length(&freeze(\%remembered))));
     undef(%remembered);
     undef(%accessed);
 }