Андрей (andy) wrote in changelog,
Андрей
andy
changelog

[livejournal] r19046: LJSUP-8805 (Log stacktrace of LJ::MemCac...

Committer: ailyin
LJSUP-8805 (Log stacktrace of LJ::MemCache error)
U   trunk/cgi-bin/LJ/MemCache.pm
Modified: trunk/cgi-bin/LJ/MemCache.pm
===================================================================
--- trunk/cgi-bin/LJ/MemCache.pm	2011-05-12 06:45:15 UTC (rev 19045)
+++ trunk/cgi-bin/LJ/MemCache.pm	2011-05-12 07:01:27 UTC (rev 19046)
@@ -158,6 +158,7 @@
 
 use String::CRC32 qw();
 use Carp qw();
+use Data::Dumper qw();
 use IO::Handle qw();
 
 ### VARIABLES ###
@@ -631,10 +632,40 @@
     return unless $format_info;
 
     my $format_version = $format_info->[0];
-    return unless $array
-              and ref $array eq "ARRAY"
-              and $array->[0] == $format_version;
 
+    return unless defined $array;
+
+    unless ($array) {
+        Carp::cluck "trying to unserialize $format from memcache, "
+                  . Data::Dumper::Dumper($array) . " is not a true value; "
+                  . "stacktrace follows";
+        return;
+    }
+
+    unless ( ref $array eq 'ARRAY' ) {
+        Carp::cluck "trying to unserialize $format from memcache, "
+                  . Data::Dumper::Dumper($array) . " is not an array value; "
+                  . "stacktrace follows";
+        return;
+    }
+
+    unless ( @$array ) {
+        Carp::cluck "trying to unserialize $format from memcache, "
+                  . Data::Dumper::Dumper($array) . " is an empty arrayref; "
+                  . "stacktrace follows";
+        return;
+    }
+
+    unless ( $array->[0] =~ /^\d+$/ ) {
+        Carp::cluck "trying to unserialize $format from memcache, "
+                  . Data::Dumper::Dumper($array) . " has a non-numeric "
+                  . "'$array->[0]' as its version string; "
+                  . "stacktrace follows";
+        return;
+    }
+
+    return unless $array->[0] == $format_version;
+
     my %ret;
     foreach my $i ( 1 .. $#$format_info ) {
         $ret{ $format_info->[$i] } = $array->[$i];

Tags: andy, livejournal, pm
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments