Bloqué par l'erreur ./launcher rebuild app (Process::Status : pid 2096)

Aujourd’hui, lors de la commande ./launcher rebuild app (sans raison que j’aie pu trouver), j’ai reçu cette erreur (également, ceci est après avoir désactivé tous les plugins dans le fichier app.yml)… J’apprécierais grandement toute aide à ce sujet !

error-log_2024-10-31_1.txt (44.1 KB)

se terminant par…

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' a échoué avec le retour #<Process::Status: pid 2096 exit 1>
Emplacement de l'échec : /usr/local/lib/ruby/gems/3.3.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec a échoué avec les paramètres {"cd"=>"$home", "tag"=>"migrate", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap a échoué avec le code de sortie 1
** FAILED TO BOOTSTRAP **

La partie pertinente du journal est

undefined method `+' for nil
/var/www/discourse/db/migrate/20241025045928_add_invites_link_to_sidebar.rb:44:in `up'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.1.4.2/lib/active_record/migration.rb:989:in `public_send'

Il semble donc lié à FEATURE: Add invite link to the sidebar (#29448) · discourse/discourse@19672fa · GitHub (cc @osama)

Merci beaucoup (et pour l’explication), j’ai vu ça aussi, et je me demandais si c’était ça !

@denvergeeks Je vais corriger la migration, mais je suis un peu curieux de savoir comment votre site en est arrivé là. À quoi ressemble la barre latérale sur votre site ? Avez-vous supprimé tous les liens de la barre latérale par défaut de la base de données ?

Bien sûr – je n’ai pas de capture d’écran de la barre latérale ou du site, mais rien n’est modifié à part l’ajout de quelques éléments de menu basiques dans le « plus… »

C’est juste une de mes instances Discourse de recherche personnelle (non publique) donc je pourrais aider à déboguer si vous me dites ce que vous voulez que je fasse en ligne de commande. (J’ai mon propre serveur dédié si cela peut aider.)

Pouvez-vous me dire ce que les requêtes suivantes renvoient dans votre base de données ?

SELECT id FROM sidebar_sections WHERE section_type = 0;
SELECT linkable_type, linkable_id, position FROM sidebar_section_links WHERE sidebar_section_id IN (SELECT id FROM sidebar_sections WHERE section_type = 0);
SELECT id, segment FROM sidebar_urls WHERE id IN (SELECT linkable_id FROM sidebar_section_links WHERE sidebar_section_id IN (SELECT id FROM sidebar_sections WHERE section_type = 0));

Je peux certainement - pourriez-vous s’il vous plaît fournir les commandes à partir du début/de l’invite ? (Je suis l’utilisateur root)

Je ne connais pas les commandes exactes par cœur, mais j’ai cherché ici dans Meta et je pense que celles-ci fonctionneront :

./launcher enter app
su postgres
psql

Après la commande psql, vous devriez pouvoir coller les requêtes et les exécuter pour voir leurs résultats. Faites-moi savoir si les commandes ne fonctionnent pas.

root@JEN /var/discourse # ./launcher enter app101
su postgres
psql
x86_64 arch detected.
Error response from daemon: container 8ee36bdfa85b786ea149e6714f65048e136091fe31be2f5425be5fe04a852729 is not running
su: user postgres does not exist or the user entry does not contain all the required fields
Command 'psql' not found, but can be installed with:
apt install postgresql-client-common

Il semble que votre conteneur ne tourne pas. Votre site est-il hors service pour le moment ? Essayez :

./launcher start app101
root@JEN /var/discourse # ./launcher start app101
x86_64 arch detected.

starting up existing container
+ /usr/bin/docker start app101
app101
root@JEN /var/discourse # ./launcher enter app101
su postgres
psql
x86_64 arch detected.
root@JEN-app101:/var/www/discourse# SELECT id FROM sidebar_sections WHERE section_type = 0;
bash: SELECT: command not found
root@JEN-app101:/var/www/discourse#

Le site est lancé et voici la barre latérale et… plus d’éléments

Ok, ça a du sens maintenant. La migration attend au moins 1 lien en dehors de ... plus, mais vous n’en avez aucun, donc elle plante. Je vais mettre à jour la migration pour qu’elle tienne compte de ce cas.

J’ai eu la même erreur (et arrêté le conteneur) sur un de mes autres sites également. (Mais pas sur certains autres sites.)

Edit : Oui, donc cet autre site (où j’ai trouvé le même comportement) n’a pas non plus de lien en dehors de ... plus

Avons-nous terminé ?

L'image est une photographie floue et de faible résolution du visage d'un jeune enfant, l'enfant regardant directement la caméra et souriant. (Légendé par l'IA)

Désolé @denvergeeks, une urgence personnelle est survenue et j’ai dû m’absenter quelques heures. J’ai préparé une PR avec un correctif :

Je vous informerai lorsqu’elle sera fusionnée et aura passé les tests.

@denvergeeks, la correction est arrivée sur la branche tests-passés. Si vous reconstruisez maintenant, cela devrait réussir.