./launcher reconstruye la aplicación falla gravemente 'bundle exec rake db:migrate' posible problema con la eliminación del repositorio github/master de auth/oath2_authenticator

Hola a todos, esto es una llamada de ayuda…

He intentado investigar y encontrar la causa completa del problema en mis instancias de Ubuntu 20.x con Discourse que llevan mucho tiempo funcionando. Todas están en AWS y han estado funcionando perfectamente durante casi 3 años. De repente, ninguna de ellas se reconstruye. He reducido mi app.yml a lo más básico… he buscado sin parar… Mi instalación actual en Postgres 13, Discourse 2.9.0 Beta 4 (siempre me mantengo al día) y estoy ejecutando la instalación basada en contenedor/docker muy básica sin nada especial (sin contenedores separados ni instalaciones independientes de ningún otro software. Esta es solo una de mis muchas suposiciones, pero noté que recientemente en la base de código de Discourse eliminaron/renombraron auth/oauth2_authenticator a “ManagedAuthenticator y UserAssociatedAccount”.

como se puede ver en: DEV: Deprecate OAuth2Authenticator and OAuth2UserInfo (#15427) · discourse/discourse@78d0ec3 · GitHub
Comentarios en el repositorio sobre este commit:
DEV: Deprecate OAuth2Authenticator and OAuth2UserInfo (#15427)

Estos han sido reemplazados por ManagedAuthenticator y UserAssociatedAccount. Para más información, ver Adding a new 'managed' authentication method to Discourse

Aquí están mis logs cerca del final antes del fallo (y sí, he ejecutado discourse-doctor que me da prácticamente lo mismo… Tampoco estoy ejecutando NGINX, lo cual he visto que es un problema común):

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 ya está en la última versión compatible
discourse-rss-polling ya está en la última versión compatible
discourse-assign ya está en la última versión compatible
discourse-azure-ad ya está en la última versión compatible
discourse-solved ya está en la última versión compatible
discourse-knowledge-explorer ya está en la última versión compatible
docker_manager ya está en la última versión 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 me gusta

¿Pero parece que no se ha actualizado en dos años? (¿o tal vez miré el incorrecto?) Así que este es probablemente tu problema. Sospecho que ahora hay alguna otra solución.

1 me gusta

Bien, el plugin azure-ad no se mantiene y ha sido archivado en GitHub. La mejor alternativa es probablemente

(Las instrucciones de Azure AD están al final de esa publicación)

4 Me gusta

Esto es extremadamente útil, así que gracias, pero también extremadamente decepcionante, ya que esto ya se ha utilizado y se ha implementado con muchos, muchos usuarios. Este plugin era fácil de usar y, dado que el plugin no es de terceros, me sentí bastante seguro de que sería al menos una solución semisuportada en el futuro. Parece que si no hubieran eliminado/renombrado el autenticador auth/oauth2 del repositorio en lugar de simplemente agregar uno o dos archivos y seguir adelante, no estaría teniendo este problema.

Por supuesto, investigaré el uso del plugin de autenticación OpenID Connect, pero será un gran trabajo implementarlo.

1 me gusta

Incluso el código oficial puede ser retirado, esto suena más a un problema con sus procesos de lanzamiento que con algo relacionado con Discourse.

Si tiene ‘muchos, muchos usuarios’, probablemente debería considerar ejecutar todas las actualizaciones a través de una copia de staging de su sitio. Actualizar ciegamente un servidor de producción sin haber probado primero el proceso es increíblemente arriesgado.

Gracias, no iba a actualizar mi servidor de producción a ciegas ;). Tengo varios entornos para probar a fondo primero.

Se trata más de comunicar los cambios después de las pruebas y ser muy minucioso al buscar diferencias en la nueva configuración.

1 me gusta

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