Bonjour à tous,
Nous exploitons une instance Discourse auto-hébergée à l’adresse https://discourse.bokeh.org depuis plusieurs années. En général, elle a été extrêmement stable et ne nécessitait presque aucun effort de maintenance ; en particulier, les mises à jour se déroulaient presque toujours sans aucun incident et s’achevaient parfaitement sans problème.
Cependant, aujourd’hui, après une mise à jour vers la version 2.7beta7 (qui semblait s’être déroulée sans problème), notre site s’est complètement effondré. Il a tenu un peu avec des pages mal rendues et des erreurs dans la console JavaScript, mais après avoir tenté un retour en arrière, l’interface utilisateur est devenue non fonctionnelle. En me connectant au droplet, j’ai également essayé, en vain :
Reconstruction
./launcher rebuild app
Cela a échoué de plusieurs manières sur plusieurs tentatives.
Discourse Doctor
./discourse-doctor
Restauration
./launcher enter app
discourse restore <fichier de sauvegarde>
Cela a échoué.
Effacement
J’ai également essayé de faire un « effacement » puis une restauration :
./launcher stop app
./launcher destroy app
rm -r /var/discourse/shared/standalone/
Après cela, j’ai au moins réussi à exécuter une reconstruction avec succès, ce qui a conduit à un état d’« installation fraîche », par exemple « Félicitations, vous avez installé Discourse ! ».
J’ai donc essayé à nouveau d’exécuter discourse restore, mais cela a encore échoué :
EXCEPTION : 1 publication n'a pas été réattribuée à la nouvelle URL de téléchargement S3. La migration S3 a échoué pour la base de données 'default'.
/var/www/discourse/lib/file_store/to_s3_migration.rb:131:in `raise_or_log'
/var/www/discourse/lib/file_store/to_s3_migration.rb:86:in `migration_successful?'
/var/www/discourse/lib/file_store/to_s3_migration.rb:357:in `migrate_to_s3'
/var/www/discourse/lib/file_store/to_s3_migration.rb:65:in `migrate'
/var/www/discourse/lib/file_store/s3_store.rb:240:in `copy_from'
/var/www/discourse/lib/backup_restore/uploads_restorer.rb:62:in `restore_uploads'
/var/www/discourse/lib/backup_restore/uploads_restorer.rb:44:in `restore'
/var/www/discourse/lib/backup_restore/restorer.rb:62:in `run'
script/discourse:145:in `restore'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.1.0/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.1.0/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.1.0/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.1.0/lib/thor/base.rb:485:in `start'
script/discourse:286:in `'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/cli/exec.rb:63:in `load'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/cli/exec.rb:63:in `kernel_load'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/cli/exec.rb:28:in `run'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/cli.rb:494:in `exec'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/cli.rb:30:in `dispatch'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/cli.rb:24:in `start'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/exe/bundle:49:in `block in '
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/lib/bundler/friendly_errors.rb:130:in `with_friendly_errors'
/usr/local/lib/ruby/gems/2.7.0/gems/bundler-2.2.7/exe/bundle:37:in `'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `'
Tentative de retour en arrière...
Retour en arrière en cours...
Nettoyage des éléments...
Suppression des fonctions du schéma discourse_functions...
Suppression du répertoire temporaire '/var/www/discourse/tmp/restores/default/2021-04-23-235404'...
Marquage de la restauration comme terminée...
Notification au système de la fin de la restauration...
Terminé !
[ÉCHEC]
Ce qui est étrange, c’est que pendant la restauration, le site semblait revenir à la normale, avec l’apparition d’anciens contenus. Puis l’échec s’est produit et maintenant rien ne s’affiche, les comptes ont disparu, etc.
Je serais vraiment reconnaissant de tout conseil ou suggestion. Nous disposons de sauvegardes quotidiennes remontant à une semaine (et plus loin dans Glacier si nécessaire). Nous avons supprimé une catégorie inutilisée il y a quelques jours ; cela pourrait-il être la cause du problème ? Je vais essayer une sauvegarde plus ancienne pour voir, mais toute indication concernant un processus de restauration infaillible serait la bienvenue.