./launcher rebuild app échoue durement 'bundle exec rake db:migrate' problème possible avec la suppression du dépôt github/master de auth/oath2_authenticator

Bonjour à tous, ceci est un appel à l’aide…

J’ai essayé de creuser et de trouver la source complète du problème sur mes instances Ubuntu 20.x avec Discourse qui fonctionnent depuis longtemps. Elles sont toutes sur AWS et fonctionnent parfaitement depuis près de 3 ans maintenant. Soudainement, aucune d’entre elles ne peut être reconstruite. J’ai réduit mon fichier app.yml à sa plus simple expression… J’ai cherché sans fin… Mon installation actuelle utilise Postgres 13, Discourse 2.9.0 Beta 4 (je reste toujours à jour) et j’utilise l’installation de base via conteneur/docker sans rien de fantaisiste (pas de conteneurs séparés ni d’installations autonomes d’autres logiciels. Ceci n’est qu’une de mes nombreuses suppositions, mais j’ai remarqué que récemment, dans la base de code de Discourse, ils ont supprimé/renommé auth/oauth2_authenticator en “ManagedAuthenticator et UserAssociatedAccount”.

comme on peut le voir ici : DEV: Deprecate OAuth2Authenticator and OAuth2UserInfo (#15427) · discourse/discourse@78d0ec3 · GitHub
Commentaires dans le dépôt concernant ce commit :
DEV : Déprécation de OAuth2Authenticator et OAuth2UserInfo (#15427)

Ceux-ci ont été remplacés par ManagedAuthenticator et UserAssociatedAccount. Pour plus d’informations, voir Adding a new 'managed' authentication method to Discourse

Voici mes logs vers la fin avant l’échec (et oui, j’ai exécuté discourse-doctor qui me donne à peu près la même chose… Je n’utilise pas non plus NGINX, ce que j’ai vu être un problème courant) :

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 est déjà à la dernière version compatible
discourse-rss-polling est déjà à la dernière version compatible
discourse-assign est déjà à la dernière version compatible
discourse-azure-ad est déjà à la dernière version compatible
discourse-solved est déjà à la dernière version compatible
discourse-knowledge-explorer est déjà à la dernière version compatible
docker_manager est déjà à la dernière version compatible

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 « J'aime »

Mais il semble qu’il n’ait pas été mis à jour depuis deux ans ? (ou peut-être que je me suis trompé de version ?) C’est donc probablement votre problème. Je soupçonne qu’il existe maintenant une autre solution.

1 « J'aime »

Le plugin azure-ad n’est plus maintenu et a été archivé sur GitHub. La meilleure alternative est probablement

(Les instructions pour Azure AD se trouvent en bas de ce message)

4 « J'aime »

C’est extrêmement utile, donc merci, mais aussi extrêmement décevant car cela a déjà été utilisé et déployé auprès de nombreux utilisateurs. Ce plugin était simple à utiliser et, comme il ne s’agissait pas d’un plugin tiers, je me sentais assez confiant quant à sa prise en charge future, au moins partielle. Il semble que s’ils n’avaient pas simplement retiré/renommé l’authentificateur auth/oauth2_authenticator du dépôt au lieu de simplement ajouter un ou deux fichiers et de continuer à partir de là, je n’aurais pas ce problème.

Bien sûr, j’examinerai l’utilisation du plugin d’authentification OpenID Connect, mais ce sera un travail énorme à mettre en œuvre.

1 « J'aime »

Même le code officiel peut être retiré, cela ressemble plus à un problème avec vos processus de publication qu’à quoi que ce soit lié à Discourse.

Si vous avez « de très nombreux utilisateurs », vous devriez probablement envisager d’exécuter toutes les mises à jour via une copie de staging de votre site. La mise à niveau aveugle d’un serveur de production sans avoir d’abord prouvé le processus est incroyablement risquée.

Merci, je n’allais pas mettre à niveau mon serveur de production à l’aveugle ;). J’ai pas mal d’environnements à tester minutieusement d’abord.

Il s’agit plutôt de communiquer les changements après les tests et d’être très minutieux dans la recherche des différences dans la nouvelle configuration.

1 « J'aime »

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