Excepción en trabajo: método 'json=' no definido para una instancia de DiscourseActivityPub::AP::Link

Parece que seguir desde la categoría de Discourse falla ahora

Job exception: undefined method 'json=' for an instance of DiscourseActivityPub::AP::Link
backtrace
Message (19 copies reported)

Job exception: undefined method 'json=' for an instance of DiscourseActivityPub::AP::Link

Backtrace

/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/a_p/object.rb:194:in 'DiscourseActivityPub::AP::Object.factory'
/var/www/discourse/plugins/discourse-activity-pub/plugin.rb:857:in 'block (4 levels) in Plugin::Instance#activate!'
/var/www/discourse/plugins/discourse-activity-pub/plugin.rb:856:in 'Array#each'
/var/www/discourse/plugins/discourse-activity-pub/plugin.rb:856:in 'block (3 levels) in Plugin::Instance#activate!'
activerecord-8.1.4/lib/active_record/connection_adapters/abstract/database_statements.rb:376:in 'ActiveRecord::ConnectionAdapters::DatabaseStatements#transaction'
activerecord-8.1.4/lib/active_record/transactions.rb:234:in 'block (2 levels) in ActiveRecord::Transactions::ClassMethods#transaction'
activerecord-8.1.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:487:in 'ActiveRecord::ConnectionAdapters::ConnectionPool#with_pool_transaction_isolation_level'
activerecord-8.1.4/lib/active_record/transactions.rb:233:in 'block in ActiveRecord::Transactions::ClassMethods#transaction'
activerecord-8.1.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:459:in 'ActiveRecord::ConnectionAdapters::ConnectionPool#with_connection'
activerecord-8.1.4/lib/active_record/connection_handling.rb:313:in 'ActiveRecord::ConnectionHandling#with_connection'
activerecord-8.1.4/lib/active_record/transactions.rb:232:in 'ActiveRecord::Transactions::ClassMethods#transaction'
/var/www/discourse/plugins/discourse-activity-pub/plugin.rb:817:in 'block (2 levels) in Plugin::Instance#activate!'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/plugin/instance.rb:10:in 'block in DiscourseActivityPub::Plugin::Instance#activity_pub_on'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/a_p/handlers.rb:76:in 'block in DiscourseActivityPub::AP::Handlers::ClassMethods#apply_handlers'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/a_p/handlers.rb:74:in 'Array#all?'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/a_p/handlers.rb:74:in 'DiscourseActivityPub::AP::Handlers::ClassMethods#apply_handlers'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/a_p/handlers.rb:24:in 'DiscourseActivityPub::AP::Handlers#apply_handlers'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/a_p/object.rb:225:in 'DiscourseActivityPub::AP::Object.resolve_and_store'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/a_p/activity.rb:136:in 'DiscourseActivityPub::AP::Activity#process_actor_and_object'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/a_p/activity.rb:56:in 'DiscourseActivityPub::AP::Activity#process_activity'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/a_p/activity.rb:36:in 'block in DiscourseActivityPub::AP::Activity#perform_transactions'
activerecord-8.1.4/lib/active_record/connection_adapters/abstract/transaction.rb:648:in 'block in ActiveRecord::ConnectionAdapters::TransactionManager#within_new_transaction'
activesupport-8.1.4/lib/active_support/concurrency/null_lock.rb:9:in 'ActiveSupport::Concurrency::NullLock#synchronize'
activerecord-8.1.4/lib/active_record/connection_adapters/abstract/transaction.rb:645:in 'ActiveRecord::ConnectionAdapters::TransactionManager#within_new_transaction'
activerecord-8.1.4/lib/active_record/connection_adapters/abstract/database_statements.rb:386:in 'ActiveRecord::ConnectionAdapters::DatabaseStatements#within_new_transaction'
activerecord-8.1.4/lib/active_record/connection_adapters/abstract/database_statements.rb:378:in 'ActiveRecord::ConnectionAdapters::DatabaseStatements#transaction'
activerecord-8.1.4/lib/active_record/transactions.rb:234:in 'block (2 levels) in ActiveRecord::Transactions::ClassMethods#transaction'
activerecord-8.1.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:487:in 'ActiveRecord::ConnectionAdapters::ConnectionPool#with_pool_transaction_isolation_level'
activerecord-8.1.4/lib/active_record/transactions.rb:233:in 'block in ActiveRecord::Transactions::ClassMethods#transaction'
activerecord-8.1.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:465:in 'ActiveRecord::ConnectionAdapters::ConnectionPool#with_connection'
activerecord-8.1.4/lib/active_record/connection_handling.rb:313:in 'ActiveRecord::ConnectionHandling#with_connection'
activerecord-8.1.4/lib/active_record/transactions.rb:232:in 'ActiveRecord::Transactions::ClassMethods#transaction'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/a_p/activity.rb:34:in 'DiscourseActivityPub::AP::Activity#perform_transactions'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/a_p/activity.rb:26:in 'DiscourseActivityPub::AP::Activity#process'
/var/www/discourse/plugins/discourse-activity-pub/app/jobs/regular/discourse_activity_pub/process.rb:16:in 'block in Jobs::DiscourseActivityPub::Process#execute'
/var/www/discourse/lib/distributed_mutex.rb:53:in 'block in DistributedMutex#synchronize'
/var/www/discourse/lib/distributed_mutex.rb:49:in 'Thread::Mutex#synchronize'
/var/www/discourse/lib/distributed_mutex.rb:49:in 'DistributedMutex#synchronize'
/var/www/discourse/lib/distributed_mutex.rb:34:in 'DistributedMutex.synchronize'
/var/www/discourse/plugins/discourse-activity-pub/app/jobs/regular/discourse_activity_pub/process.rb:9:in 'Jobs::DiscourseActivityPub::Process#execute'
/var/www/discourse/app/jobs/base.rb:313:in 'block (2 levels) in Jobs::Base#perform'
rails_multisite-9.0.0/lib/rails_multisite/connection_management/null_instance.rb:54:in 'RailsMultisite::ConnectionManagement::NullInstance#with_connection'
rails_multisite-9.0.0/lib/rails_multisite/connection_management.rb:23:in 'RailsMultisite::ConnectionManagement.with_connection'
/var/www/discourse/app/jobs/base.rb:300:in 'block in Jobs::Base#perform'
/var/www/discourse/app/jobs/base.rb:297:in 'Array#each'
/var/www/discourse/app/jobs/base.rb:297:in 'Jobs::Base#perform'
sidekiq-7.3.10/lib/sidekiq/processor.rb:220:in 'Sidekiq::Processor#execute_job'
sidekiq-7.3.10/lib/sidekiq/processor.rb:185:in 'block (4 levels) in Sidekiq::Processor#process'
sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:180:in 'Sidekiq::Middleware::Chain#traverse'
sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:183:in 'block in Sidekiq::Middleware::Chain#traverse'
/var/www/discourse/lib/sidekiq/suppress_user_email_errors.rb:6:in 'Sidekiq::SuppressUserEmailErrors#call'
sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:182:in 'Sidekiq::Middleware::Chain#traverse'
sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:183:in 'block in Sidekiq::Middleware::Chain#traverse'
/var/www/discourse/lib/sidekiq/discourse_event.rb:6:in 'Sidekiq::DiscourseEvent#call'
sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:182:in 'Sidekiq::Middleware::Chain#traverse'
sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:183:in 'block in Sidekiq::Middleware::Chain#traverse'
/var/www/discourse/lib/sidekiq/pausable.rb:136:in 'Sidekiq::Pausable#call'
sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:182:in 'Sidekiq::Middleware::Chain#traverse'
sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:183:in 'block in Sidekiq::Middleware::Chain#traverse'
sidekiq-7.3.10/lib/sidekiq/job/interrupt_handler.rb:9:in 'Sidekiq::Job::InterruptHandler#call'
sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:182:in 'Sidekiq::Middleware::Chain#traverse'
sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:183:in 'block in Sidekiq::Middleware::Chain#traverse'
sidekiq-7.3.10/lib/sidekiq/metrics/tracking.rb:26:in 'Sidekiq::Metrics::ExecutionTracker#track'
sidekiq-7.3.10/lib/sidekiq/metrics/tracking.rb:134:in 'Sidekiq::Metrics::Middleware#call'
sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:182:in 'Sidekiq::Middleware::Chain#traverse'
sidekiq-7.3.10/lib/sidekiq/middleware/chain.rb:173:in 'Sidekiq::Middleware::Chain#invoke'
sidekiq-7.3.10/lib/sidekiq/processor.rb:184:in 'block (3 levels) in Sidekiq::Processor#process'
sidekiq-7.3.10/lib/sidekiq/processor.rb:145:in 'block (6 levels) in Sidekiq::Processor#dispatch'
sidekiq-7.3.10/lib/sidekiq/job_retry.rb:118:in 'Sidekiq::JobRetry#local'
sidekiq-7.3.10/lib/sidekiq/processor.rb:144:in 'block (5 levels) in Sidekiq::Processor#dispatch'
sidekiq-7.3.10/lib/sidekiq/config.rb:39:in 'block in <class:Config>'
sidekiq-7.3.10/lib/sidekiq/processor.rb:139:in 'block (4 levels) in Sidekiq::Processor#dispatch'
sidekiq-7.3.10/lib/sidekiq/processor.rb:281:in 'Sidekiq::Processor#stats'
sidekiq-7.3.10/lib/sidekiq/processor.rb:134:in 'block (3 levels) in Sidekiq::Processor#dispatch'
sidekiq-7.3.10/lib/sidekiq/job_logger.rb:15:in 'Sidekiq::JobLogger#call'
sidekiq-7.3.10/lib/sidekiq/processor.rb:133:in 'block (2 levels) in Sidekiq::Processor#dispatch'
sidekiq-7.3.10/lib/sidekiq/job_retry.rb:85:in 'Sidekiq::JobRetry#global'
sidekiq-7.3.10/lib/sidekiq/processor.rb:132:in 'block in Sidekiq::Processor#dispatch'
sidekiq-7.3.10/lib/sidekiq/job_logger.rb:40:in 'Sidekiq::JobLogger#prepare'
sidekiq-7.3.10/lib/sidekiq/processor.rb:131:in 'Sidekiq::Processor#dispatch'
sidekiq-7.3.10/lib/sidekiq/processor.rb:183:in 'block (2 levels) in Sidekiq::Processor#process'
sidekiq-7.3.10/lib/sidekiq/processor.rb:182:in 'Thread.handle_interrupt'
sidekiq-7.3.10/lib/sidekiq/processor.rb:182:in 'block in Sidekiq::Processor#process'
sidekiq-7.3.10/lib/sidekiq/processor.rb:181:in 'Thread.handle_interrupt'
sidekiq-7.3.10/lib/sidekiq/processor.rb:181:in 'Sidekiq::Processor#process'
sidekiq-7.3.10/lib/sidekiq/processor.rb:86:in 'Sidekiq::Processor#process_one'
sidekiq-7.3.10/lib

Autoalojado y 2026.10.0-latest (+458 commits, actualizado anoche). Funcionaba antes de la última actualización.

Disculpa por la imagen, ¿pero esto tiene relacion?

Parece que la federación desde Mastodon a Discourse se rompe si la instancia de Mastodon se actualiza a la versión 5.0.0. Así que, tal vez esto sea un error de Mastodon después de todo… ¿cómo? Mis habilidades no me permiten determinarlo.

Edición

Me equivoqué. La versión de Mastodon no importa. Si el actor seguido tiene un enlace en ese toot, no se federá a Discourse y recibí un error de json=.

Necesito saber con certeza si este problema es de Mastodon o de Discourse…

No se trata solo de enlaces. Esto es lo que distribuye un enlace.

Ambos provienen del mismo actor, pero los toots se federan de manera diferente:

Se federan a Discourse:

No se federan a Discourse:

¿Deberíamos culpar ahora a las metadatos?