Échec de la mise à niveau de 2.9.0.beta14 à 3.1.0.beta

Je mets à niveau chaque mois, toujours d’abord sur quelques systèmes de développement, puis sur la production.

Au cours du cycle de ce mois, la mise à niveau a échoué sur le premier système de développement. docker_manager a été mis à niveau sans problème, mais la mise à niveau de Discourse a échoué avec :

Désolé, une erreur s'est produite lors de la mise à niveau de Discourse. Veuillez vérifier les journaux ci-dessous.

L’application Discourse est complètement hors service (elle affiche la page d’erreur 500 “Oups”).

Voici ce que contiennent les journaux à l’écran :

********************************************************
*** Veuillez patienter, les prochaines étapes peuvent prendre un certain temps ***
********************************************************
Cycle de Unicorn, pour libérer de la mémoire
Redémarrage du pid de unicorn : 50
Attente du rechargement de Unicorn.
Attente du rechargement de Unicorn..
Attente du rechargement de Unicorn...
Attente du rechargement de Unicorn....
Attente du rechargement de Unicorn.....
Attente du rechargement de Unicorn......
Attente du rechargement de Unicorn.......
Attente du rechargement de Unicorn........
Attente du rechargement de Unicorn.........
Attente du rechargement de Unicorn..........
Attente du rechargement de Unicorn...........
Arrêt de 7 travailleurs Unicorn, pour libérer de la mémoire
Arrêt de la file d'attente des tâches pour récupérer de la mémoire, le pid maître est 4069
$ cd /var/www/discourse && git fetch --tags --force && git reset --hard HEAD@{upstream}
From https://github.com/discourse/discourse
 t [mise à jour de tag]            latest-release -> latest-release
 * [nouveau tag]               v2.8.14        -> v2.8.14
 * [nouveau tag]               v3.0.0         -> v3.0.0
