Eu faço upgrade todo mês, sempre primeiro em alguns sistemas de desenvolvimento e depois em produção.
Durante o ciclo deste mês, o upgrade falhou no 1º sistema de desenvolvimento. O docker_manager foi atualizado com sucesso, mas o upgrade do Discourse falhou com:
Desculpe, ocorreu um erro ao atualizar o Discourse. Por favor, verifique os logs abaixo.
O aplicativo Discourse está completamente inativo (está exibindo a página de erro 500 “Oops”).
Aqui está o que o log na tela contém:
********************************************************
*** Por favor, seja paciente, os próximos passos podem demorar um pouco ***
********************************************************
Ciclagem do Unicorn, para liberar memória
Reiniciando o pid do unicorn: 50
Aguardando o Unicorn recarregar.
Aguardando o Unicorn recarregar..
Aguardando o Unicorn recarregar...
Aguardando o Unicorn recarregar....
Aguardando o Unicorn recarregar.....
Aguardando o Unicorn recarregar......
Aguardando o Unicorn recarregar.......
Aguardando o Unicorn recarregar........
Aguardando o Unicorn recarregar.........
Aguardando o Unicorn recarregar..........
Aguardando o Unicorn recarregar...........
Parando 7 workers do Unicorn, para liberar memória
Parando a fila de trabalhos para recuperar memória, o pid mestre é 4069
$ cd /var/www/discourse && git fetch --tags --force && git reset --hard HEAD@{upstream}
From https://github.com/discourse/discourse
t [atualização de tag] latest-release -> latest-release
* [nova tag] v2.8.14 -> v2.8.14
* [nova tag] v3.0.0 -> v3.0.0
HEAD agora está em 666536cbd1 DEV: Preferir \A e \z em vez de ^ e $ em regexes (#19936)
$ bundle install --deployment --jobs 4 --without test development
[DEPRECATED] A flag `--deployment` está obsoleta porque depende de ser lembrada entre invocações do bundler, o que o bundler não fará mais em versões futuras. Em vez disso, use `bundle config set --local deployment 'true'`, e pare de usar esta flag
[DEPRECATED] A flag `--without` está obsoleta porque depende de ser lembrada entre invocações do bundler, o que o bundler não fará mais em versões futuras. Em vez disso, use `bundle config set --local without 'test development'`, e pare de usar esta flag
Bundler 2.3.13 está em execução, mas seu lockfile foi gerado com 2.4.1. Instalando Bundler 2.4.1 e reiniciando usando essa versão.
Buscando metadados do gem de https://rubygems.org/.
Buscando bundler 2.4.1
Instalando bundler 2.4.1
[DEPRECATED] A flag `--deployment` está obsoleta porque depende de ser lembrada entre invocações do bundler, o que o bundler não fará mais em versões futuras. Em vez disso, use `bundle config set --local deployment 'true'`, e pare de usar esta flag
[DEPRECATED] A flag `--without` está obsoleta porque depende de ser lembrada entre invocações do bundler, o que o bundler não fará mais em versões futuras. Em vez disso, use `bundle config set --local without 'test development'`, e pare de usar esta flag
Buscando metadados do gem de https://rubygems.org/.........
Buscando https://github.com/rails/sprockets
web-push-3.0.0 requer a versão ruby >= 3.0, que é incompatível com a
versão atual, 2.7.6
Docker Manager: FALHA AO ATUALIZAR
#<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>'
Iniciando 7 workers do Unicorn que foram parados inicialmente
Nunca tive um erro de upgrade antes, então não sei o que fazer a seguir. E se isso tivesse acontecido em produção, o que eu faria?