Après la mise à jour vers 2.4.0beta10, certains sujets d'une catégorie spécifique ne sont plus visibles

J’ai effectué une mise à jour vers la version 2.4.0beta10 (je crois que je venais de la beta8).

Certains sujets d’une de mes catégories ne sont plus visibles. Cependant, ils apparaissent toujours dans le lien principal des sujets sur la page d’accueil. Par exemple :

Si je clique sur le sujet Bela Lugosi drum beat (Bauhaus), voici ce que je vois :

Pourtant, étrangement, il apparaît parfaitement dans la recherche :

J’ai tenté la mise à jour via l’interface web, mais cela a échoué. Je me suis donc connecté et l’ai effectuée via le terminal.

Étrangement, je ne parviens pas non plus à revenir à une sauvegarde (ce que j’avais essayé de faire au cas où cela résoudrait le problème). J’obtiens cette erreur, qui peut ou non être liée :

[2020-02-09 16:45:26] ERROR:  could not create unique index "index_incoming_referers_on_path_and_incoming_domain_id"
[2020-02-09 16:45:26] DETAIL:  Key (path, incoming_domain_id)=(/@samaaron, 11) is duplicated.
[2020-02-09 16:45:26] EXCEPTION: psql failed: DETAIL:  Key (path, incoming_domain_id)=(/@samaaron, 11) is duplicated.

[2020-02-09 16:45:26] /var/www/discourse/lib/backup_restore/database_restorer.rb:95:in `restore_dump'
/var/www/discourse/lib/backup_restore/database_restorer.rb:26:in `restore'
/var/www/discourse/lib/backup_restore/restorer.rb:49:in `run'
/var/www/discourse/lib/backup_restore.rb:181:in `block in start!'
/var/www/discourse/lib/backup_restore.rb:178:in `fork'
/var/www/discourse/lib/backup_restore.rb:178:in `start!'
/var/www/discourse/lib/backup_restore.rb:29:in `restore!'
/var/www/discourse/app/controllers/admin/backups_controller.rb:119:in `restore'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/abstract_controller/base.rb:196:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_controller/metal/rendering.rb:30:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/abstract_controller/callbacks.rb:42:in `block in process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.1/lib/active_support/callbacks.rb:135:in `run_callbacks'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/abstract_controller/callbacks.rb:41:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_controller/metal/rescue.rb:22:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_controller/metal/instrumentation.rb:33:in `block in process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.1/lib/active_support/notifications.rb:180:in `block in instrument'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.1/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.1/lib/active_support/notifications.rb:180:in `instrument'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_controller/metal/instrumentation.rb:32:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_controller/metal/params_wrapper.rb:245:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.1/lib/active_record/railties/controller_runtime.rb:27:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/abstract_controller/base.rb:136:in `process'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionview-6.0.1/lib/action_view/rendering.rb:39:in `process'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-1.1.6/lib/mini_profiler/profiling_methods.rb:78:in `block in profile_method'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_controller/metal.rb:191:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_controller/metal.rb:252:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_dispatch/routing/route_set.rb:51:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_dispatch/routing/route_set.rb:33:in `serve'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_dispatch/routing/mapper.rb:18:in `block in <class:Constraints>'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_dispatch/routing/mapper.rb:48:in `serve'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_dispatch/journey/router.rb:49:in `block in serve'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_dispatch/journey/router.rb:32:in `each'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_dispatch/journey/router.rb:32:in `serve'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_dispatch/routing/route_set.rb:837:in `call'
/var/www/discourse/lib/middleware/omniauth_bypass_middleware.rb:68:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.8/lib/rack/tempfile_reaper.rb:15:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.8/lib/rack/conditional_get.rb:38:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.8/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'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.8/lib/rack/session/abstract/id.rb:259:in `context'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.8/lib/rack/session/abstract/id.rb:253:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_dispatch/middleware/cookies.rb:648:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.1/lib/active_support/callbacks.rb:101:in `run_callbacks'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_dispatch/middleware/callbacks.rb:26:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_dispatch/middleware/actionable_exceptions.rb:17:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_dispatch/middleware/debug_exceptions.rb:32:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/logster-2.6.1/lib/logster/middleware/reporter.rb:43:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.1/lib/rails/rack/logger.rb:38:in `call_app'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.1/lib/rails/rack/logger.rb:28:in `call'
/var/www/discourse/config/initializers/100-quiet_logger.rb:18:in `call'
/var/www/discourse/config/initializers/100-silence_logger.rb:31:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_dispatch/middleware/request_id.rb:27:in `call'
/var/www/discourse/lib/middleware/enforce_hostname.rb:17:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.8/lib/rack/method_override.rb:22:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_dispatch/middleware/executor.rb:14:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.8/lib/rack/sendfile.rb:111:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.1/lib/action_dispatch/middleware/host_authorization.rb:77:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-mini-profiler-1.1.6/lib/mini_profiler/profiler.rb:184:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/message_bus-2.2.3/lib/message_bus/rack/middleware.rb:57:in `call'
/var/www/discourse/lib/middleware/request_tracker.rb:181:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.1/lib/rails/engine.rb:526:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.1/lib/rails/railtie.rb:190:in `public_send'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/railties-6.0.1/lib/rails/railtie.rb:190:in `method_missing'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.8/lib/rack/urlmap.rb:68:in `block in call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.8/lib/rack/urlmap.rb:53:in `each'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/rack-2.0.8/lib/rack/urlmap.rb:53:in `call'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.3/lib/unicorn/http_server.rb:605:in `process_client'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.3/lib/unicorn/http_server.rb:700:in `worker_loop'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.3/lib/unicorn/http_server.rb:548:in `spawn_missing_workers'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.3/lib/unicorn/http_server.rb:144:in `start'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/unicorn-5.5.3/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>'

Toute aide serait appréciée :slight_smile:

Cela ressemble à une corruption d’index à mes yeux. Je suppose que vous avez en quelque sorte des données en double dans cette table.

Peut-être commencer par supprimer la ligne en double, je ne suis pas sûr de savoir comment cela est arrivé.

Nous avons rencontré un index corrompu similaire ici :

Argh, c’est plutôt effrayant.

Je suis très inquiet de rendre les choses bien pires si je commence à fouiller. Je ne connais pas du tout le schéma et je ne sais même pas comment accéder à la console de la base de données.

Je suis aussi doublement inquiet car je ne peux même pas revenir à une sauvegarde si je gâche tout :frowning:

Cela n’a rien à voir avec la base de données ; c’est simplement votre composant de thème de presse-papiers qui provoque une violation de CSP. Essayez de désactiver ce composant de thème.

@Falco - incroyable, merci. Je n’aurais absolument jamais trouvé ça tout seul. C’est étrange que cela n’ait commencé que récemment, mais je suppose que c’est la nature d’une plateforme en constante évolution…

Cela résout le problème immédiat d’un sujet qui ne s’affiche pas.

Une fois cela fait, ce que @sam a dit reste valable. Le journal que vous avez partagé plus tôt révèle un problème sous-jacent avec votre base de données.

Il serait prudent de déboguer cela, ou d’embaucher quelqu’un pour le faire, plutôt tard que trop tard, car avoir des sauvegardes défectueuses est une très mauvaise chose qui risque de se produire.

Oui, bonne remarque — mais lol à l’idée d’embaucher quelqu’un. Sonic Pi est un projet open source et j’ai du mal à trouver assez d’argent pour me soutenir, sans parler de payer quelqu’un pour faire quelque chose de précis comme ça.

Je vais voir si je peux régler ça moi-même. Cependant, si je fais des bêtises — je suppose qu’il n’y a pas de retour en arrière si les sauvegardes sont corrompues :frowning:

De plus, comment puis-je tester si les problèmes sont résolus sans réellement restaurer une sauvegarde ? Existe-t-il un moyen de faire une restauration fictive ?

Vous pouvez télécharger la sauvegarde localement et essayer de la restaurer en utilisant pg_dump. Comme il semble s’agir d’une entrée dupliquée, vous pouvez peut-être tenter de détecter l’erreur en exécutant une requête SELECT (éventuellement en utilisant data-explorer) sur les colonnes dupliquées.

J’adore Sonic Pi et sa mission, c’est un projet vraiment cool. Nous pourrions vous héberger sur notre plan gratuit ; le seul point qui pose problème ici, c’est que vous souhaitez conserver votre propre nom de domaine. Nous pouvons lever cette condition.

Si vous migrez vers notre hébergement, nous nous chargerons des sauvegardes dans le cadre de la migration vers nos serveurs.

Crikey - ce serait extrêmement aimable de votre part.

Pour être honnête, je n’avais même pas réalisé que vous proposiez un plan gratuit. Était-il disponible dès le début ? À présent, le domaine est fortement lié à l’identité, ce serait donc formidable si vous pouviez me permettre de continuer à l’utiliser après la migration.

Que dois-je faire pour commencer ? Faire une sauvegarde complète et vous l’envoyer ? Ensuite, pointer mon DNS vers votre serveur ? Gérez-vous également l’envoi d’e-mails ?

Salut Sam,

Nos offres gratuites existent depuis un moment :

Nous ne manquerons pas de te recontacter bientôt :slight_smile: