a little more error-checking in the queuedaemon

darcs-hash:20080705002207-84dde-c5bc4da7dbca8a32ea4126badb772e99bd4f8bf1.gz
This commit is contained in:
Evan Prodromou 2008-07-04 20:22:07 -04:00
parent 84b1f41279
commit 25e93288ba
3 changed files with 29 additions and 11 deletions

View File

@ -132,10 +132,18 @@ function jabber_broadcast_notice($notice) {
while ($sub->fetch()) { while ($sub->fetch()) {
$user = User::staticGet($sub->subscriber); $user = User::staticGet($sub->subscriber);
if ($user && $user->jabber && $user->jabbernotify) { if ($user && $user->jabber && $user->jabbernotify) {
jabber_send_message($user->jabber, $msg); common_log(LOG_INFO,
'Sending notice ' . $notice->id . ' to ' . $user->jabber,
__FILE__);
$success = jabber_send_message($user->jabber, $msg);
if (!$success) {
# XXX: Not sure, but I think that's the right thing to do
return false;
}
} }
} }
} }
return true;
} }
function jabber_format_notice(&$profile, &$notice) { function jabber_format_notice(&$profile, &$notice) {

View File

@ -810,9 +810,9 @@ function common_redirect($url, $code=307) {
function common_broadcast_notice($notice, $remote=false) { function common_broadcast_notice($notice, $remote=false) {
if (common_config('queue', 'enabled')) { if (common_config('queue', 'enabled')) {
# Do it later! # Do it later!
common_enqueue_notice($notice); return common_enqueue_notice($notice);
} else { } else {
common_real_broadcast($notice, $remote); return common_real_broadcast($notice, $remote);
} }
} }
@ -827,24 +827,26 @@ function common_enqueue_notice($notice) {
if ($result === FALSE) { if ($result === FALSE) {
$last_error = &PEAR::getStaticProperty('DB_DataObject','lastError'); $last_error = &PEAR::getStaticProperty('DB_DataObject','lastError');
common_log(LOG_ERROR, 'DB error inserting queue item: ' . $last_error->message); common_log(LOG_ERROR, 'DB error inserting queue item: ' . $last_error->message);
return; return false;
} }
common_log(LOG_INFO, 'complete queueing notice ID = ' . $notice->id); common_log(LOG_INFO, 'complete queueing notice ID = ' . $notice->id);
return $result; return $result;
} }
function common_real_broadcast($notice, $remote=false) { function common_real_broadcast($notice, $remote=false) {
// XXX: optionally use a queue system like http://code.google.com/p/microapps/wiki/NQDQ $success = true;
if (!$remote) { if (!$remote) {
# Make sure we have the OMB stuff # Make sure we have the OMB stuff
require_once(INSTALLDIR.'/lib/omb.php'); require_once(INSTALLDIR.'/lib/omb.php');
omb_broadcast_remote_subscribers($notice); $success = omb_broadcast_remote_subscribers($notice);
}
if ($success) {
require_once(INSTALLDIR.'/lib/jabber.php');
$success = jabber_broadcast_notice($notice);
} }
require_once(INSTALLDIR.'/lib/jabber.php');
jabber_broadcast_notice($notice);
// XXX: broadcast notices to SMS // XXX: broadcast notices to SMS
// XXX: broadcast notices to other IM // XXX: broadcast notices to other IM
return true; return $success;
} }
function common_broadcast_profile($profile) { function common_broadcast_profile($profile) {

View File

@ -96,7 +96,15 @@ do {
if ($notice) { if ($notice) {
qd_log(LOG_INFO, 'broadcasting notice ID = ' . $notice->id); qd_log(LOG_INFO, 'broadcasting notice ID = ' . $notice->id);
# XXX: what to do if broadcast fails? # XXX: what to do if broadcast fails?
common_real_broadcast($notice, qd_is_remote($notice)); $result = common_real_broadcast($notice, qd_is_remote($notice));
if (!$result) {
qd_log(LOG_WARNING, 'Failed broadcast for notice ID = ' . $notice->id);
$orig = $qi;
$qi->claimed = NULL;
$qi->update($orig);
qd_log(LOG_WARNING, 'Abandoned claim for notice ID = ' . $notice->id);
continue;
}
qd_log(LOG_INFO, 'finished broadcasting notice ID = ' . $notice->id); qd_log(LOG_INFO, 'finished broadcasting notice ID = ' . $notice->id);
$notice = NULL; $notice = NULL;
} else { } else {
@ -105,7 +113,7 @@ do {
$qi->delete(); $qi->delete();
$qi = NULL; $qi = NULL;
} else { } else {
# qd_clear_old_claims(); qd_clear_old_claims();
# In busy times, sleep less # In busy times, sleep less
$sleeptime = 30000000/($in_a_row+1); $sleeptime = 30000000/($in_a_row+1);
qd_log(LOG_INFO, 'sleeping ' . $sleeptime . ' microseconds'); qd_log(LOG_INFO, 'sleeping ' . $sleeptime . ' microseconds');