Configurei o plugin ActivityPub, mas não consigo seguir os atores que configurei em minha instância de nenhum outro aplicativo fedi. Quando tento seguir:
news@forum.internet-czas-dzialac.pl
de um cliente Mastodon e atualizo a interface do Mastodon, a solicitação de seguir fica travada:
Ficou travado em “retirar solicitação de seguir” por horas. Cancelar e enviar uma solicitação de seguir novamente não ajuda, ela ainda fica travada e não informa sobre novas postagens na categoria.
Desativar a exigência de requisições assinadas nas configurações do plugin em admin/site_settings/category/all_results?filter=plugin%3Adiscourse-activity-pub não resolveu o problema
Estou vendo os seguintes avisos nos logs:
[Discourse Activity Pub] Falha ao processar https://mastodon.social/users/Ifutig#delete: O objeto não está pronto
[Discourse Activity Pub] DiscourseActivityPub::AP::Handlers::Warning
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:in `block in warn'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `block in dispatch'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `each'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `dispatch'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:in `warn'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/logger.rb:26:in `log'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/logger.rb:63:in `warn'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:42:in `rescue in block in perform_transactions'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:35:in `block in perform_transactions'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:616:in `block in within_new_transaction'
activesupport-7.2.2.1/lib/active_support/concurrency/null_lock.rb:9:in `synchronize'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:613:in `within_new_transaction'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/database_statements.rb:361:in `transaction'
activerecord-7.2.2.1/lib/active_record/transactions.rb:234:in `block in transaction'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:415:in `with_connection'
activerecord-7.2.2.1/lib/active_record/connection_handling.rb:296:in `with_connection'
activerecord-7.2.2.1/lib/active_record/transactions.rb:233:in `transaction'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:34:in `perform_transactions'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:26:in `process'
/var/www/discourse/plugins/discourse-activity-pub/app/jobs/discourse_activity_pub_process.rb:14:in `block in execute'
/var/www/discourse/lib/distributed_mutex.rb:53:in `block in synchronize'
/var/www/discourse/lib/distributed_mutex.rb:49:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:49:in `synchronize'
/var/www/discourse/lib/distributed_mutex.rb:34:in `synchronize'
/var/www/discourse/plugins/discourse-activity-pub/app/jobs/discourse_activity_pub_process.rb:8:in `execute'
/var/www/discourse/app/jobs/base.rb:316:in `block (2 levels) in perform'
rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
rails_multisite-6.1.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
/var/www/discourse/app/jobs/base.rb:303:in `block in perform'
/var/www/discourse/app/jobs/base.rb:299:in `each'
/var/www/discourse/app/jobs/base.rb:299:in `perform'
sidekiq-7.3.9/lib/sidekiq/processor.rb:220:in `execute_job'
sidekiq-7.3.9/lib/sidekiq/processor.rb:185:in `block (4 levels) in process'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:180:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
/var/www/discourse/lib/sidekiq/pausable.rb:132:in `call'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
sidekiq-7.3.9/lib/sidekiq/job/interrupt_handler.rb:9:in `call'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:183:in `block in traverse'
sidekiq-7.3.9/lib/sidekiq/metrics/tracking.rb:26:in `track'
sidekiq-7.3.9/lib/sidekiq/metrics/tracking.rb:134:in `call'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:182:in `traverse'
sidekiq-7.3.9/lib/sidekiq/middleware/chain.rb:173:in `invoke'
sidekiq-7.3.9/lib/sidekiq/processor.rb:184:in `block (3 levels) in process'
sidekiq-7.3.9/lib/sidekiq/processor.rb:145:in `block (6 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/job_retry.rb:118:in `local'
sidekiq-7.3.9/lib/sidekiq/processor.rb:144:in `block (5 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/config.rb:39:in `block in <class:Config>'
sidekiq-7.3.9/lib/sidekiq/processor.rb:139:in `block (4 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/processor.rb:281:in `stats'
sidekiq-7.3.9/lib/sidekiq/processor.rb:134:in `block (3 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/job_logger.rb:15:in `call'
sidekiq-7.3.9/lib/sidekiq/processor.rb:133:in `block (2 levels) in dispatch'
sidekiq-7.3.9/lib/sidekiq/job_retry.rb:85:in `global'
sidekiq-7.3.9/lib/sidekiq/processor.rb:132:in `block in dispatch'
sidekiq-7.3.9/lib/sidekiq/job_logger.rb:40:in `prepare'
sidekiq-7.3.9/lib/sidekiq/processor.rb:131:in `dispatch'
sidekiq-7.3.9/lib/sidekiq/processor.rb:183:in `block (2 levels) in process'
sidekiq-7.3.9/lib/sidekiq/processor.rb:182:in `handle_interrupt'
sidekiq-7.3.9/lib/sidekiq/processor.rb:182:in `block in process'
sidekiq-7.3.9/lib/sidekiq/processor.rb:181:in `handle_interrupt'
sidekiq-7.3.9/lib/sidekiq/processor.rb:181:in `process'
sidekiq-7.3.9/lib/sidekiq/processor.rb:86:in `process_one'
sidekiq-7.3.9/lib/sidekiq/processor.rb:76:in `run'
sidekiq-7.3.9/lib/sidekiq/component.rb:10:in `watchdog'
sidekiq-7.3.9/lib/sidekiq/component.rb:19:in `block in safe_thread'
As configurações activity pub allowed request origins e activity pub blocked request origins estão vazias
O lado do Mastodon no sidekiq relata este erro para a fila ActivityPub::DeliveryWorker chamada com os argumentos
Seu problema é que os objetos estão sendo criados com IDs em primeiro lugar. Não está relacionado ao serializador (ou ao fabricator). Você poderia compartilhar:
O ambiente do seu Discourse, ou seja, como você está hospedando e qual versão do Discourse você está usando.
Voltar para um commit anterior não teria ajudado assim que o problema se apresentou. Por favor, tente salvar novamente os atores em Admin > ActivityPub, ou seja, clique em "Salvar Ator" em /admin/plugins/ap/actor.
As verificações atuais de verificação de dados se aplicarão sempre que um usuário estiver envolvido em uma atividade real (ou seja, se auto-corrigirá quando necessário), no entanto, é uma boa ideia estender as mesmas verificações de verificação no acesso direto ao ator da pessoa, como você está fazendo aqui. Isso fará isso:
Obrigado por perseverar com isso. É muito útil ter uma instância real com dados incorretos para garantir que as verificações de verificação funcionem como esperado e conforme necessário. O problema original de corrupção de dados que levou a essas alterações recentes pode acontecer novamente de alguma outra forma, portanto, o objetivo aqui é garantir a consistência contínua dos dados no ponto em que os dados são necessários (em oposição a lidar com eles por meio de migrações, etc.). Me avise se você vir algum problema semelhante!
@angus obrigado pelo seu apoio até agora. Embora os URLs de entrada/saída pareçam estar corretos agora, o seguir ainda não funciona. Tentei seguir @kuba@forum.internet-czas-dzialac.pl de duas instâncias diferentes do Mastodon e falhou em ambos os casos.
Estou recebendo este erro ao enviar uma solicitação de seguir para um ator de usuário regular:
[Discourse Activity Pub] Falha ao processar https://mastodon.internet-czas-dzialac.pl/6bef64d0-c8ad-473c-85f6-d3fd190b5ebd:
Atividade não é suportada para ator e objeto
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:in `block in warn'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `block in dispatch'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `each'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:231:in `dispatch'
activesupport-7.2.2.1/lib/active_support/broadcast_logger.rb:130:in `warn'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/logger.rb:26:in `log'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/logger.rb:63:in `warn'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/object.rb:140:in `process_failed'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:139:in `process_actor_and_object'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:56:in `process_activity'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:36:in `block in perform_transactions'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:616:in `block in within_new_transaction'
activesupport-7.2.2.1/lib/active_support/concurrency/null_lock.rb:9:in `synchronize'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/transaction.rb:613:in `within_new_transaction'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/database_statements.rb:361:in `transaction'
activerecord-7.2.2.1/lib/active_record/transactions.rb:234:in `block in transaction'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:421:in `with_connection'
activerecord-7.2.2.1/lib/active_record/connection_handling.rb:296:in `with_connection'
activerecord-7.2.2.1/lib/active_record/transactions.rb:233:in `transaction'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:34:in `perform_transactions'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/ap/activity.rb:26:in `process'
/var/www/discourse/plugins/discourse-activity-pub/app/jobs/discourse_activity_pub_process.rb:14:in `block in execute'
/var/www/discourse/lib/distributed_mutex.rb:53:in `block in synchronize'
(...)\n```
E este ao desfazer uma solicitação de seguir:
Isso sugere que você está tentando seguir um ator não padrão. Esse aviso é gerado quando uma validação de tipo falha. Você pode ver os vários tipos de Ator que suportamos nesta pasta:
Isso é estranho - estou apenas tentando seguir um ator de pessoa normal. Os logs aqui são para mim tentando seguir @kuba@forum.internet-czas-dzialac.pl (pensando que isso corresponde a Profile - kuba - Forum Internet. Czas działać! - a menos que eu esteja enganado?)
Não, não é. Seguir atores do Discourse, que são categorias ou tags, é suportado. Usuários de um fórum não podem ser seguidos via ActivityPub. Eles são “pseudo-usuários” cujo ator de categoria/tag de postagem está impulsionando.