Je rencontre des dépassements de délai (timeouts) répétés des workers Pitchfork sur mon instance Discourse (2026.10.0-latest).
Après analyse des journaux de production, 12 des 13 avertissements de timeout étaient liés à des requêtes vers la boîte de réception ActivityPub, en particulier lors de la résolution d’acteurs distants pour la vérification des signatures HTTP.
La trace d’exécution (backtrace) pertinente :
Pitchfork worker is about to timeout,
dumping backtrace for main thread
excon/socket.rb:368:in 'IO.select'
excon/socket.rb:79:in 'Excon::Socket#readline'
excon.rb:255:in 'Excon.get'
discourse_activity_pub/request.rb:70:in 'Request#perform'
discourse_activity_pub/request.rb:34:in 'Request#get_json_ld'
discourse_activity_pub/json_ld.rb:71:in 'JsonLd.request_object'
discourse_activity_pub/a_p/object.rb:251:in 'AP::Object.resolve'
signature_verification.rb:254:in 'actor_from_key_id'
signature_verification.rb:61:in 'signed_request_actor'
inboxes_controller.rb:31:in 'process_json'
inboxes_controller.rb:10:in 'create'
Il semble que la résolution des acteurs distants s’effectue de manière synchrone pendant le traitement de la boîte de réception, ce qui peut potentiellement bloquer les workers Pitchfork lorsque les serveurs distants répondent lentement.
J’ai également activé activity_pub_verbose_logging pendant environ 24 heures et j’ai constaté des tentatives répétées de résolution d’acteurs Mastodon supprimés renvoyant un code HTTP 410 Gone, entraînant de nombreux avertissements d’échec du traitement d’activités Delete.
Exemple :
[Discourse Activity Pub] GET request to
https://mastodon.social/ap/users/115676297044305006
failed: {"error":"Gone"}
[Discourse Activity Pub] Failed to resolve actor
[Discourse Activity Pub] Failed to process Delete activity:
Unable to create actor
Je n’ai pas confirmé si ces activités Delete en échec sont directement liées aux timeouts des workers.
La résolution synchrone des acteurs distants pendant la vérification des signatures de la boîte de réception est-elle un comportement attendu ? Le traitement des timeouts ou la mise en cache pourraient-ils être améliorés pour éviter de bloquer les workers web ?
Je suis prêt à fournir des journaux supplémentaires anonymisés si nécessaire.