Merge branch 'master' into 0.9.x

Conflicts:
	classes/Memcached_DataObject.php
This commit is contained in:
Evan Prodromou 2010-01-01 11:20:25 -10:00
commit a9d8359208
2 changed files with 30 additions and 11 deletions

View File

@ -60,18 +60,17 @@ class Memcached_DataObject extends DB_DataObject
if ($i) {
return $i;
} else {
$i = DB_DataObject::staticGet($cls, $k, $v);
if ($i) {
// DB_DataObject's in-process lookup cache interferes with GC
// to cause massive memory leaks in long-running processes.
if (php_sapi_name() == 'cli') {
$i->_clear_cache();
}
// Now store it into the shared memcached, if present...
$i->encache();
$i = DB_DataObject::factory($cls);
if (empty($i)) {
return null;
}
$result = $i->get($k, $v);
if ($result) {
$i->encache();
return $i;
} else {
return null;
}
return $i;
}
}
@ -263,6 +262,18 @@ class Memcached_DataObject extends DB_DataObject
return new ArrayWrapper($cached);
}
function cleanup()
{
global $_DB_DATAOBJECT;
if (isset($_DB_DATAOBJECT['RESULTFIELDS'][$this->_DB_resultid])) {
unset($_DB_DATAOBJECT['RESULTFIELDS'][$this->_DB_resultid]);
}
if (isset($_DB_DATAOBJECT['RESULTS'][$this->_DB_resultid])) {
unset($_DB_DATAOBJECT['RESULTS'][$this->_DB_resultid]);
}
}
// We overload so that 'SET NAMES "utf8"' is called for
// each connection

View File

@ -191,6 +191,14 @@ class NoticeListItem extends Widget
function show()
{
if (empty($this->notice)) {
common_log(LOG_WARNING, "Trying to show missing notice; skipping.");
return;
} else if (empty($this->profile)) {
common_log(LOG_WARNING, "Trying to show missing profile (" . $this->notice->profile_id . "); skipping.");
return;
}
$this->showStart();
if (Event::handle('StartShowNoticeItem', array($this))) {
$this->showNotice();