don't put Users with object IDs in the cache, and don't fetch them
This commit is contained in:
parent
30409f7bad
commit
9d3893255a
@ -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();
|
||||
|
Loading…
Reference in New Issue
Block a user