Problema di cancellazione utente, restituisce "Errore 500" su elimina tutti i post

Ho riscontrato un problema con un utente che ha richiesto la cancellazione del proprio account. Prima della cancellazione dell’account, tentando di utilizzare Elimina tutti i post nella sezione di amministrazione utente, ho ricevuto un Errore 500 dopo aver confermato l’azione.

Per ora ho eliminato manualmente i post che sono riuscito a trovare, dato che l’utente aveva una quantità abbastanza ridotta di post, quindi nessun problema in quel senso. Tuttavia, vedo ancora che Post creati mostra 10+ per questo account. E ovviamente non posso cancellare l’account. Né vedo più post di questo utente.

In /logs vedo due voci di log per l’evento (per quanto posso capire)

Messaggio

ActiveRecord::InvalidForeignKey (PG::ForeignKeyViolation: ERRORE:  l'aggiornamento o l'eliminazione sulla tabella "reviewables" viola il vincolo di chiave esterna "fk_rails_2fe5fa5cd0" sulla tabella "reviewable_notes"
DETTAGLIO:  La chiave (id)=(7064) è ancora referenziata dalla tabella "reviewable_notes".
)
Messaggio

Impossibile gestire l'eccezione nel middleware dell'app di eccezione : ActiveRecord::InvalidForeignKey : PG::ForeignKeyViolation: ERRORE:  l'aggiornamento o l'eliminazione sulla tabella "reviewables" viola il vincolo di chiave esterna "fk_rails_2fe5fa5cd0" sulla tabella "reviewable_notes"
DETTAGLIO:  La chiave (id)=(7064) è ancora referenziata dalla tabella "reviewable_notes".


Backtrace
r
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>'

Cosa sono queste tabelle reviewable_notes e reviewable_notes? Sono collegate alla coda di Revisione dei moderatori?

Qualche commento o qualcuno ha riscontrato qualcosa di simile?

Penso che questo possa essere un bug introdotto di recente.

Puoi verificare se l’utente ha contenuti segnalati nella coda di revisione e se ci sono note su di essi? In tal caso, prova a eliminarli prima di continuare.

1 Mi Piace

Grazie! La tua ipotesi era esatta. L’utente aveva alcuni post segnalati dai moderatori e uno di essi aveva una nota aggiunta. Dopo aver eliminato la nota, sono riuscito a eliminare tutti i post dell’utente e l’utente stesso.

A proposito, il bug è già stato corretto nel ramo predefinito? Forse è ora di aggiornare.

EDIT: nota sulla versione/build come riferimento per chiunque altro possa riscontrare un problema simile: build del container di metà gennaio v2026.1.0-latest sul ramo predefinito tests-passed.

1 Mi Piace

Non credo, creerò una segnalazione di bug interna.

Sono contento che la soluzione alternativa abbia funzionato!

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.