Erro de tempo de execução durante a atualização para v3.0.3

Acabei de responder a um e-mail de notificação de ‘atualização de um clique’ para uma nova versão de segurança e correção de bugs para 3.0.3, da minha versão atual 3.0.1.

A atualização inicial do Docker Manager ocorreu bem (de acordo com o relatório de progresso da atualização na página web de atualização), mas quando subsequentemente cliquei em ‘atualizar tudo’ para atualizar os componentes restantes do discourse que mostravam uma nova versão disponível, isso falhou, deixando meu site offline.

Estranhamente, o Docker Manager é mencionado novamente no relatório de progresso da atualização subsequente, mesmo que já tivesse sido atualizado separadamente - desta vez relatando que ‘Falha ao atualizar’ e ‘RuntimeError’.

Estou interpretando corretamente que isso se deveu a uma versão desatualizada do Ruby instalada em meu droplet Digital Ocean (v3.1, em vez de v3.2)? Se sim, eu esperava que qualquer nova dependência desse tipo tivesse sido mencionada nas notas de atualização (não foi um problema com atualizações anteriores), se não tratada de forma mais graciosa pelo instalador de um clique?

Abaixo estão os conteúdos daquela janela de relatório de progresso de atualização subsequente

********************************************************
*** Por favor, seja paciente, os próximos passos podem demorar um pouco ***
********************************************************
Ciclando Unicorn, para liberar memória
Reiniciando unicorn pid: 575
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.........
Usando net-protocol 0.2.1
Buscando addressable 2.8.4
Instalando addressable 2.8.4
Usando aws-sigv4 1.5.0
Usando openssl-signature_algorithm 1.3.0
Usando sprockets 3.7.2 de https://github.com/rails/sprockets (em 3.x@f4d3dae)
Usando request_store 1.5.1
Usando message_bus 4.3.2
Usando pry 0.14.2
Buscando rack-mini-profiler 3.1.0
Instalando rack-mini-profiler 3.1.0
Buscando rack-protection 3.0.6
Instalando rack-protection 3.0.6
Usando ecma-re-validator 0.4.0
Usando faraday 2.7.4
Usando image_optim 0.31.3
Usando logstash-logger 0.26.1
Usando mini_racer 0.6.3
Usando mini_suffix 0.3.3
Usando omniauth 1.9.2
Usando uglifier 4.2.0
Usando web-push 3.0.0
Usando sidekiq 6.5.8
Usando redis-namespace 1.10.0
Usando net-http 0.3.2
Usando oauth-tty 1.0.5
Usando snaky_hash 2.0.1
Usando activesupport 7.0.4.3
Buscando sass-embedded 1.62.0 (x86_64-linux-gnu)
Instalando sass-embedded 1.62.0 (x86_64-linux-gnu)
Usando rqrcode 2.1.2
Usando rss 0.2.9
Buscando tzinfo-data 1.2023.3
Instalando tzinfo-data 1.2023.3
Usando unf 0.1.4
Usando unicorn 6.1.0
Buscando loofah 2.20.0
Instalando loofah 2.20.0
Usando ruby-readability 0.7.0
Usando sanitize 6.0.1
Usando net-imap 0.3.4
Usando net-pop 0.1.2
Usando net-smtp 0.3.3
Usando css_parser 1.14.0
Usando aws-sdk-core 3.130.2
Usando cose 1.3.0
Usando pry-byebug 3.10.1
Usando pry-rails 0.3.9
Usando json_schemer 0.2.23
Usando faraday-retry 2.1.0
Usando oauth2 1.4.11
Usando rtlcss 0.2.0
Usando rails-dom-testing 2.0.3
Usando globalid 1.1.0
Usando activemodel 7.0.4.3
Usando mini_scheduler 0.15.0
Usando oauth 1.1.0
Usando dartsass-ruby 3.0.1
Usando rails-html-sanitizer 1.5.0
Buscando mail 2.8.1
Instalando mail 2.8.1
Usando aws-sdk-kms 1.56.0
Usando aws-sdk-sns 1.53.0
Usando actionview 7.0.4.3
Usando activejob 7.0.4.3
Usando active_model_serializers 0.8.4
Usando activerecord 7.0.4.3
Usando omniauth-oauth2 1.7.3
Usando omniauth-oauth 1.2.0
Usando aws-sdk-s3 1.114.0
Usando actionpack 7.0.4.3
Usando actionview_precompiler 0.2.3
Usando discourse-seed-fu 2.3.12
Usando omniauth-facebook 9.0.0
Usando omniauth-github 1.4.0
Usando omniauth-google-oauth2 0.8.2
Usando omniauth-twitter 1.4.0
Usando actionmailer 7.0.4.3
Usando railties 7.0.4.3
Usando sprockets-rails 3.4.2
Usando dartsass-sprockets 3.0.0
Usando lograge 0.12.0
Buscando rails_failover 1.0.0
Instalando rails_failover 1.0.0
Usando rails_multisite 4.0.1
Buscando puma 6.2.2
Instalando puma 6.2.2 com extensões nativas
Usando bootsnap 1.16.0
Usando rbtrace 0.4.14
Bundle completo! 136 dependências de Gemfile, 174 gems agora instalados.
Gems nos grupos 'test' e 'development' não foram instaladas.
Gems empacotadas são instaladas em './vendor/bundle'
$ yarn install --production
yarn install v1.22.19
[1/5] Validando package.json...
[2/5] Resolvendo pacotes...
[3/5] Buscando pacotes...
[4/5] Vinculando dependências...
warning " > @mixer/parallel-prettier@2.0.3" tem dependência de par não atendida "prettier@^2.0.0".
warning "eslint-config-discourse > eslint-plugin-lodash@7.1.0" tem dependência de par não atendida "lodash@>=4".
[5/5] Construindo pacotes novos...
$ 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] Resolvendo pacotes...
[2/4] Buscando pacotes...
[3/4] Vinculando dependências...
warning " > babel-plugin-debug-macros@0.4.0-pre1" tem dependência de par incorreta "@babel/core@^7.0.0".
warning "workspace-aggregator-61483bea-5d74-44aa-a245-abffc0a6319e > discourse > @uppy/aws-s3@3.0.6" tem dependência de par incorreta "@uppy/core@^3.1.2".
warning "workspace-aggregator-61483bea-5d74-44aa-a245-abffc0a6319e > discourse > @uppy/aws-s3-multipart@3.1.3" tem dependência de par incorreta "@uppy/core@^3.1.2".
warning "workspace-aggregator-61483bea-5d74-44aa-a245-abffc0a6319e > discourse > @uppy/xhr-upload@3.1.1" tem dependência de par incorreta "@uppy/core@^3.1.2".
[4/4] Construindo pacotes novos...
success Saved lockfile.
$ patch-package
patch-package 6.5.1
Aplicando patches...
@ember/jquery@2.0.0 ✔
vdom@2.1.1 ✔
Concluído em 23.96s.
Concluído em 40.79s.
$ LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all
Discourse requer Ruby 3.2 ou superior
Incapaz de buscar versões de plugin compatíveis
$ SKIP_POST_DEPLOYMENT_MIGRATIONS=1 bundle exec rake multisite:migrate
Discourse requer Ruby 3.2 ou superior
Docker Manager: FALHA AO ATUALIZAR
#<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>'
Iniciando 1 worker Unicorn(s) que foram parados inicialmente

