Estou tentando atualizar minha instalação do Discourse da tag de imagem 3.0.6 para 3.1.1, mas estou vendo o problema abaixo. Sei que estou usando o que é considerado uma instalação não suportada com o Bitnami Helm Chart em um cluster Kubernetes, mas estou completamente preso em como resolver.
O erro abaixo está sendo emitido quando tento atualizar de uma instalação padrão do Discourse (sem plugins adicionais) para a versão mais recente. Olhando no fórum, posso ver esta postagem - Upgrade failed (NoMethodError: undefined method `register_bookmarkable' for Bookmark:Class) - mas ela fala sobre o plugin discourse-data-explorer, que, como mencionado acima, não está instalado na instalação padrão do Bitnami Discourse.
Alguém pode ajudar?
Obrigado,
Steve
discourse 07:39:04.07 INFO ==> Running database migrations
rake aborted!
NoMethodError: undefined method `register_bookmarkable' for Bookmark:Class
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.5.1/lib/active_record/dynamic_matchers.rb:22:in `method_missing'
/opt/bitnami/discourse/plugins/chat/plugin.rb:261:in `block (2 levels) in activate!'
/opt/bitnami/discourse/lib/plugin/instance.rb:1351:in `reloadable_patch'
/opt/bitnami/discourse/plugins/chat/plugin.rb:250:in `block in activate!'
/opt/bitnami/discourse/lib/plugin/instance.rb:526:in `block in notify_after_initialize'
/opt/bitnami/discourse/lib/plugin/instance.rb:524:in `each'
/opt/bitnami/discourse/lib/plugin/instance.rb:524:in `notify_after_initialize'
/opt/bitnami/discourse/config/application.rb:230:in `each'
/opt/bitnami/discourse/config/application.rb:230:in `block (2 levels) in <class:Application>'
/opt/bitnami/discourse/lib/plugin.rb:6:in `initialization_guard'
/opt/bitnami/discourse/config/application.rb:230:in `block in <class:Application>'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.5.1/lib/active_support/lazy_load_hooks.rb:92:in `block in execute_hook'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.5.1/lib/active_support/lazy_load_hooks.rb:85:in `with_execution_control'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.5.1/lib/active_support/lazy_load_hooks.rb:90:in `execute_hook'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.5.1/lib/active_support/lazy_load_hooks.rb:76:in `block in run_load_hooks'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.5.1/lib/active_support/lazy_load_hooks.rb:75:in `each'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.5.1/lib/active_support/lazy_load_hooks.rb:75:in `run_load_hooks'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/application/finisher.rb:87:in `block in <module:Finisher>'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/initializable.rb:32:in `instance_exec'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/initializable.rb:32:in `run'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/initializable.rb:61:in `block in run_initializers'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/initializable.rb:60:in `run_initializers'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/application.rb:372:in `initialize!'
/opt/bitnami/discourse/config/environment.rb:7:in `<main>'
internal:/opt/bitnami/ruby/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb:38:in `require'
internal:/opt/bitnami/ruby/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb:38:in `require'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/zeitwerk-2.6.10/lib/zeitwerk/kernel.rb:38:in `require'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/application.rb:348:in `require_environment!'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/application.rb:506:in `block in run_tasks_blocks'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/opt/bitnami/ruby/bin/bundle:25:in `load'
/opt/bitnami/ruby/bin/bundle:25:in `<main>'
Acho que o primeiro recurso, se esta fosse uma atualização baseada na web, seria uma atualização de linha de comando - conecte-se via SSH ao seu host e execute
cd /var/discourse
git pull
./launcher rebuild app
(Presumindo que sua configuração se chame app.yml)
Editar: exceto que parece que /opt/bitnami/discourse é mais provável que seja o local da sua instalação. São diferenças como essa que levam à tag “unsupported-install” e ao conselho de entrar em contato com seu fornecedor.
Abri um chamado de suporte com a Bitnami e eles estão afirmando que é um problema com o asset, que neste caso é a imagem do Discourse. Perguntei se eles poderiam analisar novamente, pois uma atualização entre as versões do Helm Chart deles deveria ter sido testada pela Bitnami e quaisquer problemas que eles vissem teriam sido resolvidos entre a Bitnami e a equipe do Discourse.
Pergunta - o erro que estou vendo parece implicar que é do plugin Chat, que é um plugin oficialmente suportado - isso faz alguma diferença aqui em relação à equipe do Discourse analisar o erro?
Vou tentar desativá-lo e, em seguida, realizar a atualização e ver como isso acontece.
O plugin de chat está incluído. Se você também estiver instalando o plugin de chat (acho que ele ficou separado por um tempo?), esse pode ser o problema.
Existe uma maneira de desativar plugins principais na inicialização para que eu possa testar se o plugin de Chat é o problema?
O gráfico Bitnami me permite passar uma lista de plugins e ele executará o comando RAILS_ENV=production bundle exec rake plugin:install repo={{ $plugin }} para cada plugin que eu fornecer, MAS acho que isso será adicionado aos plugins principais.
Vou olhar novamente a instalação padrão - implantamos todos os nossos aplicativos de terceiros usando gráficos Helm em nosso cluster kubernetes, mas talvez faça sentido abrir uma exceção para o Discourse se o suporte a kubernetes e helm estiverem muito distantes.
Apenas uma rápida atualização, parece que realizar um upgrade de uma versão anterior à 3.0.0 permite que o upgrade funcione, ou seja, 2.8.11 → 3.0.6 → 3.1.1
Não tenho certeza se isso é um mero acidente ou não, mas tentar fazer o upgrade de 3.0.6 diretamente para 3.1.1 não funciona.
Curiosamente, o plugin de Chat nem sequer aparece na minha implantação do Discourse após este caminho de upgrade. Acredita-se que ele ainda seja tratado como um plugin externo em vez de fazer parte do produto principal.
Alguém sabe se o plugin de Chat está correto com este caminho de upgrade ou há algo muito errado que ele não esteja presente!
Vou verificar minha instalação novamente, mas nem vejo o sinalizador.
Também não vejo o código do plugin no servidor com esta atualização, enquanto se eu começar com a v3.0.6, tenho certeza que vejo, mas verificarei tudo.
@merefield - Acabei de verificar, se eu atualizar da versão 2.8.11 para 3.0.6 o plugin Chat não está disponível.
Como mencionado acima, estou usando o Bitnami Helm chart para implantar o Discourse, o que sei que não é suportado, mas o interessante é que se eu começar com a versão 3.0.6 o plugin Chat está presente.
Não fiz nada com o plugin de Chat, mas isso não quer dizer que os scripts que a Bitnami usa para construir sua versão da imagem do Discourse não o estejam impactando.
@stevejr Estou no mesmo aperto. Você conseguiu concluir sua atualização? Não consigo tentar o processo de atualização a partir da versão 2.8, como você sugeriu.
Infelizmente não. Não realizei nenhuma atualização e a resposta da Bitnami foi fazer um backup seguido por uma instalação completamente nova e, em seguida, restaurar.
Preciso testar isso completamente, pois não quero impactar nossa configuração de produção!
Tenho tentado variações dessa abordagem de uma instalação limpa seguida pela restauração a partir do backup, mas falha devido ao que parecem ser bugs na migração do banco de dados. Essas tentativas são feitas em uma implantação de desenvolvimento independente que é fácil de redefinir. O log de restauração mostra isto, por exemplo:
...
[2024-02-21 12:43:12] ALTER TABLE
[2024-02-21 12:43:12] Migrando o banco de dados...
[2024-02-21 12:43:16] EXCEPTION: /opt/bitnami/discourse/lib/discourse.rb:138:in `exec': Falha ao migrar o banco de dados.
rake aborted!
StandardError: Ocorreu um erro, esta e todas as migrações posteriores foram canceladas:
PG::DuplicateTable: ERRO: a relação \"sidebar_sections\" já existe
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/rack-mini-profiler-3.1.0/lib/patches/db/pg.rb:110:in `exec'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/rack-mini-profiler-3.1.0/lib/patches/db/pg.rb:110:in `async_exec'
...