- if ($delivery['failed'] >= DI::config()->get('system', 'worker_defer_limit')) {
- Logger::info('Removing failed deliveries', ['inbox' => $delivery['inbox'], 'failed' => $delivery['failed']]);
- Post\Delivery::removeFailed($delivery['inbox']);
+ if (Worker::add(['priority' => $priority, 'force_priority' => true], 'APDelivery', '', 0, $delivery['inbox'], 0)) {
+ Logger::info('Priority for APDelivery worker adjusted', ['inbox' => $delivery['inbox'], 'failed' => $delivery['failed'], 'priority' => $priority]);
+ }
+ }
+
+ DBA::close($deliveries);
+
+ // Optimizing this table only last seconds
+ if (DI::config()->get('system', 'optimize_tables')) {
+ Logger::info('Optimize start');
+ DBA::e("OPTIMIZE TABLE `post-delivery`");
+ Logger::info('Optimize end');
+ }
+ }
+
+ /**
+ * Directly deliver messages or requeue them.
+ */
+ private static function deliverPosts()
+ {
+ $deliveries = DBA::p("SELECT `gsid`, MAX(`failed`) AS `failed` FROM `delivery-queue` GROUP BY `gsid` ORDER BY RAND()");
+ while ($delivery = DBA::fetch($deliveries)) {
+ if ($delivery['failed'] > 0) {
+ Logger::info('Removing failed deliveries', ['gsid' => $delivery['gsid'], 'failed' => $delivery['failed']]);
+ Delivery::removeFailedQueue($delivery['gsid']);