Erreur d'exécution lors de la mise à niveau vers la v3.0.3

J’ai répondu à un e-mail de notification de mise à niveau en un clic pour une nouvelle version de sécurité et de correction de bogues vers la version 3.0.3, depuis ma version actuelle 3.0.1.

La mise à niveau initiale de Docker Manager s’est bien déroulée (selon le rapport de progression de la mise à niveau sur la page Web de mise à niveau), mais lorsque j’ai ensuite cliqué sur « tout mettre à niveau » pour mettre à niveau les composants Discourse restants qui avaient une nouvelle version disponible, cela a échoué, laissant mon site hors ligne.

Étrangement, Docker Manager est à nouveau mentionné ici dans le rapport de progression de mise à niveau ultérieur, même s’il avait déjà été mis à niveau séparément - signalant cette fois qu’il a « échoué à la mise à niveau » et « RuntimeError ».

Ai-je raison d’interpréter que cela était dû à une version obsolète de Ruby installée sur mon droplet Digital Ocean (v3.1, plutôt que v3.2) ? Si c’est le cas, j’aurais espéré qu’une telle nouvelle dépendance aurait été mentionnée dans les notes de mise à jour (ce n’était pas un problème avec la mise à jour précédente), sinon gérée plus gracieusement par l’installateur en un clic ?

Voici le contenu de cette fenêtre de rapport de progression de mise à niveau ultérieure :

