v3.0.3へのアップグレード中に実行時エラーが発生

「ワンクリックアップグレード」のメール通知に応答して、現在のバージョン 3.0.1 から 3.0.3 への新しいセキュリティおよびバグ修正リリースにアップグレードしました。

最初の Docker Manager のアップグレードは正常に完了しました(アップグレード Web ページのアップグレード進捗レポートによると)、その後「すべてアップグレード」をクリックして、新しいバージョンが利用可能と表示されている残りの Discourse コンポーネントをアップグレードしようとしましたが、失敗し、サイトがオフラインになりました。

奇妙なことに、Docker Manager は、すでに個別にアップグレードされていたにもかかわらず、その後のアップグレード進捗レポートウィンドウで再び参照されており、今回は「アップグレードに失敗しました」および「RuntimeError」と報告されました。

これは、Digital Ocean ドロップレットにインストールされている Ruby のバージョンが古い(v3.1、v3.2 ではなく)ことが原因であるという私の解釈は正しいでしょうか?もしそうであれば、そのような新しい依存関係は、アップデートノートに記載されているか(記載されていませんでした)、少なくともワンクリックインストーラーでもっとうまく処理されるべきだったと思います(以前のアップデートでは問題ありませんでした)。

以下は、その後のアップグレード進捗レポートウィンドウの内容です。

********************************************************
*** Please be patient, next steps might take a while ***
********************************************************
Cycling Unicorn, to free up memory
Restarting unicorn pid: 575
Waiting for Unicorn to reload.
Waiting for Unicorn to reload..
Waiting for Unicorn to reload...
Waiting for Unicorn to reload....
Waiting for Unicorn to reload.....
Waiting for Unicorn to reload......
Waiting for Unicorn to reload.......
Waiting for Unicorn to reload........
Waiting for Unicorn to reload.........
Using net-protocol 0.2.1
Fetching addressable 2.8.4
Installing addressable 2.8.4
Using aws-sigv4 1.5.0
Using openssl-signature_algorithm 1.3.0
Using sprockets 3.7.2 from https://github.com/rails/sprockets (at 3.x@f4d3dae)
Using request_store 1.5.1
Using message_bus 4.3.2
Using pry 0.14.2
Fetching rack-mini-profiler 3.1.0
Installing rack-mini-profiler 3.1.0
Fetching rack-protection 3.0.6
Installing rack-protection 3.0.6
Using ecma-re-validator 0.4.0
Using faraday 2.7.4
Using image_optim 0.31.3
Using logstash-logger 0.26.1
Using mini_racer 0.6.3
Using mini_suffix 0.3.3
Using omniauth 1.9.2
Using uglifier 4.2.0
Using web-push 3.0.0
Using sidekiq 6.5.8
Using redis-namespace 1.10.0
Using net-http 0.3.2
Using oauth-tty 1.0.5
Using snaky_hash 2.0.1
Using activesupport 7.0.4.3
Fetching sass-embedded 1.62.0 (x86_64-linux-gnu)
Installing sass-embedded 1.62.0 (x86_64-linux-gnu)
Using rqrcode 2.1.2
Using rss 0.2.9
Fetching tzinfo-data 1.2023.3
Installing tzinfo-data 1.2023.3
Using unf 0.1.4
Using unicorn 6.1.0
Fetching loofah 2.20.0
Installing loofah 2.20.0
Using ruby-readability 0.7.0
Using sanitize 6.0.1
Using net-imap 0.3.4
Using net-pop 0.1.2
Using net-smtp 0.3.3
Using css_parser 1.14.0
Using aws-sdk-core 3.130.2
Using cose 1.3.0
Using pry-byebug 3.10.1
Using pry-rails 0.3.9
Using json_schemer 0.2.23
Using faraday-retry 2.1.0
Using oauth2 1.4.11
Using rtlcss 0.2.0
Using rails-dom-testing 2.0.3
Using globalid 1.1.0
Using activemodel 7.0.4.3
Using mini_scheduler 0.15.0
Using oauth 1.1.0
Using dartsass-ruby 3.0.1
Using rails-html-sanitizer 1.5.0
Fetching mail 2.8.1
Installing mail 2.8.1
Using aws-sdk-kms 1.56.0
Using aws-sdk-sns 1.53.0
Using actionview 7.0.4.3
Using activejob 7.0.4.3
Using active_model_serializers 0.8.4
Using activerecord 7.0.4.3
Using omniauth-oauth2 1.7.3
Using omniauth-oauth 1.2.0
Using aws-sdk-s3 1.114.0
Using actionpack 7.0.4.3
Using actionview_precompiler 0.2.3
Using discourse-seed-fu 2.3.12
Using omniauth-facebook 9.0.0
Using omniauth-github 1.4.0
Using omniauth-google-oauth2 0.8.2
Using omniauth-twitter 1.4.0
Using actionmailer 7.0.4.3
Using railties 7.0.4.3
Using sprockets-rails 3.4.2
Using dartsass-sprockets 3.0.0
Using lograge 0.12.0
Fetching rails_failover 1.0.0
Installing rails_failover 1.0.0
Using rails_multisite 4.0.1
Fetching puma 6.2.2
Installing puma 6.2.2 with native extensions
Using bootsnap 1.16.0
Using rbtrace 0.4.14
Bundle complete! 136 Gemfile dependencies, 174 gems now installed.
Gems in the groups 'test' and 'development' were not installed.
Bundled gems are installed into `./vendor/bundle`
$ 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" has unmet peer dependency "prettier@^2.0.0".
warning "eslint-config-discourse > eslint-plugin-lodash@7.1.0" has unmet peer dependency "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" has unmet peer dependency "@babel/core@^7.0.0".
warning "workspace-aggregator-61483bea-5d74-44aa-a245-abffc0a6319e > discourse > @uppy/aws-s3@3.0.6" has incorrect peer dependency "@uppy/core@^3.1.2".
warning "workspace-aggregator-61483bea-5d74-44aa-a245-abffc0a6319e > discourse > @uppy/aws-s3-multipart@3.1.3" has incorrect peer dependency "@uppy/core@^3.1.2".
warning "workspace-aggregator-61483bea-5d74-44aa-a245-abffc0a6319e > discourse > @uppy/xhr-upload@3.1.1" has incorrect peer dependency "@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 ✔
vdom@2.1.1 ✔
Done in 23.96s.
Done in 40.79s.
$ LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all
Discourse requires Ruby 3.2 or above
Unable checkout compatible plugin versions
$ SKIP_POST_DEPLOYMENT_MIGRATIONS=1 bundle exec rake multisite:migrate
Discourse requires Ruby 3.2 or above
Docker Manager: FAILED TO UPGRADE
#<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>'
Spinning up 1 Unicorn worker(s) that were stopped initially

