don't deliver to dead hubs
This commit is contained in:
parent
7099e09a5c
commit
021c81cb62
@ -25,12 +25,10 @@ function checksites_run($argv, $argc){
|
|||||||
if($days < 1)
|
if($days < 1)
|
||||||
$days = 30;
|
$days = 30;
|
||||||
|
|
||||||
|
|
||||||
$r = q("select * from site where site_dead = 0 and site_update < %s - INTERVAL %s $sql_options ",
|
$r = q("select * from site where site_dead = 0 and site_update < %s - INTERVAL %s $sql_options ",
|
||||||
db_utcnow(), db_quoteinterval($days . ' DAY')
|
db_utcnow(), db_quoteinterval($days . ' DAY')
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
if(! $r)
|
if(! $r)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -512,31 +512,10 @@ function notifier_run($argv, $argc){
|
|||||||
// Now we have collected recipients (except for external mentions, FIXME)
|
// Now we have collected recipients (except for external mentions, FIXME)
|
||||||
// Let's reduce this to a set of hubs.
|
// Let's reduce this to a set of hubs.
|
||||||
|
|
||||||
logger('notifier: hub choice: ' . intval($relay_to_owner) . ' ' . intval($private) . ' ' . $cmd, LOGGER_DEBUG);
|
$r = q("select * from hubloc where hubloc_hash in (" . implode(',',$recipients) . ")
|
||||||
|
and hubloc_error = 0 and hubloc_deleted = 0"
|
||||||
|
);
|
||||||
|
|
||||||
// FIXME: I think we need to remove the private bit or this clause will never execute. Needs more coffee to think it through.
|
|
||||||
// We may in fact have to send it to clones in case the one we pick recently died.
|
|
||||||
|
|
||||||
if($relay_to_owner && (! $private) && ($cmd !== 'relay')) {
|
|
||||||
|
|
||||||
// If sending a followup to the post owner, only send it to one channel clone - to avoid race conditions.
|
|
||||||
// In this case we'll pick the most recently contacted hub, as their primary might be down and the most
|
|
||||||
// recently contacted has the best chance of being alive.
|
|
||||||
|
|
||||||
// For private posts or uplinks we have to do things differently as only the sending clone will have the recipient list.
|
|
||||||
// We have to send to all clone channels of the owner to find out who has the definitive list. Posts with
|
|
||||||
// item_private set (but no ACL list) will return empty recipients (except for the sender and owner) in
|
|
||||||
// collect_recipients() above. The end result is we should get only one delivery per delivery chain if we
|
|
||||||
// aren't the owner or author.
|
|
||||||
|
|
||||||
|
|
||||||
$r = q("select * from hubloc
|
|
||||||
where hubloc_hash in (" . implode(',',$recipients) . ") order by hubloc_connected desc limit 1");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$r = q("select * from hubloc where hubloc_hash in (" . implode(',',$recipients) . ")
|
|
||||||
and hubloc_error = 0 and hubloc_deleted = 0");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(! $r) {
|
if(! $r) {
|
||||||
logger('notifier: no hubs');
|
logger('notifier: no hubs');
|
||||||
@ -545,6 +524,15 @@ function notifier_run($argv, $argc){
|
|||||||
|
|
||||||
$hubs = $r;
|
$hubs = $r;
|
||||||
|
|
||||||
|
$dead_hubs = array();
|
||||||
|
|
||||||
|
$dh = q("select site_url from site where site_dead = 1");
|
||||||
|
if(dh) {
|
||||||
|
foreach($dh as $dead) {
|
||||||
|
$dead_hubs[] = $dead['site_url'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reduce the hubs to those that are unique. For zot hubs, we need to verify uniqueness by the sitekey, since it may have been
|
* Reduce the hubs to those that are unique. For zot hubs, we need to verify uniqueness by the sitekey, since it may have been
|
||||||
@ -560,6 +548,11 @@ function notifier_run($argv, $argc){
|
|||||||
|
|
||||||
|
|
||||||
foreach($hubs as $hub) {
|
foreach($hubs as $hub) {
|
||||||
|
if(in_array($hub['hubloc_url'],$dead_hubs)) {
|
||||||
|
logger('skipping dead hub: ' . $hub['hubloc_url'], LOGGER_DEBUG);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if($hub['hubloc_network'] == 'zot') {
|
if($hub['hubloc_network'] == 'zot') {
|
||||||
if(! in_array($hub['hubloc_sitekey'],$keys)) {
|
if(! in_array($hub['hubloc_sitekey'],$keys)) {
|
||||||
$hublist[] = $hub['hubloc_host'];
|
$hublist[] = $hub['hubloc_host'];
|
||||||
|
Reference in New Issue
Block a user