HEAD est maintenant à 666536cbd1 DEV : Préférer \A et \z aux regex ^ et $ (#19936)
$ bundle install --deployment --jobs 4 --without test development
[DÉPRECATION] L'indicateur `--deployment` est déprécié car il repose sur le fait d'être mémorisé entre les invocations de bundler, ce que bundler ne fera plus dans les futures versions. Utilisez plutôt `bundle config set --local deployment 'true'`, et arrêtez d'utiliser cet indicateur.
[DÉPRECATION] L'indicateur `--without` est déprécié car il repose sur le fait d'être mémorisé entre les invocations de bundler, ce que bundler ne fera plus dans les futures versions. Utilisez plutôt `bundle config set --local without 'test development'`, et arrêtez d'utiliser cet indicateur.
Bundler 2.3.13 est en cours d'exécution, mais votre lockfile a été généré avec 2.4.1. Installation de Bundler 2.4.1 et redémarrage en utilisant cette version.
Récupération des métadonnées de gem depuis https://rubygems.org/.
Récupération de bundler 2.4.1
Installation de bundler 2.4.1
[DÉPRECATION] L'indicateur `--deployment` est déprécié car il repose sur le fait d'être mémorisé entre les invocations de bundler, ce que bundler ne fera plus dans les futures versions. Utilisez plutôt `bundle config set --local deployment 'true'`, et arrêtez d'utiliser cet indicateur.
[DÉPRECATION] L'indicateur `--without` est déprécié car il repose sur le fait d'être mémorisé entre les invocations de bundler, ce que bundler ne fera plus dans les futures versions. Utilisez plutôt `bundle config set --local without 'test development'`, et arrêtez d'utiliser cet indicateur.
Récupération des métadonnées de gem depuis https://rubygems.org/.........
Récupération de https://github.com/rails/sprockets
web-push-3.0.0 nécessite la version ruby >= 3.0, ce qui est incompatible avec la
version actuelle, 2.7.6
Docker Manager : ÉCHEC DE LA MISE À NIVEAU
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:209:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:93:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:20:in `block in fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `load'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command/base.rb:87:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command.rb:48:in `invoke'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands.rb:18:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
bin/rails:18:in `<main>'
Lancement de 7 travailleurs Unicorn qui étaient initialement arrêtés

Je n’ai jamais eu d’erreur de mise à niveau auparavant, donc je ne sais pas quoi faire ensuite. Et si cela s’était produit en production, que ferais-je ?

2 « J'aime »

Je suggère de vérifier la version du système d’exploitation (distribution) que vous utilisez : il se pourrait que ce soit une ancienne version, qu’elle n’ait pas Ruby 3, et que ce soit ça le problème.

Edit : attendez, je ne suis pas sûr de ne pas être confus. Pour la production, tout se passe dans un conteneur Docker qui devrait avoir toutes les bonnes versions de tout. Avez-vous une autre configuration ?

2 « J'aime »

Pour information, les boîtes de développement sont sous Ubuntu 20.04 LTS. Je crois que la production est sous 22.04 LTS.

Cependant, je n’ai jamais installé Ruby sur le système d’exploitation. Je pense que tout cela se fait automatiquement dans le conteneur Docker.

Correction : la production est également sous 20.04 LTS.

1 « J'aime »

Oui, désolé, je pense que j’étais confus. Il n’est pas rare de devoir effectuer une mise à niveau en ligne de commande - avez-vous essayé cela ?

cd /var/discourse
git pull
./launcher rebuild app
6 « J'aime »

S’il s’agit d’installations de développement, elles ne seront pas représentatives d’une installation Docker en production. Votre environnement de développement a une ancienne version de Ruby (2.7), alors que Discourse est récemment passé à la version 3.1 dans l’image.

Merci ! La reconstruction de l’application semble avoir fonctionné. J’essaie cela sur un autre système de développement avant de patcher la production.

Pour être clair, par « développement », j’entends simplement qu’ils sont identiques à la production, mais sur des systèmes de développement internes.

1 « J'aime »

Une mise à niveau via bash a-t-elle résolu les problèmes ?

1 « J'aime »

Oui ! Cela a fonctionné sur les systèmes de développement et en production également. Merci !

3 « J'aime »

Cela m’arrive aussi en production.

De 2.9.0.beta14 (2b9fa41a6e) à 3.1.0.beta1

Fetching gem metadata from https://rubygems.org/.........
Fetching https://github.com/rails/sprockets
web-push-3.0.0 requires ruby version >= 3.0, which is incompatible with the
current version, 2.7.6
Docker Manager: FAILED TO UPGRADE
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:209:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:93:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:20:in `block in fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `load'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command/base.rb:87:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command.rb:48:in `invoke'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands.rb:18:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
bin/rails:18:in `<main>'
Spinning up 1 Unicorn worker(s) that were stopped initially

Résolu avec :point_up:

cd /var/discourse
git pull
./launcher rebuild app

Merci

Même problème ici, la mise à niveau a échoué et a mis le forum en erreur 500. Je suis honnêtement assez surpris que ce problème persiste depuis 3 jours.

En attendant, je lance une reconstruction en ligne de commande qui, je l’espère, fonctionnera. Sinon, j’ai d’abord pris un instantané de la VM car ma mère ne m’a pas élevé comme un imbécile.

D’après ce post, il semble qu’ils aient mis à niveau Ruby vers la version 3.0, ce qui casse complètement les mises à niveau web. Malheureusement, le logiciel permet toujours aux utilisateurs de l’essayer, et vous voyez alors à quelle vitesse votre hôte peut servir des erreurs HTTP 500.

Modification : La reconstruction en ligne de commande a effectivement fonctionné, ouf !

Erreurs pertinentes :

Fetching gem metadata from https://rubygems.org/.........
Fetching https://github.com/rails/sprockets
web-push-3.0.0 requires ruby version >= 3.0, which is incompatible with the
current version, 2.7.6
Docker Manager: FAILED TO UPGRADE
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:209:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:93:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:20:in `block in fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `load'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command/base.rb:87:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command.rb:48:in `invoke'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands.rb:18:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
bin/rails:18:in `<main>'
2 « J'aime »

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