Vou passar pelas etapas para reconstruir meu site via Putty, mas estou relatando o acima caso haja um bug com o instalador.

3 curtidas

Estou passando por algo semelhante. O fórum está parado no momento . . .

Saberei mais amanhã, quando não estiver caindo de sono. Acho que isso é um “concordo plenamente”.

-Walker

1 curtida

Você precisa baixar uma nova versão da imagem Docker.

A propósito - esse erro só ocorre em 3.1.0.beta4 e superior, não em 3.0.3 stable.

2 curtidas

Parece que o gerenciador do Docker precisa saber que não pode fazer um upgrade, certo? Ele deveria exigir uma reconstrução pela linha de comando após ser atualizado. Eu pensei ter visto um aumento de versão nos commits há um tempo, mas acho que estou errado sobre isso.

Então você precisará

./launcher rebuild app

4 curtidas

Obrigado - sim, o problema foi resolvido para mim quando reconstruí via Putty.

1 curtida

Sim, isso aconteceu bem recentemente. Update minimum image version for Ruby 3.2 (#176) · discourse/docker_manager@7e7b6b5 · GitHub

O Docker Manager deve solicitar uma reconstrução da linha de comando quando esse requisito não for atendido. :thinking:

4 curtidas

Então, talvez haja algum bug ou regressão? Mas acho que vocês estão verificando isso. Parece um bug se o gerenciador do docker não sabe que não pode ter sucesso.

3 curtidas

Você pode confirmar essas versões? Como @RGJ disse em uma postagem abaixo, as versões estáveis não exigem Ruby 3.2, então você não deve ver esses erros ao atualizar no branch estável.

Você tentou, por acaso, atualizar da v3.1.0.beta1 (ou uma versão ainda mais antiga) para a v3.1.0.beta4?

O problema é que estamos fixando o docker_manager em uma versão antiga para o Discourse v3.1.0.beta1 e anteriores. Você verá algo assim.

A atualização para a v3.1.0.beta4 exigirá Ruby 3.2, mas há uma chance de que você esteja executando uma imagem Docker que ainda não veio com Ruby 3.2. O antigo docker_manager acha que isso é bom, então permite que você atualize na interface do usuário, quando deveria solicitar uma reconstrução da CLI.

Estou no processo de reproduzir o problema. Acho que a correção será fazer alterações na versão fixada, para que ela solicite uma reconstrução da CLI. Tentarei apresentar uma correção…

2 curtidas

Vi isso para dois sites ontem que estão em testes aprovados. Não tenho certeza da versão de onde eles estavam atualizando. Desculpe por não ter dados melhores.

1 curtida

Não tenho certeza agora que a atualização foi concluída - mas acho que pode ter sido uma versão beta 3.0.1 que eu estava atualizando ** editar ** - NÃO uma beta 3.10

1 curtida

Espere. Você não pode ir de uma versão beta 3.1 para a versão estável 3.0.3?

Ok, a versão mudou novamente, mas tenho certeza de que estava tentando atualizar de 3.0.1 (possivelmente um beta) para 3.0.3 estável, que naquele momento parecia ser a opção estável mais recente. Vejo que depois que isso falhou e eu reconstruí no Putty, o resultado pulou a versão pretendida 3.0.3 e, na verdade, instalou uma 3.1.0 beta 4.

Sim, isso falhou, porque você não pode ir de 3.1 beta para 3.0 estável.

Eu não comecei na versão beta 3.1. Comecei na versão beta 3.0.1.

Não existe 3.01, é 3.0.1 ou 3.1.0.
Mas não importa realmente. Sua situação aconteceu porque você estava indo para a versão beta4 do 3.1.0.

1 curtida

Este é o meu ponto - comecei com a versão beta 3.0.1, e a notificação de atualização de um clique enviada por e-mail era para a versão estável 3.0.3 - que falhou na atualização. Naquele momento, eu não tinha recebido a opção de ir para a versão beta 3.1.0.

Talvez parte do problema tenha sido que, em vez de instalar a versão estável 3.0.3 ‘anunciada’, o atualizador tentou instalar a versão beta 3.1.0?

De qualquer forma, até onde sei, a única razão pela qual tenho a versão beta 3.1.0 instalada agora é devido à reconstrução via Putty, que puxou a versão beta mais recente, não a versão estável mais recente.

A causa raiz será corrigida assim que FIX: Update compatibility file for v3.1.0.beta1 and below by gschlager · Pull Request #178 · discourse/docker_manager · GitHub for mesclada.

4 curtidas