Fehlgeschlagenes Upgrade von 2.9.0.beta14 auf 3.1.0.beta

Ich führe jeden Monat ein Upgrade durch, zuerst immer auf einigen Entwicklungssystemen, dann auf der Produktion.

Während des monatlichen Zyklus schlug das Upgrade auf dem 1. Entwicklungssystem fehl. docker_manager wurde erfolgreich aktualisiert, aber das Discourse-Upgrade schlug mit folgender Meldung fehl:

Entschuldigung, es gab einen Fehler beim Upgrade von Discourse. Bitte überprüfen Sie die Protokolle unten.

Die Discourse-Anwendung ist komplett ausgefallen (sie zeigt die “Ups”-Fehlerseite 500 an).

Hier ist, was das Protokoll auf dem Bildschirm enthält:

********************************************************
*** Bitte haben Sie Geduld, die nächsten Schritte können eine Weile dauern ***
********************************************************
Unicorn wird neu gestartet, um Speicher freizugeben
Neustart des Unicorn-Prozesses: 50
Warte auf das Neuladen von Unicorn.
Warte auf das Neuladen von Unicorn..
Warte auf das Neuladen von Unicorn...
Warte auf das Neuladen von Unicorn....
Warte auf das Neuladen von Unicorn.....
Warte auf das Neuladen von Unicorn......
Warte auf das Neuladen von Unicorn.......
Warte auf das Neuladen von Unicorn........
Warte auf das Neuladen von Unicorn.........
Warte auf das Neuladen von Unicorn..........
Warte auf das Neuladen von Unicorn...........
Stoppe 7 Unicorn-Worker, um Speicher freizugeben
Stoppe die Job-Warteschlange, um Speicher freizugeben, Master-PID ist 4069
$ cd /var/www/discourse && git fetch --tags --force && git reset --hard HEAD@{upstream}
Von https://github.com/discourse/discourse
 t [tag update]            latest-release -> latest-release
 * [new tag]               v2.8.14        -> v2.8.14
 * [new tag]               v3.0.0         -> v3.0.0
HEAD ist jetzt bei 666536cbd1 DEV: Bevorzuge \A und \z gegenüber ^ und $ in Regexes (#19936)
$ bundle install --deployment --jobs 4 --without test development
[DEPRECATED] Die Option `--deployment` ist veraltet, da sie davon abhängt, dass sie über Bundler-Aufrufe hinweg gespeichert wird, was Bundler in zukünftigen Versionen nicht mehr tun wird. Verwenden Sie stattdessen `bundle config set --local deployment 'true'` und hören Sie auf, diese Option zu verwenden.
[DEPRECATED] Die Option `--without` ist veraltet, da sie davon abhängt, dass sie über Bundler-Aufrufe hinweg gespeichert wird, was Bundler in zukünftigen Versionen nicht mehr tun wird. Verwenden Sie stattdessen `bundle config set --local without 'test development'`, und hören Sie auf, diese Option zu verwenden.
Bundler 2.3.13 wird ausgeführt, aber Ihre Lockfile wurde mit 2.4.1 generiert. Installiere Bundler 2.4.1 und starte neu mit dieser Version.
Rufe Gem-Metadaten von https://rubygems.org/ ab.
Rufe Bundler 2.4.1 ab
Installiere Bundler 2.4.1
[DEPRECATED] Die Option `--deployment` ist veraltet, da sie davon abhängt, dass sie über Bundler-Aufrufe hinweg gespeichert wird, was Bundler in zukünftigen Versionen nicht mehr tun wird. Verwenden Sie stattdessen `bundle config set --local deployment 'true'` und hören Sie auf, diese Option zu verwenden.
[DEPRECATED] Die Option `--without` ist veraltet, da sie davon abhängt, dass sie über Bundler-Aufrufe hinweg gespeichert wird, was Bundler in zukünftigen Versionen nicht mehr tun wird. Verwenden Sie stattdessen `bundle config set --local without 'test development'`, und hören Sie auf, diese Option zu verwenden.
Rufe Gem-Metadaten von https://rubygems.org/ ab.........
Rufe https://github.com/rails/sprockets ab
web-push-3.0.0 erfordert Ruby-Version >= 3.0, was mit der aktuellen Version 2.7.6 inkompatibel ist
Docker Manager: UPGRADE FEHLGESCHLAGEN
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:209:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:93:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:20:in `block in fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `load'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command/base.rb:87:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command.rb:48:in `invoke'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands.rb:18:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
bin/rails:18:in `<main>'
Starte 7 Unicorn-Worker, die ursprünglich gestoppt wurden

Ich hatte noch nie einen Upgrade-Fehler, daher bin ich mir nicht sicher, was ich als Nächstes tun soll. Und wenn das in der Produktion passiert wäre, was hätte ich tun sollen?

2 „Gefällt mir“

Ich schlage vor, Sie überprüfen, welche Version des Betriebssystems (Distribution) Sie ausführen: Es könnte sein, dass es sich um eine alte Version handelt, die kein Ruby 3 hat, und das ist das Problem.

Bearbeiten: Moment, ich bin mir nicht sicher, ob ich mich vielleicht irre. Für die Produktion findet alles innerhalb eines Docker-Containers statt, der alle richtigen Versionen von allem haben sollte. Haben Sie eine andere Art von Einrichtung?

2 „Gefällt mir“

FWIW, die Entwickler-Boxen sind Ubuntu 20.04 LTS. Ich glaube, die Produktionsumgebung ist 22.04 LTS.

Ich habe jedoch noch nie Ruby auf dem Betriebssystem installiert. Ich denke, das geschieht alles automatisch im Docker-Container.

Korrektur: Die Produktionsumgebung läuft ebenfalls auf 20.04 LTS.

1 „Gefällt mir“

Ja, Entschuldigung, ich glaube, ich war verwirrt. Es ist nicht ungewöhnlich, ein Upgrade über die Befehlszeile durchführen zu müssen – haben Sie das versucht?

cd /var/discourse
git pull
./launcher rebuild app
6 „Gefällt mir“

Wenn dies Entwicklungsinstallationen sind, sind sie nicht repräsentativ für eine Produktions-Docker-Installation. Ihre Entwicklungsumgebung hat eine alte Ruby-Version (2.7), während Discourse kürzlich in dem Image auf 3.1 aktualisiert hat.

Danke! Das Neuerstellen der App scheint funktioniert zu haben. Ich probiere das jetzt auf einem anderen Entwicklungssystem aus, bevor ich die Produktion patche.

Um es klar zu sagen: Mit „Entwicklung“ meine ich einfach, dass sie wie die Produktion sind, aber auf internen Entwicklungssystemen.

1 „Gefällt mir“

Wurde ein Upgrade über Bash behoben?

1 „Gefällt mir“

Ja! Es hat sowohl auf den Entwicklungssystemen als auch auf der Produktionsumgebung funktioniert. Danke!

3 „Gefällt mir“

Das passiert mir auch in meiner Produktion.

Von 2.9.0.beta14 (2b9fa41a6e) zu 3.1.0.beta1

Fetching gem metadata from https://rubygems.org/.........
Fetching https://github.com/rails/sprockets
web-push-3.0.0 requires ruby version >= 3.0, which is incompatible with the
current version, 2.7.6
Docker Manager: FAILED TO UPGRADE
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:209:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:93:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:20:in `block in fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `load'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command/base.rb:87:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command.rb:48:in `invoke'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands.rb:18:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
bin/rails:18:in `<main>'
Spinning up 1 Unicorn worker(s) that were stopped initially

Gelöst mit :point_up:

cd /var/discourse
git pull
./launcher rebuild app

Danke

Hier das gleiche Problem, das Upgrade ist fehlgeschlagen und hat das Forum mit 500-Fehlern lahmgelegt. Ich bin ehrlich gesagt ziemlich überrascht, dass dieses Problem bisher 3 Tage lang bestand.

Ich führe jetzt einen CLI-Neustart durch, der hoffentlich funktioniert. Wenn nicht, habe ich zuerst einen VM-Snapshot gemacht, weil meine Mutter mich nicht dumm erzogen hat.

Aus diesem Beitrag geht hervor, dass Ruby auf 3.0 aktualisiert wurde, was Web-Upgrades komplett zerstört. Leider lässt die Software Benutzer dies immer noch versuchen, und dann sieht man, wie schnell Ihr Host HTTP-500-Fehler ausgibt.

Bearbeiten: Der CLI-Neustart hat tatsächlich funktioniert, puh!

Relevante Fehler:

Fetching gem metadata from https://rubygems.org/.........
Fetching https://github.com/rails/sprockets
web-push-3.0.0 erfordert Ruby-Version >= 3.0, was mit der aktuellen Version 2.7.6 inkompatibel ist
Docker Manager: UPGRADE FEHLGESCHLAGEN
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:209:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:93:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:20:in `block in fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `load'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command/base.rb:87:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command.rb:48:in `invoke'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands.rb:18:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
bin/rails:18:in `<main>'
2 „Gefällt mir“

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