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?