Falha na atualização de 2.9.0.beta14 para 3.1.0.beta

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?

2 curtidas

Sugiro que você verifique qual versão do sistema operacional (distribuição) você está executando: pode ser que seja uma versão antiga, não tenha ruby 3, e esse seja o problema.

Editar: espere, não tenho certeza se posso estar confuso. Para produção, tudo acontece dentro de um contêiner Docker que deve ter todas as versões corretas de tudo. Você tem algum outro tipo de configuração?

2 curtidas

Para que conste, as caixas de desenvolvimento são Ubuntu 20.04 LTS. Acredito que a produção seja 22.04 LTS.

No entanto, nunca instalei Ruby no sistema operacional. Acho que tudo isso acontece magicamente no contêiner docker.

Correção: A produção também está em 20.04 LTS.

1 curtida

Sim, desculpe, acho que me confundi. Não é incomum precisar fazer um upgrade pela linha de comando - você já tentou isso?

cd /var/discourse
git pull
./launcher rebuild app
6 curtidas

Se essas forem instalações de desenvolvimento, elas não serão representativas de uma instalação docker de produção. Seu ambiente de desenvolvimento tem uma versão antiga do ruby (2.7), enquanto o Discourse recentemente atualizou para 3.1 na imagem.

Obrigado! Recompilar o aplicativo parece ter funcionado. Estou testando isso em outro sistema de desenvolvimento antes de aplicar o patch na produção.

Para ser claro, por “desenvolvimento” eu simplesmente quero dizer que eles são como produção, mas em sistemas de desenvolvimento internos.

1 curtida

Uma atualização via bash resolveu as coisas?

1 curtida

Sim! Funcionou em ambos os sistemas de desenvolvimento e em produção também. Obrigado!

3 curtidas

Isso também acontece comigo em produção.

De 2.9.0.beta14 (2b9fa41a6e) para 3.1.0.beta1

Fetching gem metadata from https://rubygems.org/.........
Fetching https://github.com/rails/sprockets
web-push-3.0.0 requer 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>'
Spinning up 1 Unicorn worker(s) that were stopped initially

Resolvido com :point_up:

cd /var/discourse
git pull
./launcher rebuild app

Obrigado

Mesmo problema aqui, a atualização falhou e destruiu o fórum com erros 500. Honestamente, estou surpreso que esse problema tenha persistido por 3 dias até agora.

De qualquer forma, estou executando uma reconstrução via CLI agora, o que espero que funcione. Se não, tirei um snapshot da VM primeiro porque minha mãe não criou um tolo.

Deste post, parece que eles atualizaram o ruby para 3.0, o que quebra completamente as atualizações pela web. Infelizmente, o software ainda permite que os usuários tentem, e então você pode ver com que rapidez seu host pode servir erros HTTP 500.

Edição: A reconstrução via CLI realmente funcionou, ufa!

Erros relevantes:

Fetching gem metadata from https://rubygems.org/.........
Fetching https://github.com/rails/sprockets
web-push-3.0.0 requires ruby version >= 3.0, which is incompatible with the
current version, 2.7.6
Docker Manager: FAILED TO UPGRADE
#<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>'
2 curtidas

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.