Unable to delete all of a users posts 500 server error

AI-generated summary

A user, Headless, is experiencing a 500 server error when trying to delete all 9000 posts from a user’s account. The error log points to an issue with the Discourse Ratings plugin. Falco suggests removing the plugin, rebuilding, and then trying again. However, Headless and jericson express dissatisfaction with this solution, as it would require removing the plugin, rebuilding, deleting the posts, and then re-adding the plugin. jericson has also experienced the issue and has submitted a report on the plugin’s GitHub repository (issue #70).

Whenever I attempt to delete all of a users posts (As this is what they wanted), they have about 9000 posts that have to be deleted. I understand this is not what I should be doing and I should anonymize the user. However, in my scenario I need to delete this users account, but before that I have to delete their posts. I tried looking up a sql to just delete the posts with the data explorer, but I could not find anything relating to this.

When I look in logs when I attempt to delete I get the following error, it seems to be a issue with the ratings plugin. Any help would be amazing.

plugins/discourse-ratings/plugin.rb:147:in `block (2 levels) in activate!'
lib/plugin/instance.rb:297:in `public_send'
lib/plugin/instance.rb:297:in `block (2 levels) in add_to_class'
plugins/discourse-ratings/plugin.rb:61:in `block in activate!'
lib/plugin/instance.rb:491:in `block in on'
lib/discourse_event.rb:12:in `block in trigger'
/usr/local/lib/ruby/3.1.0/set.rb:511:in `each_key'
/usr/local/lib/ruby/3.1.0/set.rb:511:in `each'
lib/discourse_event.rb:12:in `trigger'
lib/post_destroyer.rb:84:in `destroy'
app/models/user.rb:1233:in `block in delete_posts_in_batches'
activerecord (7.0.4.1) lib/active_record/relation/delegation.rb:88:in `each'
activerecord (7.0.4.1) lib/active_record/relation/delegation.rb:88:in `each'
app/models/user.rb:1233:in `delete_posts_in_batches'
app/controllers/admin/users_controller.rb:60:in `delete_posts_batch'
actionpack (7.0.4.1) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack (7.0.4.1) lib/abstract_controller/base.rb:215:in `process_action'
actionpack (7.0.4.1) lib/action_controller/metal/rendering.rb:53:in `process_action'
actionpack (7.0.4.1) lib/abstract_controller/callbacks.rb:234:in `block in process_action'
activesupport (7.0.4.1) lib/active_support/callbacks.rb:118:in `block in run_callbacks'
app/controllers/application_controller.rb:414:in `block in with_resolved_locale'
i18n (1.12.0) lib/i18n.rb:322:in `with_locale'
app/controllers/application_controller.rb:414:in `with_resolved_locale'
activesupport (7.0.4.1) lib/active_support/callbacks.rb:127:in `block in run_callbacks'
activesupport (7.0.4.1) lib/active_support/callbacks.rb:138:in `run_callbacks'
actionpack (7.0.4.1) lib/abstract_controller/callbacks.rb:233:in `process_action'
actionpack (7.0.4.1) lib/action_controller/metal/rescue.rb:22:in `process_action'
actionpack (7.0.4.1) lib/action_controller/metal/instrumentation.rb:67:in `block in process_action'
activesupport (7.0.4.1) lib/active_support/notifications.rb:206:in `block in instrument'
activesupport (7.0.4.1) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport (7.0.4.1) lib/active_support/notifications.rb:206:in `instrument'
actionpack (7.0.4.1) lib/action_controller/metal/instrumentation.rb:66:in `process_action'
actionpack (7.0.4.1) lib/action_controller/metal/params_wrapper.rb:259:in `process_action'
activerecord (7.0.4.1) lib/active_record/railties/controller_runtime.rb:27:in `process_action'
actionpack (7.0.4.1) lib/abstract_controller/base.rb:151:in `process'
actionview (7.0.4.1) lib/action_view/rendering.rb:39:in `process'
rack-mini-profiler (3.0.0) lib/mini_profiler/profiling_methods.rb:111:in `block in profile_method'
actionpack (7.0.4.1) lib/action_controller/metal.rb:188:in `dispatch'
actionpack (7.0.4.1) lib/action_controller/metal.rb:251:in `dispatch'
actionpack (7.0.4.1) lib/action_dispatch/routing/route_set.rb:49:in `dispatch'
actionpack (7.0.4.1) lib/action_dispatch/routing/route_set.rb:32:in `serve'
actionpack (7.0.4.1) lib/action_dispatch/routing/mapper.rb:18:in `block in <class:Constraints>'
actionpack (7.0.4.1) lib/action_dispatch/routing/mapper.rb:48:in `serve'
actionpack (7.0.4.1) lib/action_dispatch/journey/router.rb:50:in `block in serve'
actionpack (7.0.4.1) lib/action_dispatch/journey/router.rb:32:in `each'
actionpack (7.0.4.1) lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack (7.0.4.1) lib/action_dispatch/routing/route_set.rb:852:in `call'
lib/middleware/omniauth_bypass_middleware.rb:74:in `call'
rack (2.2.6.2) lib/rack/tempfile_reaper.rb:15:in `call'
rack (2.2.6.2) lib/rack/conditional_get.rb:40:in `call'
rack (2.2.6.2) lib/rack/head.rb:12:in `call'
actionpack (7.0.4.1) lib/action_dispatch/http/permissions_policy.rb:38:in `call'
lib/content_security_policy/middleware.rb:12:in `call'
lib/middleware/anonymous_cache.rb:369:in `call'
rack (2.2.6.2) lib/rack/session/abstract/id.rb:266:in `context'
rack (2.2.6.2) lib/rack/session/abstract/id.rb:260:in `call'
actionpack (7.0.4.1) lib/action_dispatch/middleware/cookies.rb:704:in `call'
actionpack (7.0.4.1) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport (7.0.4.1) lib/active_support/callbacks.rb:99:in `run_callbacks'
actionpack (7.0.4.1) lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack (7.0.4.1) lib/action_dispatch/middleware/debug_exceptions.rb:28:in `call'
actionpack (7.0.4.1) lib/action_dispatch/middleware/show_exceptions.rb:26:in `call'
logster (2.11.4) lib/logster/middleware/reporter.rb:43:in `call'
railties (7.0.4.1) lib/rails/rack/logger.rb:40:in `call_app'
railties (7.0.4.1) lib/rails/rack/logger.rb:27:in `call'
config/initializers/100-quiet_logger.rb:20:in `call'
config/initializers/100-silence_logger.rb:29:in `call'
actionpack (7.0.4.1) lib/action_dispatch/middleware/remote_ip.rb:93:in `call'
actionpack (7.0.4.1) lib/action_dispatch/middleware/request_id.rb:26:in `call'
lib/middleware/enforce_hostname.rb:24:in `call'
rack (2.2.6.2) lib/rack/method_override.rb:24:in `call'
actionpack (7.0.4.1) lib/action_dispatch/middleware/executor.rb:14:in `call'
rack (2.2.6.2) lib/rack/sendfile.rb:110:in `call'
actionpack (7.0.4.1) lib/action_dispatch/middleware/host_authorization.rb:131:in `call'
rack-mini-profiler (3.0.0) lib/mini_profiler/profiler.rb:393:in `call'
message_bus (4.3.2) lib/message_bus/rack/middleware.rb:60:in `call'
lib/middleware/request_tracker.rb:228:in `call'
railties (7.0.4.1) lib/rails/engine.rb:530:in `call'
railties (7.0.4.1) lib/rails/railtie.rb:226:in `public_send'
railties (7.0.4.1) lib/rails/railtie.rb:226:in `method_missing'
rack (2.2.6.2) lib/rack/urlmap.rb:74:in `block in call'
rack (2.2.6.2) lib/rack/urlmap.rb:58:in `each'
rack (2.2.6.2) lib/rack/urlmap.rb:58:in `call'
unicorn (6.1.0) lib/unicorn/http_server.rb:634:in `process_client'
unicorn (6.1.0) lib/unicorn/http_server.rb:739:in `worker_loop'
unicorn (6.1.0) lib/unicorn/http_server.rb:547:in `spawn_missing_workers'
unicorn (6.1.0) lib/unicorn/http_server.rb:143:in `start'
unicorn (6.1.0) bin/unicorn:128:in `<top (required)>'
vendor/bundle/ruby/3.1.0/bin/unicorn:25:in `load'
vendor/bundle/ruby/3.1.0/bin/unicorn:25:in `<main>'

Remove the plugin from the app.yml, rebuild and try again.

Is the plugin just broken? We still use the plugin, your saying I have to remove the plugin, rebuild, remove the posts, add it back, and rebuild again?

Having just failed to delete a spam user I can verify that the plugin is still broken.

That’s not much of a solution. :frowning: I submitted an issue on the GitHub repository.