********************************************************
*** Veuillez patienter, les prochaines étapes peuvent prendre un certain temps ***
********************************************************
Cyclage de Unicorn, pour libérer de la mémoire
Redémarrage de Unicorn pid : 575
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.........
Utilisation de net-protocol 0.2.1
Récupération de addressable 2.8.4
Installation de addressable 2.8.4
Utilisation de aws-sigv4 1.5.0
Utilisation de openssl-signature_algorithm 1.3.0
Utilisation de sprockets 3.7.2 depuis https://github.com/rails/sprockets (à 3.x@f4d3dae)
Utilisation de request_store 1.5.1
Utilisation de message_bus 4.3.2
Utilisation de pry 0.14.2
Récupération de rack-mini-profiler 3.1.0
Installation de rack-mini-profiler 3.1.0
Récupération de rack-protection 3.0.6
Installation de rack-protection 3.0.6
Utilisation de ecma-re-validator 0.4.0
Utilisation de faraday 2.7.4
Utilisation de image_optim 0.31.3
Utilisation de logstash-logger 0.26.1
Utilisation de mini_racer 0.6.3
Utilisation de mini_suffix 0.3.3
Utilisation de omniauth 1.9.2
Utilisation de uglifier 4.2.0
Utilisation de web-push 3.0.0
Utilisation de sidekiq 6.5.8
Utilisation de redis-namespace 1.10.0
Utilisation de net-http 0.3.2
Utilisation de oauth-tty 1.0.5
Utilisation de snaky_hash 2.0.1
Utilisation de activesupport 7.0.4.3
Récupération de sass-embedded 1.62.0 (x86_64-linux-gnu)
Installation de sass-embedded 1.62.0 (x86_64-linux-gnu)
Utilisation de rqrcode 2.1.2
Utilisation de rss 0.2.9
Récupération de tzinfo-data 1.2023.3
Installation de tzinfo-data 1.2023.3
Utilisation de unf 0.1.4
Utilisation de unicorn 6.1.0
Récupération de loofah 2.20.0
Installation de loofah 2.20.0
Utilisation de ruby-readability 0.7.0
Utilisation de sanitize 6.0.1
Utilisation de net-imap 0.3.4
Utilisation de net-pop 0.1.2
Utilisation de net-smtp 0.3.3
Utilisation de css_parser 1.14.0
Utilisation de aws-sdk-core 3.130.2
Utilisation de cose 1.3.0
Utilisation de pry-byebug 3.10.1
Utilisation de pry-rails 0.3.9
Utilisation de json_schemer 0.2.23
Utilisation de faraday-retry 2.1.0
Utilisation de oauth2 1.4.11
Utilisation de rtlcss 0.2.0
Utilisation de rails-dom-testing 2.0.3
Utilisation de globalid 1.1.0
Utilisation de activemodel 7.0.4.3
Utilisation de mini_scheduler 0.15.0
Utilisation de oauth 1.1.0
Utilisation de dartsass-ruby 3.0.1
Utilisation de rails-html-sanitizer 1.5.0
Récupération de mail 2.8.1
Installation de mail 2.8.1
Utilisation de aws-sdk-kms 1.56.0
Utilisation de aws-sdk-sns 1.53.0
Utilisation de actionview 7.0.4.3
Utilisation de activejob 7.0.4.3
Utilisation de active_model_serializers 0.8.4
Utilisation de activerecord 7.0.4.3
Utilisation de omniauth-oauth2 1.7.3
Utilisation de omniauth-oauth 1.2.0
Utilisation de aws-sdk-s3 1.114.0
Utilisation de actionpack 7.0.4.3
Utilisation de actionview_precompiler 0.2.3
Utilisation de discourse-seed-fu 2.3.12
Utilisation de omniauth-facebook 9.0.0
Utilisation de omniauth-github 1.4.0
Utilisation de omniauth-google-oauth2 0.8.2
Utilisation de omniauth-twitter 1.4.0
Utilisation de actionmailer 7.0.4.3
Utilisation de railties 7.0.4.3
Utilisation de sprockets-rails 3.4.2
Utilisation de dartsass-sprockets 3.0.0
Utilisation de lograge 0.12.0
Récupération de rails_failover 1.0.0
Installation de rails_failover 1.0.0
Utilisation de rails_multisite 4.0.1
Récupération de puma 6.2.2
Installation de puma 6.2.2 avec extensions natives
Utilisation de bootsnap 1.16.0
Utilisation de rbtrace 0.4.14
Bundle complet ! 136 dépendances de Gemfile, 174 gems maintenant installés.
Les gems des groupes 'test' et 'development' n'ont pas été installées.
Les gems groupées sont installées dans `./vendor/bundle`
$ yarn install --production
yarn install v1.22.19
[1/5] Validation de package.json...
[2/5] Résolution des paquets...
[3/5] Récupération des paquets...
[4/5] Liaison des dépendances...
warning " > @mixer/parallel-prettier@2.0.3" a une dépendance pair non satisfaite "prettier@^2.0.0".
warning "eslint-config-discourse > eslint-plugin-lodash@7.1.0" a une dépendance pair non satisfaite "lodash@>=4".
[5/5] Construction des nouveaux paquets...
$ yarn --cwd app/assets/javascripts $(node -e 'if(JSON.parse(process.env.npm_config_argv).original.includes(`--frozen-lockfile`)){console.log(`--frozen-lockfile`)}')
yarn install v1.22.19
[1/4] Résolution des paquets...
[2/4] Récupération des paquets...
[3/4] Liaison des dépendances...
warning " > babel-plugin-debug-macros@0.4.0-pre1" a une dépendance pair non satisfaite "@babel/core@^7.0.0".
warning "workspace-aggregator-61483bea-5d74-44aa-a245-abffc0a6319e > discourse > @uppy/aws-s3@3.0.6" a une dépendance pair incorrecte "@uppy/core@^3.1.2".
warning "workspace-aggregator-61483bea-5d74-44aa-a245-abffc0a6319e > discourse > @uppy/aws-s3-multipart@3.1.3" a une dépendance pair incorrecte "@uppy/core@^3.1.2".
warning "workspace-aggregator-61483bea-5d74-44aa-a245-abffc0a6319e > discourse > @uppy/xhr-upload@3.1.1" a une dépendance pair incorrecte "@uppy/core@^3.1.2".
[4/4] Construction des nouveaux paquets...
success Fichier de verrouillage enregistré.
$ patch-package
patch-package 6.5.1
Application des correctifs...
@ember/jquery@2.0.0 ✔
virtual-dom@2.1.1 ✔
Terminé en 23.96s.
Terminé en 40.79s.
$ LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all
Discourse nécessite Ruby 3.2 ou supérieur
Impossible de récupérer les versions compatibles des plugins
$ SKIP_POST_DEPLOYMENT_MIGRATIONS=1 bundle exec rake multisite:migrate
Discourse nécessite Ruby 3.2 ou supérieur
Docker Manager : ÉCHEC DE LA MISE À NIVEAU
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:202:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:101:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.3/lib/rails/commands/runner/runner_command.rb:43:in `load'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.3/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.3/lib/rails/command/base.rb:87:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.3/lib/rails/command.rb:48:in `invoke'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.3/lib/rails/commands.rb:18:in `<main>'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
bin/rails:18:in `<main>'
Démarrage de 1 worker Unicorn (initialement arrêté)

Je vais suivre les étapes pour reconstruire mon site via Putty, mais je signale ce qui précède au cas où il y aurait un bug avec l’installateur.

3 « J'aime »

Je rencontre quelque chose de similaire. Le forum est dans l’impasse pour le moment . . .

J’en saurai plus demain quand je ne m’endormirai pas. Je suppose que c’est un « je plussoie ».

-Walker

1 « J'aime »

Vous devez tirer une nouvelle version de l’image Docker.

Soit dit en passant - cette erreur ne se produit qu’à partir de la version 3.1.0.beta4, pas dans la version stable 3.0.3.

2 « J'aime »

On dirait que le gestionnaire docker doit savoir qu’il ne peut pas effectuer de mise à niveau, n’est-ce pas ? Il devrait nécessiter une reconstruction en ligne de commande après sa mise à niveau. Je pensais avoir vu une augmentation de version dans les commits il y a quelque temps, mais je me trompe probablement à ce sujet.

Vous devrez donc

./launcher rebuild app

4 « J'aime »

Merci - oui, le problème a été résolu pour moi lorsque j’ai reconstruit via Putty.

1 « J'aime »

Oui, c’est arrivé très récemment. Update minimum image version for Ruby 3.2 (#176) · discourse/docker_manager@7e7b6b5 · GitHub

Docker Manager devrait demander une reconstruction en ligne de commande lorsque cette exigence n’est pas satisfaite. :thinking:

4 « J'aime »

Alors, y a-t-il un bug ou une régression ? Mais je suppose que vous vérifiez cela. Cela ressemble à un bug si le gestionnaire Docker ne sait pas qu’il ne peut pas réussir.

3 « J'aime »

Pouvez-vous confirmer ces versions ? Comme @RGJ l’a dit dans un post ci-dessous, les versions stables ne nécessitent pas Ruby 3.2, vous ne devriez donc pas voir ces erreurs lors de la mise à niveau dans la branche stable.

Avez-vous par hasard essayé de passer de la v3.1.0.beta1 (ou d’une version encore plus ancienne) à la v3.1.0.beta4 ?

Le problème est que nous bloquons docker_manager sur une ancienne version pour Discourse v3.1.0.beta1 et les versions antérieures. Vous verrez quelque chose comme ceci.

La mise à niveau vers la v3.1.0.beta4 nécessitera Ruby 3.2, mais il est possible que vous exécutiez une image Docker qui n’inclut pas encore Ruby 3.2. L’ancien docker_manager pense que c’est bon, il vous permet donc de mettre à niveau dans l’interface utilisateur, alors qu’il devrait vous inviter à reconstruire via la ligne de commande.

Je suis en train de reproduire le problème. Je pense que la solution consistera à modifier la version bloquée, afin qu’elle vous invite à reconstruire via la ligne de commande. Je vais essayer de trouver une solution…

2 « J'aime »

J’ai vu cela pour deux sites hier qui sont en phase de tests réussis. Je ne suis pas entièrement sûr de la version à partir de laquelle ils effectuaient la mise à niveau. Désolé de ne pas avoir de meilleures données.

1 « J'aime »

Je ne peux pas en être sûr maintenant que la mise à niveau est terminée - mais je pense que c’était peut-être une 3.0.1 beta que j’étais en train de mettre à niveau ** edit ** - PAS une 3.10 beta

1 « J'aime »

Attendez. Vous ne pouvez pas passer de la bêta 3.1 à la version stable 3.0.3 ?

Ok, la version a encore changé, mais je suis à peu près sûr que j’essayais de passer de la 3.0.1 (peut-être une bêta) à la version stable 3.0.3, qui à ce moment-là semblait être l’option stable la plus récente. . Je vois qu’après cet échec et que j’ai reconstruit dans Putty, le résultat a sauté la version 3.0.3 prévue et a en fait installé une bêta 4 de la 3.1.0.

Oui, cela a échoué, car vous ne pouvez pas passer de la version bêta 3.1 à la version stable 3.0.

Je n’ai pas commencé à partir de la bêta 3.1. J’ai commencé à partir de la bêta 3.0.1.

Il n’y a pas de 3.01, c’est soit 3.0.1, soit 3.1.0.
Mais peu importe. Votre situation est arrivée parce que vous alliez vers la version bêta 4 de la 3.1.0.

1 « J'aime »

C’est mon point - j’ai commencé avec la version bêta 3.0.1, et la notification de mise à niveau en un clic envoyée par e-mail était pour la version stable 3.0.3 - dont la mise à niveau a échoué. À ce moment-là, je n’avais pas eu l’option d’aller à la version bêta 3.1.0.

Peut-être qu’une partie du problème était qu’au lieu d’installer la version stable 3.0.3 « annoncée », le programme de mise à jour a tenté d’installer la version bêta 3.1.0 ?

Quoi qu’il en soit, pour autant que je sache, la seule raison pour laquelle j’ai maintenant la version bêta 3.1.0 installée est due à une reconstruction via Putty, qui a récupéré la version bêta la plus récente, et non la version stable la plus récente.

La cause première sera corrigée dès que FIX: Update compatibility file for v3.1.0.beta1 and below by gschlager · Pull Request #178 · discourse/docker_manager · GitHub sera fusionné.

4 « J'aime »