Estou observando timeouts repetidos dos workers do Pitchfork na minha instância do Discourse (2026.10.0-latest).
Após analisar os logs de produção, 12 dos 13 avisos de timeout estavam relacionados a requisições da caixa de entrada do ActivityPub, especificamente durante a resolução de atores remotos para verificação de assinaturas HTTP.
A backtrace 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 a resolução de atores remotos é executada de forma síncrona durante o processamento da caixa de entrada, o que potencialmente bloqueia os workers do Pitchfork quando servidores remotos respondem lentamente.
Também habilitei activity_pub_verbose_logging por aproximadamente 24 horas e notei tentativas repetidas de resolver atores do Mastodon excluídos, retornando HTTP 410 Gone, resultando em inúmeros avisos de falha no processamento de atividades Delete.
Exemplo:
[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
Não confirmei se essas atividades Delete com falha estão diretamente relacionadas aos timeouts dos workers.
A resolução síncrona de atores remotos durante a verificação de assinatura da caixa de entrada é um comportamento esperado? O tratamento de timeout ou o cache poderiam ser melhorados para evitar o bloqueio dos workers web?
Ficarei feliz em fornecer logs adicionais sanitizados, se necessário.