Mise à niveau échoue avec FAILED TO BOOTSTRAP

Lors de la mise à niveau de notre instance Discourse, une opération git pull était requise aujourd’hui, mais la commande ./launcher rebuild échoue avec le message FAILED TO BOOTSTRAP et je ne vois pas encore d’où vient l’échec.

Nous exécutons Discourse sur Ubuntu 18.04. Tout s’est bien passé jusqu’à la mise à niveau d’aujourd’hui.

Notre fichier app.yml s’appelle web.yml, j’ai donc exécuté :

# git pull
# ./launcher rebuild web

La fin de la sortie ressemble à ceci :

I, [2022-02-18T19:25:46.155360 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
Discourse requires Redis 6.2.0 or up
I, [2022-02-18T19:25:55.644442 #1]  INFO -- : gem install sawyer -v 0.8.2 -i /var/www/discourse/plugins/discourse-github/gems/2.7.5 --no-document --ignore-dependencies --no-user-install
Successfully installed sawyer-0.8.2
1 gem installed
gem install octokit -v 4.21.0 -i /var/www/discourse/plugins/discourse-github/gems/2.7.5 --no-document --ignore-dependencies --no-user-install
Successfully installed octokit-4.21.0
1 gem installed
 
 
 
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 1121 exit 1>
Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
85459e34ac2c6275dd1700de2c469124a9fded84800b8c6b4686c1c6b66824e2
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.

Sortie complète ici

Voici nos plugins actuels :

discourse/docker_manager.git
discourse/discourse-github.git
discourse/discourse-solved.git
discourse/discourse-data-explorer.git
discourse/discourse-akismet.git
discourse/discourse-spoiler-alert.git
cpradio/discourse-plugin-replygif.git
discourse/discourse-push-notifications.git
discourse/discourse-chat-integration

Lorsque je parcours la sortie du lanceur, je ne vois pas l’erreur qui cause l’échec. Des suggestions sur ce qui pourrait causer l’échec ?

J’ai essayé de revenir au commit précédent pour voir si je pouvais reconstruire avec succès notre conteneur web sans le dernier changement, mais cela échoue toujours avec un échec de bootstrap. :confused:

Mise à jour :

Nous utilisions une configuration de conteneurs séparée, ce qui n’est apparemment pas une bonne idée, et notre conteneur de données était obsolète, exécutant Redis v5.0.5 (Discourse nécessite actuellement 6.2.0+). Nous avons donc reconstruit notre conteneur de données, puis nos conteneurs web avec succès. Après cette expérience, nous abandonnerons probablement l’approche multi-conteneurs à l’avenir.

Merci à @pfaffman pour les liens incroyablement utiles !

Quelle version de Redis utilisez-vous ?

Voir aussi Skip Redis Version Check

Ah. Je vois. Nous exécutons discourse_docker avec des conteneurs web et de données liés, donc Redis s’exécute dans notre conteneur de données.

Dans notre conteneur de données :

# redis-server --version
Redis server v=5.0.5

Donc, cela explique. Il semble que nous devions également mettre à niveau notre conteneur de données. Cela me rend plus nerveux. Quand cette exigence a-t-elle été ajoutée ? Peut-être pourrais-je revenir à une version précédente du conteneur web jusqu’à ce que mes renforts (en Australie) soient réveillés et disponibles. :wink:

Wow. En examinant l’historique git, il semble que la version de Redis n’est plus dans la gamme 5.x depuis deux ans ! Mais je sais que nous avons effectué des mises à niveau réussies au fil du temps (y compris des git pulls).

D’après Skip Redis Version Check, il semble qu’ils aient récemment commencé à être appliqués. J’ai déjà creusé un trou assez grand pour un vendredi et je ne veux pas essayer de mettre à niveau notre conteneur de données sans aide… donc, je vais essayer de revenir à une version encore plus ancienne de docker_discourse pour voir si je peux revenir à un état où l’exigence de Redis n’est pas appliquée pour l’instant (jusqu’à ce que nous puissions mettre à jour notre conteneur de données).

1 « J'aime »

Cela ne fonctionnera pas, car la vérification provient du dépôt principal. Laisser les conteneurs de données sans mises à jour pendant plusieurs années n’est pas idéal, car nous avons expédié des correctifs de performance et de sécurité à de nombreuses reprises au cours de cette période.

C’est une autre raison pour laquelle je ne recommande pas la configuration de conteneurs séparés.

3 « J'aime »

Vous devez reconstruire le conteneur de données. Voir aussi Mise à jour PostgreSQL 13

2 « J'aime »

Merci. J’attends la mise à niveau de Postgres pendant que nous parlons. :slight_smile:

Et merci pour le lien vers les conseils de mise à niveau de Postgres 13. Très utile !

2 « J'aime »

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