Laufzeitfehler während des Upgrades auf v3.0.3

Ich habe gerade auf eine E-Mail-Benachrichtigung zur „Ein-Klick-Aktualisierung“ für eine neue Sicherheits- und Fehlerbehebungsversion 3.0.3 von meiner aktuellen Version 3.0.1 geantwortet.

Das anfängliche Upgrade des Docker Managers verlief reibungslos (laut dem Upgrade-Fortschrittsbericht auf der Upgrade-Webseite), aber als ich anschließend auf „Alle upgraden“ klickte, um die verbleibenden Discourse-Komponenten zu aktualisieren, die eine neue Version verfügbar hatten, schlug dies fehl und meine Seite war offline.

Seltsamerweise wird der Docker Manager hier im nachfolgenden Fortschrittsbericht des Upgrades erneut erwähnt, obwohl er bereits separat aktualisiert wurde – diesmal mit der Meldung „Upgrade fehlgeschlagen“ und „RuntimeError“.

Liege ich richtig in der Annahme, dass dies auf eine veraltete Ruby-Version zurückzuführen ist, die auf meinem Digital Ocean Droplet installiert ist (v3.1 statt v3.2)? Wenn ja, hätte ich gehofft, dass eine solche neue Abhängigkeit in den Update-Hinweisen erwähnt worden wäre (sie war bei früheren Updates kein Problem), wenn nicht sogar vom Ein-Klick-Installer besser gehandhabt worden wäre?

Nachfolgend finden Sie den Inhalt des nachfolgenden Fortschrittsberichts des Upgrades