Putty を介してサイトを再構築する手順を実行しますが、インストーラーのバグの可能性があるため、上記を報告します。

「いいね!」 3

私も同様の状況です。フォーラムは現在、完全に沈黙しています。。。

眠くてたまらないので、明日もっと詳しくわかります。これは「私も同感です」ということだと思います。

-Walker

「いいね!」 1

Dockerイメージの新しいバージョンをプルする必要があります。

ちなみに、そのエラーは3.1.0.beta4以降でのみ発生し、3.0.3 stableでは発生しません

「いいね!」 2

Dockerマネージャーはアップグレードできないことを知る必要があるようですね。アップグレード後にコマンドラインで再構築が必要になるはずです。しばらく前にコミットでバージョンアップを見たような気がしましたが、それは間違いだったようです。

したがって、次のコマンドを実行する必要があります。

./launcher rebuild app

「いいね!」 4

ありがとうございます。はい、PuTTY経由で再構築したところ、問題は解決しました。

「いいね!」 1

はい、これはごく最近起こりました。 Update minimum image version for Ruby 3.2 (#176) · discourse/docker_manager@7e7b6b5 · GitHub

Docker Manager は、その要件が満たされていない場合にコマンドラインでの再構築を促すはずです。 :thinking:

「いいね!」 4

では、バグまたはリグレッションがあるのでしょうか?しかし、皆さんがそれを確認していると思います。Docker Manager が成功できないことを認識していないのはバグのようです。

「いいね!」 3

これらのバージョンを確認していただけますか?@RGJ が下の投稿で述べたように、安定版では Ruby 3.2 は必要ありません。そのため、安定版ブランチでのアップグレード中にそれらのエラーが表示されるはずではありません。

もしかして、v3.1.0.beta1(またはそれ以前のバージョン)から v3.1.0.beta4 にアップグレードしようとしましたか?

問題は、Discourse v3.1.0.beta1 以前では docker_manager を古いバージョンに固定していることです。次のような表示が見られるでしょう。

v3.1.0.beta4 へのアップグレードには Ruby 3.2 が必要ですが、Ruby 3.2 がまだ含まれていない Docker イメージを実行している可能性があります。古い docker_manager はそれを問題ないと考えているため、UI でのアップグレードを許可しますが、実際には CLI での再構築を促すべきです。

現在、問題を再現しようとしています。修正は、固定バージョンを変更して、CLI での再構築を促すようにすることになると思います。修正を試みます…

「いいね!」 2

昨日、テストに合格した2つのサイトでこれを見ました。アップグレード元のバージョンが正確にはわかりません。より良いデータを提供できず申し訳ありません。

「いいね!」 1

アップグレードが完了した今では確実ではありませんが、おそらく 3.0.1 beta からアップグレードしていたと思います。編集 - 3.10 beta ではありません。

「いいね!」 1

待ってください。3.1 beta から 3.0.3 stable には移行できないのですか?

バージョンが再び変更されましたが、3.0.1(おそらくベータ版)から当時の最新安定版と思われる3.0.3安定版にアップグレードしようとしていたと確信しています。それが失敗してPuttyで再構築した後、意図したバージョン3.0.3をスキップして、実際には3.1.0ベータ4がインストールされたことがわかりました。

はい、それは失敗しました。3.1ベータ版から3.0安定版には移行できないためです。

3.1ベータからではなく、3.0.1ベータから開始しました。

3.01 は存在せず、3.0.1 または 3.1.0 のいずれかです。
しかし、どちらでも大した問題ではありません。あなたの状況は、3.1.0 beta4 に移行しようとしたために発生しました。

「いいね!」 1

私のポイントは、3.0.1 ベータ版から開始したところ、メールで届いたワンクリックアップグレード通知は 3.0.3 安定版へのものでしたが、アップグレードに失敗しました。その時点で、3.1.0 ベータ版へのオプションは提示されていませんでした。

おそらく問題の一部は、宣伝されていた 3.0.3 安定版をインストールする代わりに、アップデーターが 3.1.0 ベータ版をインストールしようとしたことかもしれません。

いずれにしても、私が現在 3.1.0 ベータ版をインストールしている唯一の理由は、Putty を使用して再構築したためであり、最新の安定版ではなく、最新のベータ版が取得されたためだと認識しています。

根本原因は、FIX: Update compatibility file for v3.1.0.beta1 and below by gschlager · Pull Request #178 · discourse/docker_manager · GitHub がマージされ次第修正されます。

「いいね!」 4