Balise principale partageant le même nom et la même URL que le synonyme

Cela se produit pour un tag spécifique, qui possède un synonyme et n’a jamais été utilisé.

Le nom et l’URL du tag principal et du synonyme sont apparemment identiques.

Capture d'écran

  1. Il n’apparaît pas sur la page tags ni sur la page tag_groups, mais il est visible dans les résultats de recherche et peut être accédé via un lien direct.

  2. Il est possible de renommer le tag principal, mais le synonyme est également modifié.

    Capture d'écran

  3. Lors de la tentative de suppression du tag principal :

    Désolé, une erreur s’est produite.

  4. Suppression du synonyme :

    Erreur 429

  5. Suppression du synonyme :

    Erreur 500

Console

Message (3 copies signalées)
ActiveRecord::RecordInvalid (Validation failed: Target tag is not allowed while synonyms exist) 
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.3.1/lib/active_record/validations.rb:80:in `raise_validation_error'
Backtrace
activerecord-6.0.3.1/lib/active_record/validations.rb:80:in `raise_validation_error'
activerecord-6.0.3.1/lib/active_record/validations.rb:53:in `save!'
activerecord-6.0.3.1/lib/active_record/transactions.rb:318:in `block in save!'
activerecord-6.0.3.1/lib/active_record/transactions.rb:375:in `block in with_transaction_returning_status'
activerecord-6.0.3.1/lib/active_record/connection_adapters/abstract/database_statements.rb:278:in `transaction'
activerecord-6.0.3.1/lib/active_record/transactions.rb:212:in `transaction'
activerecord-6.0.3.1/lib/active_record/transactions.rb:366:in `with_transaction_returning_status'
activerecord-6.0.3.1/lib/active_record/transactions.rb:318:in `save!'
activerecord-6.0.3.1/lib/active_record/suppressor.rb:48:in `save!'
activerecord-6.0.3.1/lib/active_record/persistence.rb:635:in `block in update!'
activerecord-6.0.3.1/lib/active_record/transactions.rb:375:in `block in with_transaction_returning_status'
activerecord-6.0.3.1/lib/active_record/connection_adapters/abstract/database_statements.rb:280:in `block in transaction'
activerecord-6.0.3.1/lib/active_record/connection_adapters/abstract/transaction.rb:280:in `block in within_new_transaction'
activesupport-6.0.3.1/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
activesupport-6.0.3.1/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
activesupport-6.0.3.1/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
activesupport-6.0.3.1/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
activesupport-6.0.3.1/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
activerecord-6.0.3.1/lib/active_record/connection_adapters/abstract/transaction.rb:278:in `within_new_transaction'
activerecord-6.0.3.1/lib/active_record/connection_adapters/abstract/database_statements.rb:280:in `transaction'
activerecord-6.0.3.1/lib/active_record/transactions.rb:212:in `transaction'
activerecord-6.0.3.1/lib/active_record/transactions.rb:366:in `with_transaction_returning_status'
activerecord-6.0.3.1/lib/active_record/persistence.rb:633:in `update!'
/var/www/discourse/app/controllers/tags_controller.rb:317:in `destroy_synonym'
actionpack-6.0.3.1/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
actionpack-6.0.3.1/lib/abstract_controller/base.rb:195:in `process_action'
actionpack-6.0.3.1/lib/action_controller/metal/rendering.rb:30:in `process_action'
actionpack-6.0.3.1/lib/abstract_controller/callbacks.rb:42:in `block in process_action'
activesupport-6.0.3.1/lib/active_support/callbacks.rb:135:in `run_callbacks'
actionpack-6.0.3.1/lib/abstract_controller/callbacks.rb:41:in `process_action'
actionpack-6.0.3.1/lib/action_controller/metal/rescue.rb:22:in `process_action'
actionpack-6.0.3.1/lib/action_controller/metal/instrumentation.rb:33:in `block in process_action'
activesupport-6.0.3.1/lib/active_support/notifications.rb:180:in `block in instrument'
activesupport-6.0.3.1/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
activesupport-6.0.3.1/lib/active_support/notifications.rb:180:in `instrument'
actionpack-6.0.3.1/lib/action_controller/metal/instrumentation.rb:32:in `process_action'
actionpack-6.0.3.1/lib/action_controller/metal/params_wrapper.rb:245:in `process_action'
activerecord-6.0.3.1/lib/active_record/railties/controller_runtime.rb:27:in `process_action'
actionpack-6.0.3.1/lib/abstract_controller/base.rb:136:in `process'
actionview-6.0.3.1/lib/action_view/rendering.rb:39:in `process'
rack-mini-profiler-2.0.2/lib/mini_profiler/profiling_methods.rb:104:in `block in profile_method'
actionpack-6.0.3.1/lib/action_controller/metal.rb:190:in `dispatch'
actionpack-6.0.3.1/lib/action_controller/metal.rb:254:in `dispatch'
actionpack-6.0.3.1/lib/action_dispatch/routing/route_set.rb:50:in `dispatch'
actionpack-6.0.3.1/lib/action_dispatch/routing/route_set.rb:33:in `serve'
actionpack-6.0.3.1/lib/action_dispatch/journey/router.rb:49:in `block in serve'
actionpack-6.0.3.1/lib/action_dispatch/journey/router.rb:32:in `each'
actionpack-6.0.3.1/lib/action_dispatch/journey/router.rb:32:in `serve'
actionpack-6.0.3.1/lib/action_dispatch/routing/route_set.rb:834:in `call'
/var/www/discourse/lib/middleware/omniauth_bypass_middleware.rb:68:in `call'
rack-2.2.2/lib/rack/tempfile_reaper.rb:15:in `call'
rack-2.2.2/lib/rack/conditional_get.rb:40:in `call'
rack-2.2.2/lib/rack/head.rb:12:in `call'
/var/www/discourse/lib/content_security_policy/middleware.rb:12:in `call'
/var/www/discourse/lib/middleware/anonymous_cache.rb:318:in `call'
rack-2.2.2/lib/rack/session/abstract/id.rb:266:in `context'
rack-2.2.2/lib/rack/session/abstract/id.rb:260:in `call'
actionpack-6.0.3.1/lib/action_dispatch/middleware/cookies.rb:648:in `call'
actionpack-6.0.3.1/lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
activesupport-6.0.3.1/lib/active_support/callbacks.rb:101:in `run_callbacks'
actionpack-6.0.3.1/lib/action_dispatch/middleware/callbacks.rb:26:in `call'
actionpack-6.0.3.1/lib/action_dispatch/middleware/actionable_exceptions.rb:17:in `call'
actionpack-6.0.3.1/lib/action_dispatch/middleware/debug_exceptions.rb:32:in `call'
actionpack-6.0.3.1/lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
logster-2.9.0/lib/logster/middleware/reporter.rb:43:in `call'
railties-6.0.3.1/lib/rails/rack/logger.rb:37:in `call_app'
railties-6.0.3.1/lib/rails/rack/logger.rb:28:in `call'
/var/www/discourse/config/initializers/100-quiet_logger.rb:19:in `call'
/var/www/discourse/config/initializers/100-silence_logger.rb:31:in `call'
actionpack-6.0.3.1/lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
actionpack-6.0.3.1/lib/action_dispatch/middleware/request_id.rb:27:in `call'
/var/www/discourse/lib/middleware/enforce_hostname.rb:22:in `call'
rack-2.2.2/lib/rack/method_override.rb:24:in `call'
actionpack-6.0.3.1/lib/action_dispatch/middleware/executor.rb:14:in `call'
rack-2.2.2/lib/rack/sendfile.rb:110:in `call'
actionpack-6.0.3.1/lib/action_dispatch/middleware/host_authorization.rb:76:in `call'
rack-mini-profiler-2.0.2/lib/mini_profiler/profiler.rb:312:in `call'
message_bus-3.3.1/lib/message_bus/rack/middleware.rb:61:in `call'
/var/www/discourse/lib/middleware/request_tracker.rb:176:in `call'
railties-6.0.3.1/lib/rails/engine.rb:527:in `call'
railties-6.0.3.1/lib/rails/railtie.rb:190:in `public_send'
railties-6.0.3.1/lib/rails/railtie.rb:190:in `method_missing'
rack-2.2.2/lib/rack/urlmap.rb:74:in `block in call'
rack-2.2.2/lib/rack/urlmap.rb:58:in `each'
rack-2.2.2/lib/rack/urlmap.rb:58:in `call'
unicorn-5.5.5/lib/unicorn/http_server.rb:605:in `process_client'
unicorn-5.5.5/lib/unicorn/http_server.rb:701:in `worker_loop'
unicorn-5.5.5/lib/unicorn/http_server.rb:548:in `spawn_missing_workers'
unicorn-5.5.5/lib/unicorn/http_server.rb:144:in `start'
unicorn-5.5.5/bin/unicorn:128:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `load'
/var/www/discourse/vendor/bundle/ruby/2.6.0/bin/unicorn:23:in `<main>'

Version de Discourse 2.6.0.beta1 (69803599a9)