********************************************************
*** Bitte haben Sie Geduld, die nächsten Schritte können eine Weile dauern ***
********************************************************
Zyklieren von Unicorn, um Speicher freizugeben
Neustart von Unicorn-Pid: 575
Warten auf das Neuladen von Unicorn.
Warten auf das Neuladen von Unicorn..
Warten auf das Neuladen von Unicorn...
Warten auf das Neuladen von Unicorn....
Warten auf das Neuladen von Unicorn.....
Warten auf das Neuladen von Unicorn......
Warten auf das Neuladen von Unicorn.......
Warten auf das Neuladen von Unicorn........
Warten auf das Neuladen von Unicorn.........
Verwende net-protocol 0.2.1
Fetching addressable 2.8.4
Installiere addressable 2.8.4
Verwende aws-sigv4 1.5.0
Verwende openssl-signature_algorithm 1.3.0
Verwende sprockets 3.7.2 von https://github.com/rails/sprockets (bei 3.x@f4d3dae)
Verwende request_store 1.5.1
Verwende message_bus 4.3.2
Verwende pry 0.14.2
Fetching rack-mini-profiler 3.1.0
Installiere rack-mini-profiler 3.1.0
Fetching rack-protection 3.0.6
Installiere rack-protection 3.0.6
Verwende ecma-re-validator 0.4.0
Verwende faraday 2.7.4
Verwende image_optim 0.31.3
Verwende logstash-logger 0.26.1
Verwende mini_racer 0.6.3
Verwende mini_suffix 0.3.3
Verwende omniauth 1.9.2
Verwende uglifier 4.2.0
Verwende web-push 3.0.0
Verwende sidekiq 6.5.8
Verwende redis-namespace 1.10.0
Verwende net-http 0.3.2
Verwende oauth-tty 1.0.5
Verwende snaky_hash 2.0.1
Verwende activesupport 7.0.4.3
Fetching sass-embedded 1.62.0 (x86_64-linux-gnu)
Installiere sass-embedded 1.62.0 (x86_64-linux-gnu)
Verwende rqrcode 2.1.2
Verwende rss 0.2.9
Fetching tzinfo-data 1.2023.3
Installiere tzinfo-data 1.2023.3
Verwende unf 0.1.4
Verwende unicorn 6.1.0
Fetching loofah 2.20.0
Installiere loofah 2.20.0
Verwende ruby-readability 0.7.0
Verwende sanitize 6.0.1
Verwende net-imap 0.3.4
Verwende net-pop 0.1.2
Verwende net-smtp 0.3.3
Verwende css_parser 1.14.0
Verwende aws-sdk-core 3.130.2
Verwende cose 1.3.0
Verwende pry-byebug 3.10.1
Verwende pry-rails 0.3.9
Verwende json_schemer 0.2.23
Verwende faraday-retry 2.1.0
Verwende oauth2 1.4.11
Verwende rtlcss 0.2.0
Verwende rails-dom-testing 2.0.3
Verwende globalid 1.1.0
Verwende activemodel 7.0.4.3
Verwende mini_scheduler 0.15.0
Verwende oauth 1.1.0
Verwende dartsass-ruby 3.0.1
Verwende rails-html-sanitizer 1.5.0
Fetching mail 2.8.1
Installiere mail 2.8.1
Verwende aws-sdk-kms 1.56.0
Verwende aws-sdk-sns 1.53.0
Verwende actionview 7.0.4.3
Verwende activejob 7.0.4.3
Verwende active_model_serializers 0.8.4
Verwende activerecord 7.0.4.3
Verwende omniauth-oauth2 1.7.3
Verwende omniauth-oauth 1.2.0
Verwende aws-sdk-s3 1.114.0
Verwende actionpack 7.0.4.3
Verwende actionview_precompiler 0.2.3
Verwende discourse-seed-fu 2.3.12
Verwende omniauth-facebook 9.0.0
Verwende omniauth-github 1.4.0
Verwende omniauth-google-oauth2 0.8.2
Verwende omniauth-twitter 1.4.0
Verwende actionmailer 7.0.4.3
Verwende railties 7.0.4.3
Verwende sprockets-rails 3.4.2
Verwende dartsass-sprockets 3.0.0
Verwende lograge 0.12.0
Fetching rails_failover 1.0.0
Installiere rails_failover 1.0.0
Verwende rails_multisite 4.0.1
Fetching puma 6.2.2
Installiere puma 6.2.2 mit nativen Erweiterungen
Verwende bootsnap 1.16.0
Verwende rbtrace 0.4.14
Bundle complete! 136 Gemfile-Abhängigkeiten, 174 Gems jetzt installiert.
Gems in den Gruppen 'test' und 'development' wurden nicht installiert.
Gebündelte Gems werden in `./vendor/bundle` installiert
$ yarn install --production
yarn install v1.22.19
[1/5] Validating package.json...
[2/5] Resolving packages...
[3/5] Fetching packages...
[4/5] Linking dependencies...
warning " > @mixer/parallel-prettier@2.0.3" hat nicht erfüllte Peer-Abhängigkeit "prettier@^2.0.0".
warning "eslint-config-discourse > eslint-plugin-lodash@7.1.0" hat nicht erfüllte Peer-Abhängigkeit "lodash@>=4".
[5/5] Building fresh packages...
$ yarn --cwd app/assets/javascripts $(node -e 'if(JSON.parse(process.env.npm_config_argv).original.includes(`--frozen-lockfile`)){console.log(`--frozen-lockfile`)}')
yarn install v1.22.19
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
warning " > babel-plugin-debug-macros@0.4.0-pre1" hat nicht erfüllte Peer-Abhängigkeit "@babel/core@^7.0.0".
warning "workspace-aggregator-61483bea-5d74-44aa-a245-abffc0a6319e > discourse > @uppy/aws-s3@3.0.6" hat falsche Peer-Abhängigkeit "@uppy/core@^3.1.2".
warning "workspace-aggregator-61483bea-5d74-44aa-a245-abffc0a6319e > discourse > @uppy/aws-s3-multipart@3.1.3" hat falsche Peer-Abhängigkeit "@uppy/core@^3.1.2".
warning "workspace-aggregator-61483bea-5d74-44aa-a245-abffc0a6319e > discourse > @uppy/xhr-upload@3.1.1" hat falsche Peer-Abhängigkeit "@uppy/core@^3.1.2".
[4/4] Building fresh packages...
success Saved lockfile.
$ patch-package
patch-package 6.5.1
Applying patches...
@ember/jquery@2.0.0 ✔
virtual-dom@2.1.1 ✔
Done in 23.96s.
Done in 40.79s.
$ LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all
Discourse erfordert Ruby 3.2 oder höher
Kompatible Plugin-Versionen konnten nicht ausgecheckt werden
$ SKIP_POST_DEPLOYMENT_MIGRATIONS=1 bundle exec rake multisite:migrate
Discourse erfordert Ruby 3.2 oder höher
Docker Manager: UPGRADE FEHLGESCHLAGEN
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:202:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:101:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.3/lib/rails/commands/runner/runner_command.rb:43:in `load'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.3/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.3/lib/rails/command/base.rb:87:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.3/lib/rails/command.rb:48:in `invoke'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.3/lib/rails/commands.rb:18:in `<main>'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
bin/rails:18:in `<main>'
Starte 1 Unicorn-Worker(s), die anfangs gestoppt wurden

Ich werde die Schritte zum Wiederaufbau meiner Seite über Putty durchgehen, melde das oben jedoch für den Fall, dass es einen Fehler im Installer gibt.

3 „Gefällt mir“

Ich bekomme etwas Ähnliches. Derzeit im Forum auf Eis gelegt . . .

Ich werde morgen mehr wissen, wenn ich nicht einschlafe. Ich schätze, das ist ein „Ich stimme dem zu“.

-Walker

1 „Gefällt mir“

Sie müssen eine neue Version des Docker-Images herunterladen.

Übrigens – dieser Fehler tritt nur ab 3.1.0.beta4 auf, nicht in 3.0.3 stable.

2 „Gefällt mir“

Es sieht so aus, als ob der Docker-Manager wissen muss, dass er kein Upgrade durchführen kann, richtig? Er sollte nach einem Upgrade einen Kommandozeilen-Neubau erfordern. Ich dachte, ich hätte vor einiger Zeit eine Versionserhöhung in den Commits gesehen, aber ich liege wohl falsch.

Sie müssen also

./launcher rebuild app

4 „Gefällt mir“

Danke – ja, das Problem wurde für mich behoben, als ich es über Putty neu erstellt habe.

1 „Gefällt mir“

Ja, das ist erst kürzlich passiert. Update minimum image version for Ruby 3.2 (#176) · discourse/docker_manager@7e7b6b5 · GitHub

Docker Manager sollte nach einem Kommandozeilen-Neubau fragen, wenn diese Anforderung nicht erfüllt ist. :thinking:

4 „Gefällt mir“

Gibt es also vielleicht einen Fehler oder eine Regression? Aber ich schätze, Sie kümmern sich darum. Es scheint ein Fehler zu sein, wenn der Docker Manager nicht weiß, dass er nicht erfolgreich sein kann.

3 „Gefällt mir“

Können Sie diese Versionen bestätigen? Wie @RGJ in einem Beitrag unten sagte, erfordern die stabilen Versionen kein Ruby 3.2, daher sollten Sie diese Fehler beim Upgrade im stabilen Zweig nicht sehen.

Haben Sie zufällig versucht, von v3.1.0.beta1 (oder einer noch älteren Version) auf v3.1.0.beta4 zu aktualisieren?

Das Problem ist, dass wir docker_manager für Discourse v3.1.0.beta1 und darunter an eine alte Version anheften. Sie werden etwas Ähnliches sehen.

Ein Upgrade auf v3.1.0.beta4 erfordert Ruby 3.2, aber es besteht die Möglichkeit, dass Sie ein Docker-Image ausführen, das Ruby 3.2 noch nicht enthält. Der alte docker_manager denkt, das sei in Ordnung, und erlaubt Ihnen daher ein Upgrade in der Benutzeroberfläche, obwohl er eine CLI-Neuinstallation auffordern sollte.

Ich bin dabei, das Problem zu reproduzieren. Ich denke, die Lösung wird darin bestehen, Änderungen an der angehefteten Version vorzunehmen, damit sie eine CLI-Neuinstallation auffordert. Ich werde versuchen, eine Lösung zu finden…

2 „Gefällt mir“

Ich habe das gestern für zwei Websites gesehen, die sich in bestandenen Tests befinden. Ich bin mir der Version, von der sie ein Upgrade durchführten, nicht ganz sicher. Entschuldigung, dass ich keine besseren Daten habe.

1 „Gefällt mir“

Ich kann mir jetzt, da das Upgrade abgeschlossen ist, nicht sicher sein – aber ich glaube, es könnte eine 3.0.1 Beta gewesen sein, von der ich ein Upgrade durchgeführt habe ** Bearbeitung ** – NICHT eine 3.10 Beta.

1 „Gefällt mir“

Warte. Du kannst nicht von 3.1 Beta auf 3.0.3 stable wechseln?

Ok, die Version hat sich wieder geändert, aber ich bin mir ziemlich sicher, dass ich versucht habe, von 3.0.1 (möglicherweise eine Beta) auf 3.0.3 Stable zu aktualisieren, was zu diesem Zeitpunkt die aktuellste stabile Option zu sein schien. Ich sehe, dass nach dem Fehlschlag und dem Neuaufbau in Putty das Ergebnis die beabsichtigte Version 3.0.3 übersprungen und tatsächlich eine 3.1.0 Beta 4 installiert hat.

Ja, das ist fehlgeschlagen, da man nicht von 3.1 Beta zu 3.0 Stable wechseln kann.

Ich habe nicht mit der 3.1 Beta begonnen. Ich habe mit der 3.0.1 Beta begonnen.

Es gibt kein 3.01, es ist entweder 3.0.1 oder 3.1.0.
Aber es spielt keine Rolle. Ihre Situation ist aufgetreten, weil Sie zu 3.1.0 beta4 gingen.

1 „Gefällt mir“

Das ist mein Punkt: Ich habe mit dem 3.0.1 Beta begonnen, und die per E-Mail gesendete Ein-Klick-Upgrade-Benachrichtigung war für 3.0.3 Stable – dieses Upgrade schlug fehl. Zu diesem Zeitpunkt wurde mir keine Option angezeigt, um zu 3.1.0 Beta zu wechseln.

Vielleicht lag ein Teil des Problems darin, dass der Updater anstelle der „beworbenen“ 3.0.3 Stable-Version versuchte, 3.1.0 Beta zu installieren?

In jedem Fall ist, soweit ich weiß, der einzige Grund, warum ich jetzt 3.1.0 Beta installiert habe, die Neuinstallation über Putty, die die aktuellste Beta-Version und nicht die aktuellste Stable-Version heruntergeladen hat.

Die Grundursache wird behoben, sobald FIX: Update compatibility file for v3.1.0.beta1 and below by gschlager · Pull Request #178 · discourse/docker_manager · GitHub gemerged ist.

4 „Gefällt mir“