./launcher rebuild app fallisce duramente 'bundle exec rake db:migrate' possibile problema con la rimozione di github/master repo di auth/oath2_authenticator

Ciao a tutti, questo è un appello di aiuto…

Ho provato a scavare e trovare la causa completa del problema sui miei server Ubuntu 20.x con Discourse in esecuzione da molto tempo. Sono tutti su AWS e funzionano perfettamente da quasi 3 anni. Improvvisamente nessuno di essi si ricostruisce. Ho ridotto il mio app.yml a un nucleo molto essenziale… ho cercato all’infinito… La mia attuale installazione in Postgres 13, Discourse 2.9.0 Beta 4 (rimango sempre aggiornato.) e sto eseguendo l’installazione basata su container/docker molto vanilla senza nulla di speciale (nessun container separato né installazioni standalone di altri software. Questo è solo uno dei miei tanti, tanti tentativi, ma ho notato che di recente nella codebase di Discourse hanno rimosso/rinominato auth/oauth2_authenticator in “ManagedAuthenticator e UserAssociatedAccount”

come si può vedere su: DEV: Deprecate OAuth2Authenticator and OAuth2UserInfo (#15427) · discourse/discourse@78d0ec3 · GitHub
Commenti nel repository su questo commit:
DEV: Deprecate OAuth2Authenticator e OAuth2UserInfo (#15427)

Questi sono stati sostituiti da ManagedAuthenticator e UserAssociatedAccount. Per maggiori informazioni, vedere Adding a new 'managed' authentication method to Discourse

Ecco i miei log verso la fine prima del fallimento (e sì, ho eseguito discourse-doctor che mi dà praticamente la stessa cosa… inoltre non sto eseguendo NGINX, cosa che ho visto essere un problema comune):

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 è già alla versione compatibile più recente
discourse-rss-polling è già alla versione compatibile più recente
discourse-assign è già alla versione compatibile più recente
discourse-azure-ad è già alla versione compatibile più recente
discourse-solved è già alla versione compatibile più recente
discourse-knowledge-explorer è già alla versione compatibile più recente
docker_manager è già alla versione compatibile più 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 &amp;&amp; su discourse -c 'bundle exec rake db:migrate' failed with return #&lt;Process::Status: pid 654 exit 1&gt;
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 Mi Piace

Ma sembra che non sia stato aggiornato per due anni? (o forse ho guardato quello sbagliato?) Quindi questo è probabilmente il tuo problema. Sospetto che ora ci sia qualche altra soluzione.

1 Mi Piace

Bene, il plugin azure-ad non è mantenuto ed è stato archiviato su GitHub. La migliore alternativa è probabilmente

(Le istruzioni per Azure AD si trovano in fondo a quel post)

4 Mi Piace

Questo è estremamente utile, quindi grazie, ma anche estremamente deludente poiché questo è già stato utilizzato e distribuito a molti, molti utenti. Questo plugin era semplice da usare e, poiché il plugin non era di terze parti, mi sentivo abbastanza sicuro che questa sarebbe stata almeno una soluzione semi-supportata in futuro. Sembra che se non avessero semplicemente rimosso/rinominato l’autenticatore auth/oauth2 dal repository invece di aggiungere solo un file o due e partire da lì, non avrei questo problema.

Naturalmente esaminerò l’utilizzo del plugin OpenID Connect Authentication, ma sarà un enorme lavoro implementarlo.

1 Mi Piace

Anche il codice ufficiale può essere ritirato, questo sembra più un problema con i tuoi processi di rilascio che con Discourse.

Se hai “molti molti utenti”, dovresti probabilmente considerare di eseguire tutti gli aggiornamenti attraverso una copia di staging del tuo sito. Aggiornare ciecamente un server di produzione senza prima dimostrare il processo è incredibilmente rischioso.

Grazie, non avrei aggiornato alla cieca il mio server di produzione ;). Ho diversi ambienti da testare a fondo prima.

Si tratta più di comunicare le modifiche dopo i test ed essere estremamente scrupolosi nell’individuare le differenze nella nuova configurazione.

1 Mi Piace

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