namespace Friendica\Worker;
use Friendica\Core\Logger;
+use Friendica\Core\Worker;
+use Friendica\DI;
use Friendica\Protocol\ActivityPub;
+use Friendica\Protocol\ActivityPub\Queue;
use Friendica\Protocol\ActivityPub\Receiver;
class FetchMissingActivity
/**
* Fetch missing activities
* @param string $url Contact URL
+ *
+ * @return void
*/
public static function execute(string $url, array $child = [], string $relay_actor = '', int $completion = Receiver::COMPLETION_MANUAL)
{
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]);
+
+ // recursively delete all entries that belong to this worker task
+ $queue = DI::app()->getQueue();
+ if (!empty($queue['id'])) {
+ Queue::deleteByWorkerId($queue['id']);
+ }
+ } else {
+ Logger::info('Fetching deferred', ['url' => $url]);
+ }
}
}