diff --git a/src/Model/Post/Delivery.php b/src/Model/Post/Delivery.php index 52c1bf8e0e..f8ed068fe8 100644 --- a/src/Model/Post/Delivery.php +++ b/src/Model/Post/Delivery.php @@ -83,7 +83,7 @@ class Delivery public static function selectForInbox(string $inbox) { - $rows = DBA::select('post-delivery', [], ['inbox-id' => ItemURI::getIdByURI($inbox)], ['order' => ['created']]); + $rows = DBA::select('post-delivery', [], ["`inbox-id` = ? AND `failed` < ?", ItemURI::getIdByURI($inbox), DI::config()->get('system', 'worker_defer_limit')], ['order' => ['created']]); $deliveries = []; while ($row = DBA::fetch($rows)) { if (!empty($row['receivers'])) { diff --git a/src/Worker/APDelivery.php b/src/Worker/APDelivery.php index 6995b0edf1..df9df8128a 100644 --- a/src/Worker/APDelivery.php +++ b/src/Worker/APDelivery.php @@ -86,8 +86,6 @@ class APDelivery private static function deliver(string $inbox) { - Post\Delivery::removeFailed($inbox); - $uri_ids = []; $posts = Post\Delivery::selectForInbox($inbox); diff --git a/src/Worker/RequeuePosts.php b/src/Worker/RequeuePosts.php index 600a0d40b3..3c3d249bb6 100644 --- a/src/Worker/RequeuePosts.php +++ b/src/Worker/RequeuePosts.php @@ -24,6 +24,7 @@ namespace Friendica\Worker; use Friendica\Core\Logger; use Friendica\Core\Worker; use Friendica\Database\DBA; +use Friendica\Model\Post; /** * Requeue posts that are stuck in the post-delivery table without a matching delivery job. @@ -35,6 +36,8 @@ class RequeuePosts { $deliveries = DBA::p("SELECT `item-uri`.`uri` AS `inbox` FROM `post-delivery` INNER JOIN `item-uri` ON `item-uri`.`id` = `post-delivery`.`inbox-id` GROUP BY `inbox`"); while ($delivery = DBA::fetch($deliveries)) { + Post\Delivery::removeFailed($delivery['inbox']); + if (Worker::add(PRIORITY_HIGH, 'APDelivery', '', 0, $delivery['inbox'], 0)) { Logger::info('Missing APDelivery worker added for inbox', ['inbox' => $delivery['inbox']]); }