Estoy experimentando timeouts repetidos de workers de Pitchfork en mi instancia de Discourse (2026.10.0-latest).
Tras analizar los registros de producción, 12 de las 13 advertencias de timeout estaban relacionadas con solicitudes a la bandeja de entrada de ActivityPub, específicamente durante la resolución de actores remotos para la verificación de firmas HTTP.
La traza de errores relevante:
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'
Parece que la resolución de actores remotos se ejecuta de forma síncrona durante el procesamiento de la bandeja de entrada, lo que potencialmente bloquea a los workers de Pitchfork cuando los servidores remotos responden lentamente.
También habilité activity_pub_verbose_logging durante aproximadamente 24 horas y noté intentos repetidos de resolver actores de Mastodon eliminados que devolvían HTTP 410 Gone, resultando en numerosas advertencias de fallo al procesar actividades Delete.
Ejemplo:
[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
No he confirmado si estas actividades Delete fallidas están directamente relacionadas con los timeouts de los workers.
¿Es un comportamiento esperado la resolución síncrona de actores remotos durante la verificación de firmas de la bandeja de entrada? ¿Se podría mejorar el manejo de timeouts o la caché para evitar el bloqueo de los workers web?
Quedo a disposición para proporcionar registros adicionales sanitizados si es necesario.