Last-chance distribution if enqueueing fails
This commit is contained in:
parent
155a5d446f
commit
d13d73c563
@ -326,13 +326,7 @@ class Notice extends Memcached_DataObject
|
|||||||
# XXX: someone clever could prepend instead of clearing the cache
|
# XXX: someone clever could prepend instead of clearing the cache
|
||||||
$notice->blowOnInsert();
|
$notice->blowOnInsert();
|
||||||
|
|
||||||
if (common_config('queue', 'inboxes')) {
|
$notice->distribute();
|
||||||
$qm = QueueManager::get();
|
|
||||||
$qm->enqueue($notice, 'distrib');
|
|
||||||
} else {
|
|
||||||
$handler = new DistribQueueHandler();
|
|
||||||
$handler->handle($notice);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $notice;
|
return $notice;
|
||||||
}
|
}
|
||||||
@ -1447,4 +1441,31 @@ class Notice extends Memcached_DataObject
|
|||||||
|
|
||||||
$gi->free();
|
$gi->free();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function distribute()
|
||||||
|
{
|
||||||
|
if (common_config('queue', 'inboxes')) {
|
||||||
|
// If there's a failure, we want to _force_
|
||||||
|
// distribution at this point.
|
||||||
|
try {
|
||||||
|
$qm = QueueManager::get();
|
||||||
|
$qm->enqueue($this, 'distrib');
|
||||||
|
} catch (Exception $e) {
|
||||||
|
// If the exception isn't transient, this
|
||||||
|
// may throw more exceptions as DQH does
|
||||||
|
// its own enqueueing. So, we ignore them!
|
||||||
|
try {
|
||||||
|
$handler = new DistribQueueHandler();
|
||||||
|
$handler->handle($this);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
common_log(LOG_ERR, "emergency redistribution resulted in " . $e->getMessage());
|
||||||
|
}
|
||||||
|
// Re-throw so somebody smarter can handle it.
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$handler = new DistribQueueHandler();
|
||||||
|
$handler->handle($this);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user