J’ai eu un problème avec un utilisateur qui a demandé la suppression de son compte. Avant la suppression du compte, lorsque j’essayais d’utiliser Delete all posts dans la partie administration des utilisateurs, j’obtenais une Error 500 après avoir confirmé l’action.
Pour l’instant, j’ai supprimé manuellement les publications que je pouvais trouver, car l’utilisateur avait un nombre assez faible de publications, donc pas de problème de ce côté-là. Mais je vois toujours que Posts created indique 10+ pour ce compte. Et bien sûr, je ne peux pas supprimer le compte. Je ne vois plus non plus les publications de cet utilisateur.
Dans /logs, je vois deux entrées de journal pour l’événement (d’après ce que je peux en juger)
Message
ActiveRecord::InvalidForeignKey (PG::ForeignKeyViolation: ERROR: update or delete on table "reviewables" violates foreign key constraint "fk_rails_2fe5fa5cd0" on table "reviewable_notes"
DETAIL: Key (id)=(7064) is still referenced from table "reviewable_notes".
)
Message
Failed to handle exception in exception app middleware : ActiveRecord::InvalidForeignKey : PG::ForeignKeyViolation: ERROR: update or delete on table "reviewables" violates foreign key constraint "fk_rails_2fe5fa5cd0" on table "reviewable_notes"
DETAIL: Key (id)=(7064) is still referenced from table "reviewable_notes".
Backtrace
rack-mini-profiler-4.0.1/lib/patches/db/pg/alias_method.rb:109:in `exec'
rack-mini-profiler-4.0.1/lib/patches/db/pg/alias_method.rb:109:in `async_exec'
activerecord-8.0.4/lib/active_record/connection_adapters/postgresql/database_statements.rb:167:in `perform_query'
activerecord-8.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:556:in `block (2 levels) in raw_execute'
activerecord-8.0.4/lib/active_record/connection_adapters/abstract_adapter.rb:1017:in `block in with_raw_connection'
activesupport-8.0.4/lib/active_support/concurrency/null_lock.rb:9:in `synchronize'
activerecord-8.0.4/lib/active_record/connection_adapters/abstract_adapter.rb:986:in `with_raw_connection'
activerecord-8.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:555:in `block in raw_execute'
activesupport-8.0.4/lib/active_support/notifications/instrumenter.rb:58:in `instrument'
activerecord-8.0.4/lib/active_record/connection_adapters/abstract_adapter.rb:1137:in `log'
activerecord-8.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:554:in `raw_execute'
activerecord-8.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:591:in `internal_execute'
activerecord-8.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:166:in `exec_delete'
activerecord-8.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:214:in `delete'
activerecord-8.0.4/lib/active_record/connection_adapters/abstract/query_cache.rb:27:in `delete'
activerecord-8.0.4/lib/active_record/relation.rb:1045:in `block in delete_all'
activerecord-8.0.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:422:in `with_connection'
activerecord-8.0.4/lib/active_record/connection_handling.rb:312:in `with_connection'
activerecord-8.0.4/lib/active_record/relation.rb:1032:in `delete_all'
/var/www/discourse/app/models/user.rb:1322:in `delete_posts_in_batches'
/var/www/discourse/app/controllers/admin/users_controller.rb:76:in `delete_posts_batch'
actionpack-8.0.4/lib/action_controller/metal/basic_implicit_render.rb:8:in `send_action'
actionpack-8.0.4/lib/abstract_controller/base.rb:215:in `process_action'
actionpack-8.0.4/lib/action_controller/metal/rendering.rb:193:in `process_action'
actionpack-8.0.4/lib/abstract_controller/callbacks.rb:261:in `block in process_action'
activesupport-8.0.4/lib/active_support/callbacks.rb:120:in `block in run_callbacks'
/var/www/discourse/app/controllers/application_controller.rb:442:in `block in with_resolved_locale'
i18n-1.14.7/lib/i18n.rb:353:in `with_locale'
/var/www/discourse/app/controllers/application_controller.rb:442:in `with_resolved_locale'
activesupport-8.0.4/lib/active_support/callbacks.rb:129:in `block in run_callbacks'
/var/www/discourse/app/controllers/application_controller.rb:1088:in `ensure_dont_cache_page'
activesupport-8.0.4/lib/active_support/callbacks.rb:129:in `block in run_callbacks'
activesupport-8.0.4/lib/active_support/callbacks.rb:140:in `run_callbacks'
actionpack-8.0.4/lib/abstract_controller/callbacks.rb:260:in `process_action'
actionpack-8.0.4/lib/action_controller/metal/rescue.rb:27:in `process_action'
actionpack-8.0.4/lib/action_controller/metal/instrumentation.rb:76:in `block in process_action'
activesupport-8.0.4/lib/active_support/notifications.rb:210:in `block in instrument'
activesupport-8.0.4/lib/active_support/notifications/instrumenter.rb:58:in `instrument'
activesupport-8.0.4/lib/active_support/notifications.rb:210:in `instrument'
actionpack-8.0.4/lib/action_controller/metal/instrumentation.rb:75:in `process_action'
actionpack-8.0.4/lib/action_controller/metal/params_wrapper.rb:259:in `process_action'
activerecord-8.0.4/lib/active_record/railties/controller_runtime.rb:39:in `process_action'
actionpack-8.0.4/lib/abstract_controller/base.rb:152:in `process'
actionview-8.0.4/lib/action_view/rendering.rb:40:in `process'
rack-mini-profiler-4.0.1/lib/mini_profiler/profiling_methods.rb:90:in `block in profile_method'
actionpack-8.0.4/lib/action_controller/metal.rb:252:in `dispatch'
actionpack-8.0.4/lib/action_controller/metal.rb:335:in `dispatch'
actionpack-8.0.4/lib/action_dispatch/routing/route_set.rb:67:in `dispatch'
actionpack-8.0.4/lib/action_dispatch/routing/route_set.rb:50:in `serve'
actionpack-8.0.4/lib/action_dispatch/routing/mapper.rb:32:in `block in <class:Constraints>'
actionpack-8.0.4/lib/action_dispatch/routing/mapper.rb:62:in `serve'
actionpack-8.0.4/lib/action_dispatch/journey/router.rb:53:in `block in serve'
actionpack-8.0.4/lib/action_dispatch/journey/router.rb:133:in `block in find_routes'
actionpack-8.0.4/lib/action_dispatch/journey/router.rb:126:in `each'
actionpack-8.0.4/lib/action_dispatch/journey/router.rb:126:in `find_routes'
actionpack-8.0.4/lib/action_dispatch/journey/router.rb:34:in `serve'
actionpack-8.0.4/lib/action_dispatch/routing/route_set.rb:908:in `call'
/var/www/discourse/lib/middleware/omniauth_bypass_middleware.rb:35:in `call'
/var/www/discourse/lib/middleware/crawler_hooks.rb:11:in `call'
rack-2.2.21/lib/rack/tempfile_reaper.rb:15:in `call'
rack-2.2.21/lib/rack/conditional_get.rb:40:in `call'
rack-2.2.21/lib/rack/head.rb:12:in `call'
actionpack-8.0.4/lib/action_dispatch/middleware/permissions_policy.rb:38:in `call'
/var/www/discourse/lib/content_security_policy/middleware.rb:12:in `call'
/var/www/discourse/lib/middleware/anonymous_cache.rb:420:in `call'
/var/www/discourse/lib/middleware/csp_script_nonce_injector.rb:12:in `call'
/var/www/discourse/config/initializers/008-rack-cors.rb:14:in `call'
rack-2.2.21/lib/rack/session/abstract/id.rb:266:in `context'
rack-2.2.21/lib/rack/session/abstract/id.rb:260:in `call'
actionpack-8.0.4/lib/action_dispatch/middleware/cookies.rb:706:in `call'
actionpack-8.0.4/lib/action_dispatch/middleware/callbacks.rb:31:in `block in call'
activesupport-8.0.4/lib/active_support/callbacks.rb:100:in `run_callbacks'
actionpack-8.0.4/lib/action_dispatch/middleware/callbacks.rb:30:in `call'
actionpack-8.0.4/lib/action_dispatch/middleware/debug_exceptions.rb:31:in `call'
actionpack-8.0.4/lib/action_dispatch/middleware/show_exceptions.rb:32:in `call'
logster-2.20.1/lib/logster/middleware/reporter.rb:40:in `call'
/var/www/discourse/lib/middleware/default_headers.rb:13:in `call'
railties-8.0.4/lib/rails/rack/logger.rb:41:in `call_app'
railties-8.0.4/lib/rails/rack/logger.rb:29:in `call'
/var/www/discourse/config/initializers/100-quiet_logger.rb:20:in `call'
/var/www/discourse/config/initializers/100-silence_logger.rb:29:in `call'
actionpack-8.0.4/lib/action_dispatch/middleware/request_id.rb:34:in `call'
/var/www/discourse/lib/middleware/enforce_hostname.rb:23:in `call'
rack-2.2.21/lib/rack/method_override.rb:24:in `call'
actionpack-8.0.4/lib/action_dispatch/middleware/executor.rb:16:in `call'
rack-2.2.21/lib/rack/sendfile.rb:127:in `call'
rack-mini-profiler-4.0.1/lib/mini_profiler.rb:191:in `call'
message_bus-4.4.1/lib/message_bus/rack/middleware.rb:60:in `call'
/var/www/discourse/lib/middleware/request_tracker.rb:321:in `call'
actionpack-8.0.4/lib/action_dispatch/middleware/remote_ip.rb:96:in `call'
/var/www/discourse/lib/middleware/overload_protections.rb:22:in `call'
/var/www/discourse/lib/middleware/processing_request.rb:14:in `call'
railties-8.0.4/lib/rails/engine.rb:535:in `call'
railties-8.0.4/lib/rails/railtie.rb:226:in `public_send'
railties-8.0.4/lib/rails/railtie.rb:226:in `method_missing'
rack-2.2.21/lib/rack/urlmap.rb:74:in `block in call'
rack-2.2.21/lib/rack/urlmap.rb:58:in `each'
rack-2.2.21/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)>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `load'
/var/www/discourse/vendor/bundle/ruby/3.3.0/bin/unicorn:25:in `<main>'
Que sont ces tables reviewable_notes et reviewable_notes ? Est-ce quelque chose lié à la file d’attente Review des modérateurs ?
Des commentaires ou quelqu’un a-t-il déjà rencontré quelque chose de similaire ?