Bonjour,
Nous suspendons automatiquement les profils qui n’ont pas été utilisés depuis au moins un an avec le plugin discourse-auto-suspend.
Par la suite, nous supprimons ces profils ainsi que tous leurs messages et sujets.
(nous avons configuré delete user max post age = 3700 et delete all posts max = 999)
Ces derniers mois, j’ai déjà supprimé plus de 1500 utilisateurs, avec plusieurs milliers de messages et probablement plus de mille sujets.
Cependant, j’ai maintenant un utilisateur pour lequel le système a commencé à supprimer les messages, mais le profil reste bloqué à 68 messages et 63 sujets, quelle que soit la fréquence à laquelle je clique sur le bouton pour supprimer les messages et les fils de discussion.
En examinant les journaux (/logs), j’observe l’avertissement suivant :
Échec du traitement correct de la réponse détournée : Impossible de trouver le sujet avec 'id'=569
Lorsque j’interroge la table topics via le plugin Data Explorer, il n’existe aucun sujet avec l’identifiant 569.
Le sujet 568 existe depuis le 2017-05-22 14:01:35.419842, suivi du sujet 570 depuis le 2017-05-22 14:20:27.610993.
Cependant, en examinant la table posts, je vois bien un topic_id 569 avec 9 messages.
Il semble qu’il y ait une incohérence dans la base de données. En mai 2017, je n’étais pas encore administrateur, donc je ne sais pas s’il y avait eu des problèmes système à cette époque.
Existe-t-il une méthode pour résoudre ce problème afin que le bouton de suppression continue de supprimer les entrées ?
Voici la trace d’appel (backtrace) associée à cet avertissement :
/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'








