Сбой при обновлении с 2.8.0.beta1 до beta4 во время миграции БД?

Привет,

Я запускаю launcher rebuild для обновления с версии 2.8.0.beta1 до beta4.

Я отключил все неофициальные плагины, но, похоже, ошибка находится в ядре.

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::HTML5, предоставляемый Nokogiri. Дополнительную информацию см. по адресу 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

Снова похоже на миграцию базы данных?

(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 всё в порядке. Но сборка не проходит.

Буду рад любой помощи!

С уважением,
Мариус

Можешь добавить ещё несколько строк перед этим трассировкой стека?

Конечно.

1:  rails_multisite (3.0.0) из /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) из /var/www/discourse/vendor/bundle/ruby/2.7.0/specifications/discourse-ember-rails-0.18.6.gemspec
3:  nio4r (2.5.8) из /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) из /var/www/discourse/vendor/bundle/ruby/2.7.0/specifications/puma-5.4.0.gemspec
0:  oj (3.12.3) из /var/www/discourse/vendor/bundle/ruby/2.7.0/specifications/oj-3.12.3.gemspec
2:  ffi (1.15.3) из /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) из /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) из /var/www/discourse/vendor/bundle/ruby/2.7.0/specifications/rbtrace-0.4.14.gemspec
Используется sassc 2.0.1
3:  sassc (2.0.1) из /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) из /var/www/discourse/vendor/bundle/ruby/2.7.0/specifications/sassc-rails-2.1.2.gemspec
Сборка завершена! 126 зависимостей из Gemfile, установлено 172 gem-пакета.
Гемы в группах 'test' и 'development' не были установлены.
Собранные гемы установлены в `./vendor/bundle`
Сообщение после установки от rubyzip:
RubyZip 3.0 уже близко!
**********************

Публичный API некоторых классов Rubyzip был обновлён для использования именованных параметров для необязательных аргументов. Пожалуйста, проверьте использование следующих классов:
  * `Zip::File`
  * `Zip::Entry`
  * `Zip::InputStream`
  * `Zip::OutputStream`

Убедитесь, что ваши Gemfile и .gemspecs достаточно ограничены, чтобы избежать неожиданных сбоев при выпуске версии 3.0 (например, ~> 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'
ПРИМЕЧАНИЕ: nokogumbo: Используется Nokogiri::HTML5, предоставляемый Nokogiri. Дополнительную информацию см. на 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'
ПРИМЕЧАНИЕ: nokogumbo: Используется Nokogiri::HTML5, предоставляемый Nokogiri. Дополнительную информацию см. на https://github.com/sparklemotion/nokogiri/issues/2205.
Ошибка rake!
NoMethodError: метод `client_setting' не определен для #<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>'
Задачи: 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 -- : Отправка INT для 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
I, [2021-08-04T17:23:11.178098 #1]  INFO -- : Отправка TERM для exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 172
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:  фоновый рабочий "запуск логической репликации" (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 * База данных сохранена на диск
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'
Ошибка выполнения с параметрами {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
9a5092784c9c0a57bcd02f5750638b9f565840ca4c6afa3346860ff01ac3ab5d
** НЕ УДАЛОСЬ ЗАПУСТИТЬ ** пожалуйста, прокрутите вверх и поищите более ранние сообщения об ошибках; их может быть несколько.
./discourse-doctor может помочь в диагностике проблемы.

Этот плагин был устаревшим с 2016 года :scream:. Пожалуйста, удалите его из app.yml и пересоберите.

Ох, :innocent:

Проблема решена. Это было в разделе «не трогать» :slight_smile: