$recursion_depth = $activity['recursion-depth'] ?? 0;
Logger::notice('Parent not found. Try to refetch it.', ['parent' => $activity['reply-to-id'], 'recursion-depth' => $recursion_depth]);
if ($recursion_depth < 10) {
- self::fetchMissingActivity($activity['reply-to-id'], $activity, '', Receiver::COMPLETION_AUTO);
+ $result = self::fetchMissingActivity($activity['reply-to-id'], $activity, '', Receiver::COMPLETION_AUTO);
+ $fetch_by_worker = empty($result);
} else {
- Logger::notice('Recursion level is too high, fetching is done by worker.', ['parent' => $activity['reply-to-id'], 'recursion-depth' => $recursion_depth]);
+ Logger::notice('Recursion level is too high.', ['parent' => $activity['reply-to-id'], 'recursion-depth' => $recursion_depth]);
+ $activity['recursion-depth'] = 0;
+ $fetch_by_worker = true;
+ }
+
+ if ($fetch_by_worker) {
+ Logger::notice('Fetching is done by worker.', ['parent' => $activity['reply-to-id'], 'recursion-depth' => $recursion_depth]);
Worker::add(PRIORITY_HIGH, 'FetchMissingActivity', $activity['reply-to-id'], $activity, '', Receiver::COMPLETION_AUTO);
return [];
}
while ($entry = DBA::fetch($entries)) {
self::process($entry['id']);
}
+ }
- DBA::delete('inbox-entry', ["`received` < ?", DateTimeFormat::utc('now - 1 days')]);
+ /**
+ * Process all activities
+ *
+ * @return void
+ */
+ public static function clear()
+ {
+ DBA::delete('inbox-entry', ["`received` < ?", DateTimeFormat::utc('now - 2 days')]);
}
/**
Tag::setLocalTrendingHashtags(24, 20);
Tag::setGlobalTrendingHashtags(24, 20);
- // Process pending posts in the queue
- Queue::processAll();
+ // Remove old pending posts from the queue
+ Queue::clear();
// Search for new contacts in the directory
if (DI::config()->get('system', 'synchronize_directory')) {
namespace Friendica\Worker;
use Friendica\Core\Logger;
+use Friendica\Core\Worker;
use Friendica\Protocol\ActivityPub;
use Friendica\Protocol\ActivityPub\Receiver;
{
Logger::info('Start fetching missing activity', ['url' => $url]);
$result = ActivityPub\Processor::fetchMissingActivity($url, $child, $relay_actor, $completion);
- Logger::info('Finished fetching missing activity', ['url' => $url, 'result' => $result]);
+ if ($result) {
+ Logger::info('Successfully fetched missing activity', ['url' => $url]);
+ } elseif (!Worker::defer()) {
+ Logger::info('Activity could not be fetched', ['url' => $url]);
+ // Possibly we should recursively remove child activities at this point.
+ } else {
+ Logger::info('Fetching deferred', ['url' => $url]);
+ }
}
}