こんにちは、
discourse-auto-suspend プラグインを使用して、1 年以上使用されていないプロフィールを自動的に停止しています。
その後、すべての投稿やトピックと共にプロフィールを削除します。
(_delete user max post age_ = 3700、_delete all posts max_ = 999 に設定しています)
過去数ヶ月の間に、すでに 1500 人以上のユーザーを削除し、数千件の投稿とおそらく 1000 を超えるトピックを削除しました。
しかし現在、システムが投稿の削除を開始したものの、ユーザーが 68 件の投稿と 63 件のトピックのまま固定されてしまうケースが発生しています。削除ボタンを何度クリックしても、投稿やスレッドは削除されません。
/logs を確認すると、以下の警告が表示されています。
Failed to process hijacked response correctly : Couldn't find Topic with 'id'=569
Data Explorer プラグインで topics テーブルを確認すると、id 569 のトピックは存在しません。
568 は 2017-05-22 14:01:35.419842 に存在し、570 は 2017-05-22 14:20:27.610993 に存在します。
しかし、posts テーブルを確認すると、topic_id 569 を持つ 9 件の投稿が存在します。
どうやらデータベースに不整合があるようです。2017 年 5 月当時は私が管理者ではなかったため、その時点でシステムに問題があったかどうかはわかりません。
削除ボタンが引き続きエントリを削除できるように、この問題を解決する方法はありますか?
この警告のバックトレースは以下の通りです。
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.0/lib/active_record/relation/finder_methods.rb:346:in `raise_record_not_found_exception!'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.0/lib/active_record/relation/finder_methods.rb:454:in `find_one'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.0/lib/active_record/relation/finder_methods.rb:433:in `find_with_ids'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.0/lib/active_record/relation/finder_methods.rb:69:in `find'
/var/www/discourse/app/serializers/post_serializer.rb:397:in `topic'
/var/www/discourse/app/serializers/post_serializer.rb:87:in `topic_slug'
(eval):22:in `_fast_attributes'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/active_model_serializers-0.8.4/lib/active_model/serializer.rb:468:in `rescue in attributes'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/active_model_serializers-0.8.4/lib/active_model/serializer.rb:455:in `attributes'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/active_model_serializers-0.8.4/lib/active_model/serializer.rb:480:in `_serializable_hash'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/active_model_serializers-0.8.4/lib/active_model/serializer.rb:359:in `serializable_hash'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/active_model_serializers-0.8.4/lib/active_model/serializer.rb:347:in `as_json'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.0/lib/active_support/json/encoding.rb:35:in `encode'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.0/lib/active_support/json/encoding.rb:22:in `encode'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activesupport-5.2.0/lib/active_support/core_ext/object/json.rb:41:in `to_json'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/active_model_serializers-0.8.4/lib/active_model/serializer.rb:331:in `to_json'
/var/www/discourse/app/models/web_hook.rb:95:in `generate_payload'
/var/www/discourse/lib/post_destroyer.rb:48:in `destroy'
/var/www/discourse/app/models/user.rb:789:in `block in delete_all_posts!'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.0/lib/active_record/relation/delegation.rb:41:in `each'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/activerecord-5.2.0/lib/active_record/relation/delegation.rb:41:in `each'
/var/www/discourse/app/models/user.rb:788:in `delete_all_posts!'
/var/www/discourse/app/controllers/admin/users_controller.rb:51:in `block in delete_all_posts'
/var/www/discourse/lib/hijack.rb:56:in `instance_eval'
/var/www/discourse/lib/hijack.rb:56:in `block in hijack'
/var/www/discourse/lib/scheduler/defer.rb:94:in `block in do_work'
/var/www/discourse/vendor/bundle/ruby/2.5.0/gems/rails_multisite-2.0.4/lib/rails_multisite/connection_management.rb:63:in `with_connection'
/var/www/discourse/lib/scheduler/defer.rb:89:in `do_work'
/var/www/discourse/lib/scheduler/defer.rb:79:in `block (2 levels) in start_thread'








