From 0bbe954316dd5aceb6160e4ae76458ac1b130e70 Mon Sep 17 00:00:00 2001 From: Michael Date: Sat, 24 Jul 2021 22:08:33 +0000 Subject: [PATCH] Getter/Setter for queue --- src/App.php | 41 ++++++++++++++++++++++++------------ src/Core/Worker.php | 14 ++++++------ src/Worker/Expire.php | 4 ++-- src/Worker/Notifier.php | 18 ++++++++-------- src/Worker/ProfileUpdate.php | 2 +- 5 files changed, 47 insertions(+), 32 deletions(-) diff --git a/src/App.php b/src/App.php index d71acef632..9e2bb0d22f 100644 --- a/src/App.php +++ b/src/App.php @@ -69,11 +69,11 @@ class App public $videowidth = 425; public $videoheight = 350; public $theme_events_in_profile = true; - public $queue; - private $timezone = ''; + private $timezone = ''; private $profile_owner = 0; private $contact_id = 0; + private $queue = []; /** * @var App\Mode The Mode of the Application @@ -133,8 +133,8 @@ class App /** * Set the profile owner ID * - * @param int $owner_id - * @return void + * @param int $owner_id + * @return void */ public function setProfileOwner(int $owner_id) { @@ -144,7 +144,7 @@ class App /** * Get the profile owner ID * - * @return int + * @return int */ public function getProfileOwner():int { @@ -153,9 +153,9 @@ class App /** * Set the contact ID - * - * @param int $contact_id - * @return void + * + * @param int $contact_id + * @return void */ public function setContactId(int $contact_id) { @@ -165,7 +165,7 @@ class App /** * Get the contact ID * - * @return int + * @return int */ public function getContactId():int { @@ -174,9 +174,9 @@ class App /** * Set the timezone - * - * @param int $timezone - * @return void + * + * @param int $timezone + * @return void */ public function setTimeZone(string $timezone) { @@ -186,13 +186,28 @@ class App /** * Get the timezone * - * @return int + * @return int */ public function getTimeZone():string { return $this->timezone; } + public function setQueue(array $queue) + { + $this->queue = $queue; + } + + public function getQueue() + { + return $this->queue ?? []; + } + + public function getQueueValue(string $index) + { + return $this->queue[$index] ?? null; + } + /** * Returns the current config cache of this node * diff --git a/src/Core/Worker.php b/src/Core/Worker.php index f21513f33c..824275fa74 100644 --- a/src/Core/Worker.php +++ b/src/Core/Worker.php @@ -446,7 +446,7 @@ class Worker $queue['priority'] = PRIORITY_MEDIUM; } - $a->queue = $queue; + $a->setQueue($queue); $up_duration = microtime(true) - self::$up_start; @@ -462,7 +462,7 @@ class Worker Logger::disableWorker(); - unset($a->queue); + $a->setQueue([]); $duration = (microtime(true) - $stamp); @@ -831,7 +831,7 @@ class Worker $stamp = (float)microtime(true); $queues = DBA::p("SELECT `process`.`pid`, COUNT(`workerqueue`.`pid`) AS `entries` FROM `process` - LEFT JOIN `workerqueue` ON `workerqueue`.`pid` = `process`.`pid` AND NOT `workerqueue`.`done` + LEFT JOIN `workerqueue` ON `workerqueue`.`pid` = `process`.`pid` AND NOT `workerqueue`.`done` GROUP BY `process`.`pid`"); while ($queue = DBA::fetch($queues)) { $ids[$queue['pid']] = $queue['entries']; @@ -1351,12 +1351,12 @@ class Worker */ public static function defer() { - if (empty(DI::app()->queue)) { + $queue = DI::app()->getQueue(); + + if (empty($queue)) { return false; } - $queue = DI::app()->queue; - $retrial = $queue['retrial']; $id = $queue['id']; $priority = $queue['priority']; @@ -1587,7 +1587,7 @@ class Worker } else { Logger::info('We are outside the maintenance window', ['current' => date('H:i:s', $current), 'start' => date('H:i:s', $start), 'end' => date('H:i:s', $end)]); } - + return $execute; } } diff --git a/src/Worker/Expire.php b/src/Worker/Expire.php index d3b895f440..d64a63a843 100644 --- a/src/Worker/Expire.php +++ b/src/Worker/Expire.php @@ -62,7 +62,7 @@ class Expire $r = DBA::p("SELECT `uid`, `username` FROM `user` WHERE `expire` != 0"); while ($row = DBA::fetch($r)) { Logger::info('Calling expiry', ['user' => $row['uid'], 'username' => $row['username']]); - Worker::add(['priority' => $a->queue['priority'], 'created' => $a->queue['created'], 'dont_fork' => true], + Worker::add(['priority' => $a->getQueueValue('priority'), 'created' => $a->getQueueValue('created'), 'dont_fork' => true], 'Expire', (int)$row['uid']); } DBA::close($r); @@ -70,7 +70,7 @@ class Expire Logger::notice('calling hooks'); foreach (Hook::getByName('expire') as $hook) { Logger::info('Calling expire', ['hook' => $hook[1]]); - Worker::add(['priority' => $a->queue['priority'], 'created' => $a->queue['created'], 'dont_fork' => true], + Worker::add(['priority' => $a->getQueueValue('priority'), 'created' => $a->getQueueValue('created'), 'dont_fork' => true], 'Expire', 'hook', $hook[1]); } diff --git a/src/Worker/Notifier.php b/src/Worker/Notifier.php index 60ae653855..bec0c55f11 100644 --- a/src/Worker/Notifier.php +++ b/src/Worker/Notifier.php @@ -86,7 +86,7 @@ class Notifier foreach ($inboxes as $inbox => $receivers) { $ap_contacts = array_merge($ap_contacts, $receivers); Logger::info('Delivery via ActivityPub', ['cmd' => $cmd, 'target' => $target_id, 'inbox' => $inbox]); - Worker::add(['priority' => PRIORITY_HIGH, 'created' => $a->queue['created'], 'dont_fork' => true], + Worker::add(['priority' => PRIORITY_HIGH, 'created' => $a->getQueueValue('created'), 'dont_fork' => true], 'APDelivery', $cmd, $target_id, $inbox, $uid, $receivers, $post_uriid); } } elseif ($cmd == Delivery::SUGGESTION) { @@ -94,7 +94,7 @@ class Notifier $uid = $suggest->uid; $recipients[] = $suggest->cid; } elseif ($cmd == Delivery::REMOVAL) { - return self::notifySelfRemoval($target_id, $a->queue['priority'], $a->queue['created']); + return self::notifySelfRemoval($target_id, $a->getQueueValue('priority'), $a->getQueueValue('created')); } elseif ($cmd == Delivery::RELOCATION) { $uid = $target_id; @@ -182,7 +182,7 @@ class Notifier Logger::log('GUID: ' . $target_item["guid"] . ': Parent is ' . $parent['network'] . '. Thread parent is ' . $thr_parent['network'], Logger::DEBUG); if (!self::isRemovalActivity($cmd, $owner, Protocol::ACTIVITYPUB)) { - $apdelivery = self::activityPubDelivery($cmd, $target_item, $parent, $thr_parent, $a->queue['priority'], $a->queue['created'], $owner); + $apdelivery = self::activityPubDelivery($cmd, $target_item, $parent, $thr_parent, $a->getQueueValue('priority'), $a->getQueueValue('created'), $owner); $ap_contacts = $apdelivery['contacts']; $delivery_queue_count += $apdelivery['count']; } @@ -339,7 +339,7 @@ class Notifier if ((intval($parent['forum_mode']) == 1) && !$top_level && ($cmd !== Delivery::UPLINK) && ($target_item['verb'] != Activity::ANNOUNCE)) { - Worker::add($a->queue['priority'], 'Notifier', Delivery::UPLINK, $post_uriid, $sender_uid); + Worker::add($a->getQueueValue('priority'), 'Notifier', Delivery::UPLINK, $post_uriid, $sender_uid); } foreach ($items as $item) { @@ -492,7 +492,7 @@ class Notifier if (!empty($target_item)) { Logger::log('Calling hooks for ' . $cmd . ' ' . $target_id, Logger::DEBUG); - Hook::fork($a->queue['priority'], 'notifier_normal', $target_item); + Hook::fork($a->getQueueValue('priority'), 'notifier_normal', $target_item); Hook::callAll('notifier_end', $target_item); @@ -581,10 +581,10 @@ class Notifier // Situation is that sometimes Friendica servers receive Friendica posts over the Diaspora protocol first. // The conversion in Markdown reduces the formatting, so these posts should arrive after the Friendica posts. // This is only important for high and medium priority tasks and not for Low priority jobs like deletions. - if (($contact['network'] == Protocol::DIASPORA) && in_array($a->queue['priority'], [PRIORITY_HIGH, PRIORITY_MEDIUM])) { - $deliver_options = ['priority' => $a->queue['priority'], 'dont_fork' => true]; + if (($contact['network'] == Protocol::DIASPORA) && in_array($a->getQueueValue('priority'), [PRIORITY_HIGH, PRIORITY_MEDIUM])) { + $deliver_options = ['priority' => $a->getQueueValue('priority'), 'dont_fork' => true]; } else { - $deliver_options = ['priority' => $a->queue['priority'], 'created' => $a->queue['created'], 'dont_fork' => true]; + $deliver_options = ['priority' => $a->getQueueValue('priority'), 'created' => $a->getQueueValue('created'), 'dont_fork' => true]; } if (Worker::add($deliver_options, 'Delivery', $cmd, $post_uriid, (int)$contact['id'], $sender_uid)) { @@ -631,7 +631,7 @@ class Notifier Logger::info('Activating internal PuSH', ['item' => $target_id]); // Handling the pubsubhubbub requests - PushSubscriber::publishFeed($owner['uid'], $a->queue['priority']); + PushSubscriber::publishFeed($owner['uid'], $a->getQueueValue('priority')); } return $delivery_queue_count; } diff --git a/src/Worker/ProfileUpdate.php b/src/Worker/ProfileUpdate.php index c509663617..e9e9afe8d2 100644 --- a/src/Worker/ProfileUpdate.php +++ b/src/Worker/ProfileUpdate.php @@ -42,7 +42,7 @@ class ProfileUpdate { foreach ($inboxes as $inbox => $receivers) { Logger::log('Profile update for user ' . $uid . ' to ' . $inbox .' via ActivityPub', Logger::DEBUG); - Worker::add(['priority' => $a->queue['priority'], 'created' => $a->queue['created'], 'dont_fork' => true], + Worker::add(['priority' => $a->getQueueValue('priority'), 'created' => $a->getQueueValue('created'), 'dont_fork' => true], 'APDelivery', Delivery::PROFILEUPDATE, 0, $inbox, $uid, $receivers); }