Avoid loops at deletion / decoupling for relay posts
This commit is contained in:
parent
08e9b2cc12
commit
a27274b3b4
4 changed files with 20 additions and 25 deletions
|
@ -24,6 +24,7 @@ namespace Friendica\Protocol\ActivityPub;
|
|||
use Friendica\Content\Text\BBCode;
|
||||
use Friendica\Content\Text\HTML;
|
||||
use Friendica\Content\Text\Markdown;
|
||||
use Friendica\Core\Cache\Enum\Duration;
|
||||
use Friendica\Core\Logger;
|
||||
use Friendica\Core\Protocol;
|
||||
use Friendica\Core\System;
|
||||
|
@ -56,6 +57,7 @@ use Friendica\Worker\Delivery;
|
|||
*/
|
||||
class Processor
|
||||
{
|
||||
const CACHEKEY_FETCH_ACTIVITY = 'processor:fetchMissingActivity:';
|
||||
/**
|
||||
* Extracts the tag character (#, @, !) from mention links
|
||||
*
|
||||
|
@ -1218,15 +1220,23 @@ class Processor
|
|||
$uid = 0;
|
||||
}
|
||||
|
||||
$object = ActivityPub::fetchContent($url, $uid);
|
||||
if (empty($object)) {
|
||||
Logger::notice('Activity was not fetchable, aborting.', ['url' => $url, 'uid' => $uid]);
|
||||
return '';
|
||||
}
|
||||
$cachekey = self::CACHEKEY_FETCH_ACTIVITY . $url;
|
||||
$object = DI::cache()->get($cachekey);
|
||||
|
||||
if (empty($object['id'])) {
|
||||
Logger::notice('Activity has got not id, aborting. ', ['url' => $url, 'object' => $object]);
|
||||
return '';
|
||||
if (is_null($object)) {
|
||||
$object = ActivityPub::fetchContent($url, $uid);
|
||||
if (empty($object)) {
|
||||
Logger::notice('Activity was not fetchable, aborting.', ['url' => $url, 'uid' => $uid]);
|
||||
return '';
|
||||
}
|
||||
|
||||
if (empty($object['id'])) {
|
||||
Logger::notice('Activity has got not id, aborting. ', ['url' => $url, 'object' => $object]);
|
||||
return '';
|
||||
}
|
||||
DI::cache()->set($cachekey, $object, Duration::FIVE_MINUTES);
|
||||
} else {
|
||||
Logger::debug('Fetch from cache', ['url' => $url]);
|
||||
}
|
||||
|
||||
$signer = [];
|
||||
|
|
|
@ -126,14 +126,6 @@ class Queue
|
|||
return;
|
||||
}
|
||||
|
||||
$children = DBA::select('inbox-entry', ['id'], ['in-reply-to-id' => $entry['object-id']]);
|
||||
while ($child = DBA::fetch($children)) {
|
||||
if ($id == $child['id']) {
|
||||
continue;
|
||||
}
|
||||
self::deleteById($child['id']);
|
||||
}
|
||||
DBA::close($children);
|
||||
DBA::delete('inbox-entry', ['id' => $entry['id']]);
|
||||
}
|
||||
|
||||
|
|
|
@ -208,13 +208,6 @@ class Receiver
|
|||
Logger::notice('Relayed message had not been fetched', ['id' => $object_id, 'actor' => $actor]);
|
||||
return;
|
||||
}
|
||||
|
||||
$item_id = Item::searchByLink($object_id);
|
||||
if ($item_id) {
|
||||
Logger::info('Relayed message had been fetched and stored', ['id' => $object_id, 'item' => $item_id, 'actor' => $actor]);
|
||||
} else {
|
||||
Logger::notice('Relayed message had not been stored', ['id' => $object_id, 'actor' => $actor]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -599,9 +592,10 @@ class Receiver
|
|||
return;
|
||||
}
|
||||
|
||||
if ($push) {
|
||||
if (!empty($object_data['entry-id']) && ($push || ($activity['completion-mode'] == self::COMPLETION_RELAY))) {
|
||||
// We delay by 5 seconds to allow to accumulate all receivers
|
||||
$delayed = date(DateTimeFormat::MYSQL, time() + 5);
|
||||
Logger::debug('Initiate processing', ['id' => $object_data['entry-id'], 'uri' => $object_data['object_id']]);
|
||||
Worker::add(['priority' => PRIORITY_HIGH, 'delayed' => $delayed], 'ProcessQueue', $object_data['entry-id']);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -31,7 +31,6 @@ use Friendica\Database\DBA;
|
|||
use Friendica\DI;
|
||||
use Friendica\Model\APContact;
|
||||
use Friendica\Model\Contact;
|
||||
use Friendica\Model\Conversation;
|
||||
use Friendica\Model\GServer;
|
||||
use Friendica\Model\Item;
|
||||
use Friendica\Model\Photo;
|
||||
|
|
Loading…
Reference in a new issue