OStatus PuSH fixlets:

- set minimal error page output on PuSH callback
- allow hub to retry ($config['ostatus']['hub_retries']), simplify internal iface a bit. Retries are pushed to end of queue but otherwise not delayed yet; makes delivery more robust to one-off transitory errors but not yet against downtime.
This commit is contained in:
Brion Vibber
2010-02-21 14:28:06 -08:00
parent 37179a91d5
commit aa0b2ce81a
4 changed files with 46 additions and 25 deletions

View File

@@ -33,6 +33,7 @@ class HubOutQueueHandler extends QueueHandler
{
$sub = $data['sub'];
$atom = $data['atom'];
$retries = $data['retries'];
assert($sub instanceof HubSub);
assert(is_string($atom));
@@ -40,13 +41,20 @@ class HubOutQueueHandler extends QueueHandler
try {
$sub->push($atom);
} catch (Exception $e) {
common_log(LOG_ERR, "Failed PuSH to $sub->callback for $sub->topic: " .
$e->getMessage());
// @fixme Reschedule a later delivery?
return true;
$retries--;
$msg = "Failed PuSH to $sub->callback for $sub->topic: " .
$e->getMessage();
if ($retries > 0) {
common_log(LOG_ERR, "$msg; scheduling for $retries more tries");
// @fixme when we have infrastructure to schedule a retry
// after a delay, use it.
$sub->distribute($atom, $retries);
} else {
common_log(LOG_ERR, "$msg; discarding");
}
}
return true;
}
}