diff options
author | Mario Vavti <mario@mariovavti.com> | 2023-04-12 09:29:51 +0200 |
---|---|---|
committer | Mario Vavti <mario@mariovavti.com> | 2023-04-12 09:29:51 +0200 |
commit | 7ce4175876ce13727432dc839938bb8e486ef406 (patch) | |
tree | 5128e5c5d13629628c0e50b4a91935cfeda44a20 /Zotlabs/Daemon | |
parent | 03bdbfa705ba490b0450f063753100557f5d8bae (diff) | |
download | volse-hubzilla-7ce4175876ce13727432dc839938bb8e486ef406.tar.gz volse-hubzilla-7ce4175876ce13727432dc839938bb8e486ef406.tar.bz2 volse-hubzilla-7ce4175876ce13727432dc839938bb8e486ef406.zip |
initial commit directory sync rewrite - should work but still requires lots of cleanup
Diffstat (limited to 'Zotlabs/Daemon')
-rw-r--r-- | Zotlabs/Daemon/Cron.php | 12 | ||||
-rw-r--r-- | Zotlabs/Daemon/Onedirsync.php | 19 | ||||
-rw-r--r-- | Zotlabs/Daemon/Poller.php | 9 |
3 files changed, 32 insertions, 8 deletions
diff --git a/Zotlabs/Daemon/Cron.php b/Zotlabs/Daemon/Cron.php index 640f06102..caae0ce53 100644 --- a/Zotlabs/Daemon/Cron.php +++ b/Zotlabs/Daemon/Cron.php @@ -3,6 +3,7 @@ namespace Zotlabs\Daemon; use Zotlabs\Lib\Libsync; +use Zotlabs\Lib\Libzotdir; class Cron { @@ -35,6 +36,17 @@ class Cron { logger('cron: start'); + // If this is a directory server, request a sync with an upstream + // directory at least once a day, up to once every poll interval. + // Pull remote changes and push local changes. + // potential issue: how do we keep from creating an endless update loop? + + $dirmode = get_config('system', 'directory_mode'); + + if ($dirmode == DIRECTORY_MODE_SECONDARY || $dirmode == DIRECTORY_MODE_PRIMARY) { + Libzotdir::sync_directories($dirmode); + } + // run queue delivery process in the background Master::Summon(array('Queue')); diff --git a/Zotlabs/Daemon/Onedirsync.php b/Zotlabs/Daemon/Onedirsync.php index ea995be9e..89f4a40ed 100644 --- a/Zotlabs/Daemon/Onedirsync.php +++ b/Zotlabs/Daemon/Onedirsync.php @@ -19,13 +19,14 @@ class Onedirsync { return; } - $r = q("select * from updates where ud_id = %d limit 1", + $r = q("select * from updates where ud_id = %d", intval($update_id) ); if (!$r) return; +/* if (($r[0]['ud_flags'] & UPDATE_FLAGS_UPDATED) || (!$r[0]['ud_addr'])) return; @@ -47,22 +48,24 @@ class Onedirsync { ); return; } - +*/ // ignore doing an update if this ud_addr refers to a known dead hubloc - $h = q("select * from hubloc where hubloc_addr = '%s'", + $h = q("select * from hubloc where hubloc_addr = '%s' order by hubloc_id desc", dbesc($r[0]['ud_addr']), ); $h = Libzot::zot_record_preferred($h); if (($h) && (($h['hubloc_status'] & HUBLOC_OFFLINE) || $h['hubloc_deleted'] || $h['hubloc_error'])) { - q("update updates set ud_flags = ( ud_flags | %d ) where ud_addr = '%s' and ( ud_flags & %d ) = 0 ", - intval(UPDATE_FLAGS_DELETED), - dbesc($r[0]['ud_addr']), - intval(UPDATE_FLAGS_UPDATED) + q("update updates set ud_flags = 9 where ud_hash = '%s' and ud_flags != 9", + dbesc($r[0]['ud_hash']) ); - return; + + // 2023-04-12: Flag the entry deleted but try to update anyway since the info is not always correct + // This might change after all directory servers run the new code. + + // return; } // we might have to pull this out some day, but for now update_directory_entry() diff --git a/Zotlabs/Daemon/Poller.php b/Zotlabs/Daemon/Poller.php index 0fdc3da16..537209530 100644 --- a/Zotlabs/Daemon/Poller.php +++ b/Zotlabs/Daemon/Poller.php @@ -183,11 +183,20 @@ class Poller { $dirmode = intval(get_config('system', 'directory_mode')); if ($dirmode == DIRECTORY_MODE_SECONDARY || $dirmode == DIRECTORY_MODE_PRIMARY) { +/* $r = q("SELECT u.ud_addr, u.ud_id, u.ud_last FROM updates AS u INNER JOIN (SELECT ud_addr, max(ud_id) AS ud_id FROM updates WHERE ( ud_flags & %d ) = 0 AND ud_addr != '' AND ( ud_last <= '%s' OR ud_last > %s - INTERVAL %s ) GROUP BY ud_addr) AS s ON s.ud_id = u.ud_id ", intval(UPDATE_FLAGS_UPDATED), dbesc(NULL_DATE), db_utcnow(), db_quoteinterval('7 DAY') ); +*/ + + $r = q("SELECT * FROM updates WHERE ud_flags = 1 AND (ud_last = '%s' OR ud_last > %s - INTERVAL %s)", + dbesc(NULL_DATE), + db_utcnow(), + db_quoteinterval('7 DAY') + ); + if ($r) { foreach ($r as $rr) { |