[LON-CAPA-cvs] cvs: loncom /lonnet/perl lonnet.pm
albertel
lon-capa-cvs@mail.lon-capa.org
Sat, 17 Mar 2007 04:11:54 -0000
albertel Sat Mar 17 00:11:54 2007 EDT
Modified files:
/loncom/lonnet/perl lonnet.pm
Log:
- there is a limit of the length of a key in memcached of 250 characters
Index: loncom/lonnet/perl/lonnet.pm
diff -u loncom/lonnet/perl/lonnet.pm:1.848 loncom/lonnet/perl/lonnet.pm:1.849
--- loncom/lonnet/perl/lonnet.pm:1.848 Wed Mar 14 19:36:10 2007
+++ loncom/lonnet/perl/lonnet.pm Sat Mar 17 00:11:51 2007
@@ -1,7 +1,7 @@
# The LearningOnline Network
# TCP networking package
#
-# $Id: lonnet.pm,v 1.848 2007/03/14 23:36:10 albertel Exp $
+# $Id: lonnet.pm,v 1.849 2007/03/17 04:11:51 albertel Exp $
#
# Copyright Michigan State University Board of Trustees
#
@@ -1010,10 +1010,16 @@
my %accessed;
my $kicks=0;
my $hits=0;
+sub make_key {
+ my ($name,$id) = @_;
+ if (length($id) > 200) { $id=length($id).':'.&Digest::MD5::md5_hex($id); }
+ return &escape($name.':'.$id);
+}
+
sub devalidate_cache_new {
my ($name,$id,$debug) = @_;
if ($debug) { &Apache::lonnet::logthis("deleting $name:$id"); }
- $id=&escape($name.':'.$id);
+ $id=&make_key($name,$id);
$memcache->delete($id);
delete($remembered{$id});
delete($accessed{$id});
@@ -1021,7 +1027,7 @@
sub is_cached_new {
my ($name,$id,$debug) = @_;
- $id=&escape($name.':'.$id);
+ $id=&make_key($name,$id);
if (exists($remembered{$id})) {
if ($debug) { &Apache::lonnet::logthis("Earyl return $id of $remembered{$id} "); }
$accessed{$id}=[&gettimeofday()];
@@ -1044,7 +1050,7 @@
sub do_cache_new {
my ($name,$id,$value,$time,$debug) = @_;
- $id=&escape($name.':'.$id);
+ $id=&make_key($name,$id);
my $setvalue=$value;
if (!defined($setvalue)) {
$setvalue='__undef__';