Wrap each bit of distrib queue handler's saving operation in a try/catch; log exceptions but let everything else continue.
This commit is contained in:
parent
288dc3452f
commit
ccb678ad15
|
@ -62,23 +62,60 @@ class DistribQueueHandler
|
||||||
{
|
{
|
||||||
// XXX: do we need to change this for remote users?
|
// XXX: do we need to change this for remote users?
|
||||||
|
|
||||||
$notice->saveTags();
|
try {
|
||||||
|
$notice->saveTags();
|
||||||
|
} catch (Exception $e) {
|
||||||
|
$this->logit($notice, $e);
|
||||||
|
}
|
||||||
|
|
||||||
$groups = $notice->saveGroups();
|
try {
|
||||||
|
$groups = $notice->saveGroups();
|
||||||
|
} catch (Exception $e) {
|
||||||
|
$this->logit($notice, $e);
|
||||||
|
}
|
||||||
|
|
||||||
$recipients = $notice->saveReplies();
|
try {
|
||||||
|
$recipients = $notice->saveReplies();
|
||||||
|
} catch (Exception $e) {
|
||||||
|
$this->logit($notice, $e);
|
||||||
|
}
|
||||||
|
|
||||||
$notice->addToInboxes($groups, $recipients);
|
try {
|
||||||
|
$notice->addToInboxes($groups, $recipients);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
$this->logit($notice, $e);
|
||||||
|
}
|
||||||
|
|
||||||
$notice->saveUrls();
|
try {
|
||||||
|
$notice->saveUrls();
|
||||||
|
} catch (Exception $e) {
|
||||||
|
$this->logit($notice, $e);
|
||||||
|
}
|
||||||
|
|
||||||
Event::handle('EndNoticeSave', array($notice));
|
try {
|
||||||
|
Event::handle('EndNoticeSave', array($notice));
|
||||||
|
// Enqueue for other handlers
|
||||||
|
} catch (Exception $e) {
|
||||||
|
$this->logit($notice, $e);
|
||||||
|
}
|
||||||
|
|
||||||
// Enqueue for other handlers
|
try {
|
||||||
|
common_enqueue_notice($notice);
|
||||||
common_enqueue_notice($notice);
|
} catch (Exception $e) {
|
||||||
|
$this->logit($notice, $e);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function logit($notice, $e)
|
||||||
|
{
|
||||||
|
common_log(LOG_ERR, "Distrib queue exception saving notice $notice->id: " .
|
||||||
|
$e->getMessage() . ' ' .
|
||||||
|
str_replace("\n", " ", $e->getTraceAsString()));
|
||||||
|
|
||||||
|
// We'll still return true so we don't get stuck in a loop
|
||||||
|
// trying to run a bad insert over and over...
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user