ログにデッドロックエラーが出ている

ジョブ例外: PG::TRDeadlockDetected: エラー: デッドロックが検出されました
詳細: プロセス 29659 はトランザクション 892416679 の ShareLock を待機しています。プロセス 29650 によってブロックされています。
プロセス 29650 はトランザクション 892416541 の ShareLock を待機しています。プロセス 29659 によってブロックされています。
ヒント: クエリの詳細については、サーバーログを参照してください。
コンテキスト: リレーション "discourse_activity_pub_actors" の更新されたタプル (36923,3) を再確認中に

これらが /logs に表示されています @angus。ユーザーインターフェースに問題があるかどうかはわかりません。スタックトレースは、ジョブが配信を処理していることを示しています。

rack-mini-profiler-3.3.1/lib/patches/db/pg.rb:69:in `exec_params'
rack-mini-profiler-3.3.1/lib/patches/db/pg.rb:69:in `exec_params'
(eval at /var/www/discourse/lib/method_profiler.rb:38):105:in `exec_params'
activerecord-7.2.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:894:in `block (2 levels) in exec_no_cache'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract_adapter.rb:1004:in `block in with_raw_connection'
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_adapter.rb:976:in `with_raw_connection'
activerecord-7.2.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:893:in `block in exec_no_cache'
activesupport-7.2.2.1/lib/active_support/notifications/instrumenter.rb:58:in `instrument'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract_adapter.rb:1119:in `log'
activerecord-7.2.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:892:in `exec_no_cache'
activerecord-7.2.2.1/lib/active_record/connection_adapters/postgresql_adapter.rb:872:in `execute_and_clear'
activerecord-7.2.2.1/lib/active_record/connection_adapters/postgresql/database_statements.rb:79:in `exec_delete'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/database_statements.rb:208:in `update'
activerecord-7.2.2.1/lib/active_record/connection_adapters/abstract/query_cache.rb:27:in `update'
activerecord-7.2.2.1/lib/active_record/relation.rb:610:in `block in update_all'
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/relation.rb:598:in `update_all'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_failure_tracker.rb:36:in `set_domain_actors_as_available'
/var/www/discourse/plugins/discourse-activity-pub/lib/discourse_activity_pub/delivery_failure_tracker.rb:22:in `track_success'
/var/www/discourse/plugins/discourse-activity-pub/app/jobs/discourse_activity_pub_deliver.rb:50:in `perform_request'
/var/www/discourse/plugins/discourse-activity-pub/app/jobs/discourse_activity_pub_deliver.rb:15:in `execute'
/var/www/discourse/app/jobs/base.rb:316:in `block (2 levels) in perform'
「いいね!」 1

これで対応できるはずです

「いいね!」 2

残念ながら、それで問題は解決しないようです @angus。おそらくDBに多くのActorが存在し、バッチ処理がまだ不十分です。

例えば、metaではそのモデルに90k以上の行があります。

discourse(prod)> DiscourseActivityPubActor.where(domain: 'mastodon.social').size
=> 90264

配信ごとに available 列を更新する必要は絶対にありますか?

承知いたしました。今回の変更と以前の変更を合わせて、それが解決されることを願っています。

「いいね!」 1

このトピックは20時間後に自動的に閉じられました。新しい返信はもう許可されていません。