]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
don't put Users with object IDs in the cache, and don't fetch them
authorEvan Prodromou <evan@status.net>
Sun, 10 Jan 2010 20:31:43 +0000 (12:31 -0800)
committerEvan Prodromou <evan@status.net>
Sun, 10 Jan 2010 20:31:43 +0000 (12:31 -0800)
classes/Memcached_DataObject.php

index ca360d4111fa092defaf4cc273dfeee47f22f23a..21f6781c2dcf27a4fe4d4862b30ff7a6dcdfec57 100644 (file)
@@ -68,7 +68,7 @@ class Memcached_DataObject extends DB_DataObject
         // Clear this out so we don't accidentally break global
         // state in *this* process.
         $this->_DB_resultid = null;
-        
+
         // We don't have any local DBO refs, so clear these out.
         $this->_link_loaded = false;
     }
@@ -171,7 +171,16 @@ class Memcached_DataObject extends DB_DataObject
         if (!$c) {
             return false;
         } else {
-            return $c->get(Memcached_DataObject::cacheKey($cls, $k, $v));
+            $obj = $c->get(Memcached_DataObject::cacheKey($cls, $k, $v));
+            if (0 == strcasecmp($cls, 'User')) {
+                // Special case for User
+                if (is_object($obj->id)) {
+                    common_log(LOG_ERR, "User " . $obj->nickname . " was cached with User as ID; deleting");
+                    $c->delete(Memcached_DataObject::cacheKey($cls, $k, $v));
+                    return false;
+                }
+            }
+            return $obj;
         }
     }
 
@@ -190,6 +199,12 @@ class Memcached_DataObject extends DB_DataObject
         $c = $this->memcache();
         if (!$c) {
             return false;
+        } else if ($this->tableName() == 'user' && is_object($this->id)) {
+            // Special case for User bug
+            $e = new Exception();
+            common_log(LOG_ERR, __METHOD__ . ' caching user with User object as ID ' .
+                       str_replace("\n", " ", $e->getTraceAsString()));
+            return false;
         } else {
             $pkey = array();
             $pval = array();