Cache fixes:

* We now cache negative lookups; clear them in Memcached_DataObject->insert()
* Mark file.url as a unique key in statusnet.ini so its negative lookups are cleared properly (first save of a notice with a new URL was failing due to double-insert)
* Now using serialization for default in-process cache instead of just saving objects; avoids potential corruption if you save an object to cache, change the original object, then fetch the same key from cache again
This commit is contained in:
Brion Vibber 2010-01-05 15:05:53 -08:00
parent 250bcfa8dc
commit aff78e5121
3 changed files with 4 additions and 2 deletions

View File

@ -142,6 +142,7 @@ class Memcached_DataObject extends DB_DataObject
function insert()
{
$this->decache(); // in case of cached negative lookups
$result = parent::insert();
return $result;
}

View File

@ -92,6 +92,7 @@ modified = 384
[file__keys]
id = N
url = U
[file_oembed]
file_id = 129

View File

@ -120,7 +120,7 @@ class Cache
if (Event::handle('StartCacheGet', array(&$key, &$value))) {
if (array_key_exists($key, $this->_items)) {
$value = $this->_items[$key];
$value = unserialize($this->_items[$key]);
}
Event::handle('EndCacheGet', array($key, &$value));
}
@ -146,7 +146,7 @@ class Cache
if (Event::handle('StartCacheSet', array(&$key, &$value, &$flag,
&$expiry, &$success))) {
$this->_items[$key] = $value;
$this->_items[$key] = serialize($value);
$success = true;