Wie kann ich wieder eine Verbindung zum Head herstellen, nachdem ich zuvor mit einem fehlerhaften Update zu tun hatte?

Vor einigen Monaten gab es einige Probleme, und letztendlich musste ich zu 2.9.0.beta1 zurückkehren und konnte zu diesem Zeitpunkt nicht weiter aktualisieren.

Aufgrund verschiedener mildernder Umstände musste ich mich für eine Weile von diesem Projekt zurückziehen und kann jetzt erst wieder damit beginnen. Ich habe festgestellt, dass das Hauptproblem darin bestand, dass der PostgreSQL-Datenbankserver nicht ausreichend und ordnungsgemäß aktualisiert worden war. Dies wurde nun behoben und läuft mit PostgresQL 14.x, und Discourse läuft jetzt auch mit dieser Version der Datenbank.

Leider zeigte die normale Web-Admin-Upgrade-Benutzeroberfläche, als ich versuchte, erneut ein Upgrade durchzuführen, dass fatal: HEAD does not point to a branch (vollständige Fehlermeldung hier):

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'
...

Ich dachte, ich könnte vielleicht ein /var/discourse/launcher rebuild app ausführen, aber das hat auch nicht funktioniert und führte nur dazu, dass dieselbe Version wieder gestartet wurde, aber ich bemerkte die folgende Ausgabe:

$ ./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 -- :
...

Ich habe diese Änderungen rückgängig gemacht, indem ich ein Backup wiederhergestellt habe, und dachte, ich sollte hier zuerst um Input bitten, wie ich Discourse ordnungsgemäß wieder mit HEAD auf main verbinden und wieder mit der neuesten Beta beginnen kann. Nachdem ich dies endlich auf den neuesten Stand gebracht habe, möchte ich es in Zukunft auf ein stabiles Release-Update festlegen. Ich hatte Betas verwendet, um ein Problem zu lösen, das ich letztes Jahr hatte, aber das war genug Abenteuer für mich. :laughing:

Möchten Sie, dass Discourse Backups erstellt? Sie müssen die PostgreSQL-Sachen innerhalb des Containers so anpassen, dass sie pg14 verwenden. Wenn es nicht zu spät ist, zu PG 13 zurückzukehren, werden Sie glücklicher sein, wenn Sie es tun.

Sie sollten einfach einen Befehlszeilen-Neustart durchführen.

Hmm, ich habe ein paar Gedanken, @pfaffman:

  • Danke, dass du mich darauf aufmerksam gemacht hast. Ich war so sehr damit beschäftigt, PGSQL zu aktualisieren, dass ich vergessen habe, dass ich auf 13 statt auf 14 umsteigen musste. Ich glaube, ich werde weinen!
  • Hast du jemanden gesehen, der erfolgreich eine Datenbank von 14 auf 13 herabgestuft hat?
  • Theoretisch sollte ich einen weiteren Cluster für 13 auf dem Server hinzufügen können, sodass sowohl 13 als auch 14 laufen, aber ich bin jetzt ziemlich auf 14 festgelegt, da mehrere andere Dienste auf demselben Server laufen und ich mich nicht weiter damit herumschlagen kann – daher ist meine einzige Hoffnung, eine 13er-Instanz zu installieren und die Discourse-Instanz HERABSTUFEN…
  • Ich habe den rebuild-Befehl ausprobiert, aber er hat einfach nicht funktioniert. Du beziehst dich auf das, was ich oben geteilt habe, richtig?: /var/discourse/launcher rebuild app,

Diese Ausgabe enthält eine „Notiz“, aber das ist kein Fehler. Sie sollten die Meldung „detached head“ jedes Mal erwarten, wenn Sie eine Version auschecken, die nicht die neueste ist.

1 „Gefällt mir“

Ich weiß genau, wie du dich fühlst.

Das ist nicht mein Fachgebiet. Es ist viel einfacher, den Container zu aktualisieren, um pg14-Tools zu haben. Solange du nicht auf eine pg13-Site wiederherstellen möchtest, wirst du damit zurechtkommen.

Wie hat es nicht funktioniert? Und wenn dies auf deinem Produktionsserver geschieht, solltest du dies vielleicht zuerst auf einem Testserver tun.