./launcher rebuild app falha gravemente 'bundle exec rake db:migrate' possível problema com a remoção do repositório github/master de auth/oath2_authenticator

Olá a todos, este é um pedido de ajuda…

Tentei pesquisar e encontrar a causa completa do problema em meus longos rodando Ubuntu 20.x ec2’s com Discourse. Todos eles estão na AWS e estão funcionando perfeitamente há quase 3 anos. De repente, nenhum deles consegue ser reconstruído. Reduzi meu app.yml a um mínimo… pesquisei sem parar… Minha instalação atual em Postgres 13, Discourse 2.9.0 Beta 4 (sempre me mantenho atualizado) e estou executando a instalação padrão baseada em container/docker sem nada especial (sem containers separados nem instalações autônomas de qualquer outro software. Esta é apenas uma de muitas, muitas suposições, mas notei que recentemente na base de código do Discourse eles removeram/renomearam auth/oauth2_authenticator para “ManagedAuthenticator e UserAssociatedAccount”

como pode ser visto em: DEV: Deprecate OAuth2Authenticator and OAuth2UserInfo (#15427) · discourse/discourse@78d0ec3 · GitHub
Comentários no repositório sobre este commit:
DEV: Deprecate OAuth2Authenticator e OAuth2UserInfo (#15427)

Estes foram substituídos por ManagedAuthenticator e UserAssociatedAccount. Para mais informações, consulte Adding a new 'managed' authentication method to Discourse

Aqui estão meus logs perto do final antes da falha (e sim, executei o discourse-doctor que me dá praticamente a mesma coisa… Eu também não estou executando NGINX, o que eu vi ser um problema comum):

I, [2022-05-17T21:26:52.663629 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all'
I, [2022-05-17T21:26:54.697333 #1]  INFO -- : discourse-chat-integration já está na versão compatível mais recente
discourse-rss-polling já está na versão compatível mais recente
discourse-assign já está na versão compatível mais recente
discourse-azure-ad já está na versão compatível mais recente
discourse-solved já está na versão compatível mais recente
discourse-knowledge-explorer já está na versão compatível mais recente
docker_manager já está na versão compatível mais recente

I, [2022-05-17T21:26:54.697677 #1]  INFO -- : > cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
rake aborted!
LoadError: cannot load such file -- auth/oauth2_authenticator
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.11.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:15:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.11.1/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:15:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/zeitwerk-2.5.4/lib/zeitwerk/kernel.rb:35:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3/lib/active_support/dependencies/require_dependency.rb:21:in `require_dependency'
/var/www/discourse/lib/require_dependency_backward_compatibility.rb:18:in `require_dependency'
/var/www/discourse/plugins/discourse-azure-ad/plugin.rb:7:in `activate!'
/var/www/discourse/lib/plugin/instance.rb:679:in `instance_eval'
/var/www/discourse/lib/plugin/instance.rb:679:in `activate!'
/var/www/discourse/lib/discourse.rb:279:in `block in activate_plugins!'
/var/www/discourse/lib/discourse.rb:276:in `each'
/var/www/discourse/lib/discourse.rb:276:in `activate_plugins!'
/var/www/discourse/config/application.rb:222:in `block in <class:Application>'
/var/www/discourse/lib/plugin.rb:6:in `initialization_guard'
/var/www/discourse/config/application.rb:221:in `<class:Application>'
/var/www/discourse/config/application.rb:81:in `<module:Discourse>'
/var/www/discourse/config/application.rb:80:in `<top (required)>'
/var/www/discourse/Rakefile:7:in `require'
/var/www/discourse/Rakefile:7:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
(See full trace by running task with --trace)
I, [2022-05-17T21:26:55.807801 #1]  INFO -- :
I, [2022-05-17T21:26:55.808466 #1]  INFO -- : Terminating async processes
I, [2022-05-17T21:26:55.808709 #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: 44
I, [2022-05-17T21:26:55.808935 #1]  INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 105
2022-05-17 21:26:55.808 UTC [44] LOG:  received fast shutdown request
105:signal-handler (1652822815) Received SIGTERM scheduling shutdown...
2022-05-17 21:26:55.810 UTC [44] LOG:  aborting any active transactions
2022-05-17 21:26:55.815 UTC [44] LOG:  background worker "logical replication launcher" (PID 53) exited with exit code 1
2022-05-17 21:26:55.816 UTC [48] LOG:  shutting down
2022-05-17 21:26:55.851 UTC [44] LOG:  database system is shut down
105:M 17 May 2022 21:26:55.894 # User requested shutdown...
105:M 17 May 2022 21:26:55.894 * Saving the final RDB snapshot before exiting.
105:M 17 May 2022 21:26:55.940 * DB saved on disk
105:M 17 May 2022 21:26:55.941 # Redis is now ready to exit, bye bye...

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 654 exit 1>
Location of failure: /usr/local/lib/ruby/gems/2.7.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 1
** 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.
c961e72970eba95a26f294e0f123987c40da1c350a4b1fe9621edf0bd665720c
1 curtida

Mas parece que não foi atualizado em dois anos? (ou talvez eu tenha olhado o errado?) Então este é provavelmente o seu problema. Suspeito que agora exista alguma outra solução.

1 curtida

Certo, o plugin azure-ad não é mantido e foi arquivado no GitHub. A melhor alternativa é provavelmente

(Instruções do Azure AD estão no final dessa postagem)

4 curtidas

Isso é extremamente útil, então obrigado, mas também extremamente decepcionante, pois isso já foi usado e implementado com muitos e muitos usuários. Este plugin era simples de usar e, como o plugin não era de terceiros, senti-me bastante confiante de que seria pelo menos uma solução semi-suportada no futuro. Parece que se eles não tivessem simplesmente arrancado/renomeado o auth/oauth2_authenticator do repositório em vez de apenas adicionar um ou dois arquivos e seguir em frente, eu não estaria tendo esse problema.

Claro que vou procurar usar o OpenID Connect Authentication Plugin, mas será um trabalho enorme implementá-lo.

1 curtida

Mesmo o código oficial pode ser desativado, isso parece mais um problema com seus processos de lançamento do que qualquer coisa relacionada ao Discourse.

Se você tem ‘muitos, muitos usuários’, provavelmente deveria considerar executar todas as atualizações através de uma cópia de staging do seu site. Atualizar cegamente um servidor de produção sem antes provar o processo é incrivelmente arriscado.

Obrigado, eu não ia atualizar meu servidor de produção cegamente ;). Tenho vários ambientes para testar minuciosamente primeiro.

Trata-se mais de comunicar as mudanças após os testes e ser super minucioso ao procurar diferenças na nova configuração.

1 curtida

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