Comment se reconnecter à la tête après avoir traité une mise à jour défectueuse ?

J’ai eu quelques problèmes il y a plusieurs mois et j’ai finalement dû revenir à la version 2.9.0.beta1 et je n’ai pas pu mettre à jour davantage à ce moment-là.

En raison de diverses circonstances atténuantes, j’ai dû abandonner ce projet pendant un certain temps et je ne peux y revenir que maintenant. J’ai découvert que le problème fondamental était que le serveur de base de données PostgreSQL n’avait pas été suffisamment et correctement mis à niveau, ce qui est maintenant résolu et il fonctionne avec PostgresQL 14.x, et Discourse fonctionne également avec cette version de la base de données maintenant.

Malheureusement, lorsque j’ai essayé de mettre à jour à nouveau via l’interface utilisateur de mise à jour Web normale, elle a indiqué fatal: HEAD does not point to a branch (erreur complète ici) :

fatal: HEAD does not point to a branch
Docker Manager: FAILED TO UPGRADE
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:203:in `run'
...

J’ai pensé que je pourrais peut-être faire un /var/discourse/launcher rebuild app, mais cela n’a pas non plus fonctionné et n’a fait que relancer la même version, mais j’ai remarqué la sortie suivante :

$ ./launcher rebuild app
x86_64 arch detected.

WARNING: We are about to start downloading the Discourse base image
This process may take anywhere between a few minutes to an hour, depending on your network speed

Please be patient

2.0.20220818-0047: Pulling from discourse/base
1efc276f4ff9: Pull complete
1b880e64942b: Pull complete
794f6dc9a2ff: Pull complete
Digest: sha256:7734701087766821ffb2ddcef423754798bd345c2ac0d550131c6e6905c268e8
Status: Downloaded newer image for discourse/base:2.0.20220818-0047
docker.io/discourse/base:2.0.20220818-0047
...
I, [2022-09-13T02:09:12.828649 #1]  INFO -- : Replacing # redis with sv start redis || exit 1 in /etc/service/unicorn/run
I, [2022-09-13T02:09:12.829826 #1]  INFO -- : > cd /var/www/discourse/plugins && git clone https://github.com/discourse/docker_manager.git
Cloning into 'docker_manager'...
I, [2022-09-13T02:09:13.957219 #1]  INFO -- :
I, [2022-09-13T02:09:13.958187 #1]  INFO -- : > cd /var/www/discourse && git fetch --depth=1 origin tag v2.9.0.beta2 --no-tags
From https://github.com/discourse/discourse
 * [new tag]           v2.9.0.beta2 -> v2.9.0.beta2
I, [2022-09-13T02:09:18.214516 #1]  INFO -- :
I, [2022-09-13T02:09:18.215535 #1]  INFO -- : > cd /var/www/discourse && git checkout v2.9.0.beta2
Note: switching to 'v2.9.0.beta2'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:

  git switch -c <new-branch-name>

Or undo this operation with:

  git switch -
Turn off this advice by setting config variable advice.detachedHead to false

HEAD is now at 88a85843 FIX: Cooking custom emojis should not use a secure URL (#15929)
I, [2022-09-13T02:09:19.557296 #1]  INFO -- :
...

J’ai fini par annuler ces modifications en restaurant une sauvegarde et j’ai pensé demander d’abord votre avis sur la façon dont je pourrais et devrais reconnecter correctement Discourse à HEAD sur main et recommencer à construire avec la dernière bêta - et après avoir enfin mis à jour tout cela, j’aimerais le verrouiller sur une mise à jour de version stable à l’avenir. J’avais utilisé des versions bêta pour résoudre un problème que j’avais eu cette année, mais cela a été une aventure suffisante pour moi. :laughing:

Voulez-vous que Discourse effectue des sauvegardes ? Vous devrez trouver un moyen de mettre à niveau les éléments postgres à l’intérieur du conteneur pour utiliser pg14. S’il n’est pas trop tard pour revenir à PG 13, vous serez plus heureux si vous le faites.

Vous devriez simplement faire une reconstruction en ligne de commande.

Hmm, j’ai quelques réflexions @pfaffman :

  • Merci de l’avoir souligné. J’étais tellement pris par la mise à jour de PGSQL que j’ai oublié que je devais passer à la version 13 au lieu de la 14. Je crois que je vais pleurer !
  • Avez-vous vu quelqu’un rétrograder avec succès une base de données de la version 14 à la version 13 ?
  • En théorie, je devrais pouvoir ajouter un autre cluster pour la version 13 au serveur afin que les versions 13 et 14 soient toutes deux en cours d’exécution, mais je suis pratiquement engagé envers la version 14 maintenant avec plusieurs autres services fonctionnant sur le même serveur et je ne peux plus les modifier - donc mon seul espoir est d’installer une instance 13 et de rétrograder celle de Discourse…
  • J’ai essayé la commande de reconstruction, mais elle n’a tout simplement pas fonctionné. Vous faites référence à ce que j’ai partagé ci-dessus, n’est-ce pas ? : /var/discourse/launcher rebuild app,

Cette sortie contient une « Note », mais ce n’est pas une erreur. Vous devriez vous attendre au message « detached head » chaque fois que vous extrayez une version qui n’est pas la dernière.

1 « J'aime »

Je sais exactement ce que vous ressentez.

Ce n’est pas mon domaine d’expertise. Il est beaucoup plus facile de mettre à jour le conteneur pour avoir les outils pg14. Tant que vous ne voulez pas restaurer sur un site pg13, vous serez tranquille.

Comment cela n’a-t-il pas fonctionné ? Et si c’est sur votre serveur de production, vous pourriez vouloir faire cela sur un serveur de test d’abord.