2.8.0.beta1からbeta4へのアップグレードでDB移行に失敗しますか?

こんにちは、

2.8.0.beta1 から beta4 へのアップグレードのために launcher rebuild を実行しています。

非公式プラグインはすべて無効化しましたが、どうやらバグはコア部分にあるようです。

単一コンテナビルド用の簡易な app.yaml は以下の通りです:

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
  - "templates/cloudflare.template.yml"

ビルドログ:


I, [2021-08-04T16:28:25.000925 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
NOTE: nokogumbo: Nokogiri が提供する Nokogiri::HTML5 を使用しています。詳細については https://github.com/sparklemotion/nokogiri/issues/2205 を参照してください。
rake aborted!
NoMethodError: undefined method `client_setting' for #<Class:0x0000560ce241d530>
Did you mean?  client_settings
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/zeitwerk-2.4.2/lib/zeitwerk/kernel.rb:34:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/dependencies.rb:332:in `block in require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/dependencies.rb:299:in `load_dependency'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/dependencies.rb:332:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.3.2/lib/rails/application.rb:360:in `require_environment!'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.3.2/lib/rails/application.rb:526:in `block in run_tasks_blocks'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Tasks: TOP => db:migrate => db:load_config => environment

また DB マイグレーションの問題でしょうか?

(See full trace by running task with --trace)
I, [2021-08-04T16:28:27.237146 #1]  INFO -- : 
I, [2021-08-04T16:28:27.237451 #1]  INFO -- : Terminating async processes
I, [2021-08-04T16:28:27.237485 #1]  INFO -- : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 57
I, [2021-08-04T16:28:27.237508 #1]  INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 174
2021-08-04 16:28:27.237 UTC [57] LOG:  received fast shutdown request
174:signal-handler (1628094507) Received SIGTERM scheduling shutdown...
2021-08-04 16:28:27.238 UTC [57] LOG:  aborting any active transactions
2021-08-04 16:28:27.240 UTC [57] LOG:  background worker "logical replication launcher" (PID 66) exited with exit code 1
2021-08-04 16:28:27.241 UTC [61] LOG:  shutting down
174:M 04 Aug 2021 16:28:27.263 # User requested shutdown...
174:M 04 Aug 2021 16:28:27.263 * Saving the final RDB snapshot before exiting.
174:M 04 Aug 2021 16:28:27.306 * DB saved on disk
174:M 04 Aug 2021 16:28:27.306 # Redis is now ready to exit, bye bye...
2021-08-04 16:28:27.311 UTC [57] LOG:  database system is shut down


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 3928 exit 1>
Location of failure: /pups/lib/pups/exec_command.rb:112:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
094fab4de06ec9e94ef5e3be53e68870df6add7eb7991dfe037198cf52de764f
** FAILED TO BOOTSTRAP ** please scroll up and look for earlier error messages, there may be more than one.
./discourse-doctor may help diagnose the problem.

Discourse のドキュメントを確認しましたが、問題の特定には至りませんでした。ビルドが失敗します。

ご助力いただければ幸いです!

よろしくお願いいたします、
Marius

そのバックトレースの前に数行追加で貼り付けていただけますか?

はい。

1:  rails_multisite (3.0.0) from /var/www/discourse/vendor/bundle/ruby/2.7.0/specifications/rails_multisite-3.0.0.gemspec
discourse-ember-rails 0.18.6 を使用しています
1:  discourse-ember-rails (0.18.6) from /var/www/discourse/vendor/bundle/ruby/2.7.0/specifications/discourse-ember-rails-0.18.6.gemspec
3:  nio4r (2.5.8) from /var/www/discourse/vendor/bundle/ruby/2.7.0/specifications/nio4r-2.5.8.gemspec
puma 5.4.0 を取得中
puma 5.4.0 をネイティブ拡張機能付きでインストール中
ネイティブ拡張機能をビルド中。これには時間がかかる場合があります...
1:  puma (5.4.0) from /var/www/discourse/vendor/bundle/ruby/2.7.0/specifications/puma-5.4.0.gemspec
0:  oj (3.12.3) from /var/www/discourse/vendor/bundle/ruby/2.7.0/specifications/oj-3.12.3.gemspec
2:  ffi (1.15.3) from /var/www/discourse/vendor/bundle/ruby/2.7.0/specifications/ffi-1.15.3.gemspec
mini_suffix 0.3.2 を使用しています
3:  mini_suffix (0.3.2) from /var/www/discourse/vendor/bundle/ruby/2.7.0/specifications/mini_suffix-0.3.2.gemspec
rbtrace 0.4.14 を使用しています
3:  rbtrace (0.4.14) from /var/www/discourse/vendor/bundle/ruby/2.7.0/specifications/rbtrace-0.4.14.gemspec
sassc 2.0.1 を使用しています
3:  sassc (2.0.1) from /var/www/discourse/vendor/bundle/ruby/2.7.0/specifications/sassc-2.0.1.gemspec
sassc-rails 2.1.2 を使用しています
2:  sassc-rails (2.1.2) from /var/www/discourse/vendor/bundle/ruby/2.7.0/specifications/sassc-rails-2.1.2.gemspec
Bundle 完了!126 個の Gemfile 依存関係、172 個の gem が現在インストールされています。
'test' および 'development' グループ内の gem はインストールされませんでした。
Bundled gem は `./vendor/bundle` にインストールされています。
rubyzip からのインストール後メッセージ:
RubyZip 3.0 が登場します!
**********************

一部の Rubyzip クラスのパブリック API が、オプション引数に対して名前付きパラメータを使用するように近代化されました。以下のクラスの使用方法を確認してください:
  * `Zip::File`
  * `Zip::Entry`
  * `Zip::InputStream`
  * `Zip::OutputStream`

3.0 がリリースされた際に予期せぬ破損を避けるため、Gemfiles および .gemspecs が適切に制限されていることを確認してください(例: ~> 2.3.0)。
詳細については https://github.com/rubyzip/rubyzip を参照してください。変更履歴には、バージョン 2.3.0 以降に実装されたその他の機能強化やバグ修正も記載されています。

I, [2021-08-04T17:23:05.372537 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake plugin:pull_compatible_all'
NOTE: nokogumbo: Nokogiri によって提供される Nokogiri::HTML5 を使用しています。詳細については https://github.com/sparklemotion/nokogiri/issues/2205 を参照してください。


I, [2021-08-04T17:23:07.700176 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
NOTE: nokogumbo: Nokogiri によって提供される Nokogiri::HTML5 を使用しています。詳細については https://github.com/sparklemotion/nokogiri/issues/2205 を参照してください。
rake が中止されました!
NoMethodError: undefined method `client_setting' for #<Class:0x000055fa73b18780>
意味のあるもの:  client_settings
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.3.2/lib/active_record/dynamic_matchers.rb:22:in `method_missing'
/var/www/discourse/plugins/discourse-tagging/plugin.rb:13:in `block in activate!'
/var/www/discourse/lib/plugin/instance.rb:447:in `block in notify_after_initialize'
/var/www/discourse/lib/plugin/instance.rb:445:in `each'
/var/www/discourse/lib/plugin/instance.rb:445:in `notify_after_initialize'
/var/www/discourse/config/application.rb:351:in `each'
/var/www/discourse/config/application.rb:351:in `block (2 levels) in <class:Application>'
/var/www/discourse/lib/plugin_initialization_guard.rb:5:in `plugin_initialization_guard'
/var/www/discourse/config/application.rb:350:in `block in <class:Application>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/lazy_load_hooks.rb:68:in `block in execute_hook'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/lazy_load_hooks.rb:61:in `with_execution_control'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/lazy_load_hooks.rb:66:in `execute_hook'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/lazy_load_hooks.rb:52:in `block in run_load_hooks'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/lazy_load_hooks.rb:51:in `each'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/lazy_load_hooks.rb:51:in `run_load_hooks'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.3.2/lib/rails/application/finisher.rb:140:in `block in <module:Finisher>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.3.2/lib/rails/initializable.rb:32:in `instance_exec'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.3.2/lib/rails/initializable.rb:32:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.3.2/lib/rails/initializable.rb:61:in `block in run_initializers'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.3.2/lib/rails/initializable.rb:60:in `run_initializers'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.3.2/lib/rails/application.rb:384:in `initialize!'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.3.2/lib/rails/railtie.rb:207:in `public_send'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.3.2/lib/rails/railtie.rb:207:in `method_missing'
/var/www/discourse/config/environment.rb:7:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.7.7/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.7.7/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:23:in `block in require_with_bootsnap_lfi'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.7.7/lib/bootsnap/load_path_cache/loaded_features_index.rb:92:in `register'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.7.7/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:22:in `require_with_bootsnap_lfi'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.7.7/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:31:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/zeitwerk-2.4.2/lib/zeitwerk/kernel.rb:34:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/dependencies.rb:332:in `block in require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/dependencies.rb:299:in `load_dependency'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.3.2/lib/active_support/dependencies.rb:332:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.3.2/lib/rails/application.rb:360:in `require_environment!'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-6.1.3.2/lib/rails/application.rb:526:in `block in run_tasks_blocks'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Tasks: TOP => db:migrate => db:load_config => environment
(--trace を付けてタスクを実行することで完全なトレースを確認できます)
I, [2021-08-04T17:23:11.177809 #1]  INFO -- : 
I, [2021-08-04T17:23:11.178039 #1]  INFO -- : 非同期プロセスを終了中
I, [2021-08-04T17:23:11.178063 #1]  INFO -- : HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 55 に INT を送信中
I, [2021-08-04T17:23:11.178098 #1]  INFO -- : exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 172 に TERM を送信中
172:signal-handler (1628097791) SIGTERM を受信し、シャットダウンをスケジュール中...
2021-08-04 17:23:11.178 UTC [55] LOG:  高速シャットダウン要求を受信しました
2021-08-04 17:23:11.179 UTC [55] LOG:  アクティブなトランザクションを中止中
2021-08-04 17:23:11.180 UTC [55] LOG:  バックグラウンドワーカー "logical replication launcher" (PID 64) が終了コード 1 で終了しました
2021-08-04 17:23:11.181 UTC [59] LOG:  シャットダウン中
2021-08-04 17:23:11.251 UTC [55] LOG:  データベースシステムがシャットダウンしました
172:M 04 Aug 2021 17:23:11.264 # ユーザーによるシャットダウン要求...
172:M 04 Aug 2021 17:23:11.264 * 終了前に最終 RDB スナップショットを保存中。
172:M 04 Aug 2021 17:23:11.300 * DB をディスクに保存しました
172:M 04 Aug 2021 17:23:11.300 # Redis は現在終了の準備ができています。さようなら...


失敗しました
--------------------
Pups::ExecError: cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate' が失敗しました。戻り値: #<Process::Status: pid 4010 exit 1>
失敗場所: /pups/lib/pups/exec_command.rb:112:in `spawn'
以下のパラメータで exec が失敗しました: {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
9a5092784c9c0a57bcd02f5750638b9f565840ca4c6afa3346860ff01ac3ab5d
** ブートストラップに失敗しました ** 上記にスクロールして、より早いエラーメッセージを確認してください。複数のエラーが存在する可能性があります。
./discourse-doctor で問題を診断できる場合があります。

このプラグインは2016年に廃止されました :scream:。app.yml から削除して、再構築してください。

ああ、なるほど :innocent:

問題解決しました。それは「触らないで」セクションにありましたね :slight_smile: