Fallo en la actualización de 2.9.0.beta14 a 3.1.0.beta

Me actualizo cada mes, siempre primero en algunos sistemas de desarrollo y luego en producción.

Durante el ciclo de este mes, la actualización falló en el primer sistema de desarrollo. docker_manager se actualizó correctamente, pero la actualización de Discourse falló con:

Lo sentimos, hubo un error al actualizar Discourse. Por favor, revise los registros a continuación.

La aplicación Discourse está completamente caída (muestra la página de error 500 “Oops”).

Esto es lo que contiene el registro en pantalla:

********************************************************
*** Por favor, sea paciente, los próximos pasos pueden tardar un tiempo ***
********************************************************
Cambiando Unicorn, para liberar memoria
Reiniciando unicorn pid: 50
Esperando a que Unicorn se recargue.
Esperando a que Unicorn se recargue..
Esperando a que Unicorn se recargue...
Esperando a que Unicorn se recargue....
Esperando a que Unicorn se recargue.....
Esperando a que Unicorn se recargue......
Esperando a que Unicorn se recargue.......
Esperando a que Unicorn se recargue........
Esperando a que Unicorn se recargue.........
Esperando a que Unicorn se recargue..........
Esperando a que Unicorn se recargue...........
Deteniendo 7 trabajadores de Unicorn, para liberar memoria
Deteniendo la cola de trabajos para recuperar memoria, el pid maestro es 4069
$ cd /var/www/discourse && git fetch --tags --force && git reset --hard HEAD@{upstream}
From https://github.com/discourse/discourse
 t [actualización de etiqueta]            latest-release -> latest-release
 * [nueva etiqueta]               v2.8.14        -> v2.8.14
 * [nueva etiqueta]               v3.0.0         -> v3.0.0
HEAD está ahora en 666536cbd1 DEV: Prefiere \A y \z sobre ^ y $ en regexes (#19936)
$ bundle install --deployment --jobs 4 --without test development
[OBSOLETO] El indicador `--deployment` está obsoleto porque depende de ser recordado en invocaciones de bundler, lo cual bundler ya no hará en versiones futuras. En su lugar, use `bundle config set --local deployment 'true'`, y deje de usar este indicador.
[OBSOLETO] El indicador `--without` está obsoleto porque depende de ser recordado en invocaciones de bundler, lo cual bundler ya no hará en versiones futuras. En su lugar, use `bundle config set --local without 'test development'`, y deje de usar este indicador.
Bundler 2.3.13 se está ejecutando, pero su lockfile fue generado con 2.4.1. Instalando Bundler 2.4.1 y reiniciando usando esa versión.
Obteniendo metadatos de gem de https://rubygems.org/.
Obteniendo bundler 2.4.1
Instalando bundler 2.4.1
[OBSOLETO] El indicador `--deployment` está obsoleto porque depende de ser recordado en invocaciones de bundler, lo cual bundler ya no hará en versiones futuras. En su lugar, use `bundle config set --local deployment 'true'`, y deje de usar este indicador.
[OBSOLETO] El indicador `--without` está obsoleto porque depende de ser recordado en invocaciones de bundler, lo cual bundler ya no hará en versiones futuras. En su lugar, use `bundle config set --local without 'test development'`, y deje de usar este indicador.
Obteniendo metadatos de gem de https://rubygems.org/.........
Obteniendo https://github.com/rails/sprockets
web-push-3.0.0 requiere la versión de ruby >= 3.0, que es incompatible con la
versión actual, 2.7.6
Docker Manager: FALLÓ AL ACTUALIZAR
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:209:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:93:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:20:in `block in fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `load'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command/base.rb:87:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command.rb:48:in `invoke'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands.rb:18:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
bin/rails:18:in `<main>'
Iniciando 7 trabajadores de Unicorn que se detuvieron inicialmente

Nunca antes había tenido un error de actualización, así que no estoy seguro de qué hacer a continuación. Y si esto hubiera sucedido en producción, ¿qué haría?

2 Me gusta

Te sugiero que compruebes qué versión del sistema operativo (distribución) estás ejecutando: podría ser que sea una versión antigua, que no tenga ruby 3, y ese sea el problema.

Editar: espera, no estoy seguro de si podría estar confundido. Para producción, todo sucede dentro de un contenedor Docker que debería tener todas las versiones correctas de todo. ¿Tienes algún otro tipo de configuración?

2 Me gusta

Para que conste, las cajas de desarrollo son Ubuntu 20.04 LTS. Creo que producción es 22.04 LTS.

Sin embargo, nunca he instalado Ruby en el sistema operativo. Creo que todo eso sucede automáticamente en el contenedor de Docker.

Corrección: Producción también está en 20.04 LTS.

1 me gusta

Sí, lo siento, creo que estaba confundido. No es raro tener que hacer una actualización desde la línea de comandos. ¿Has probado eso?

cd /var/discourse
git pull
./launcher rebuild app
6 Me gusta

Si esas son instalaciones de desarrollo, no serán representativas de una instalación de Docker en producción. Tu entorno de desarrollo tiene una versión antigua de Ruby (2.7), mientras que Discourse recientemente la actualizó a la 3.1 en la imagen.

¡Gracias! Recompilar la aplicación parece haber funcionado. Lo estoy probando en otro sistema de desarrollo antes de aplicar el parche a producción.

Para ser claros, por “desarrollo” me refiero simplemente a que son iguales a los de producción pero en sistemas de desarrollo internos.

1 me gusta

¿Se resolvió algo con una actualización a través de bash?

1 me gusta

¡Sí! Funcionó tanto en los sistemas de desarrollo como en producción. ¡Gracias!

3 Me gusta

Esto me sucede a mí también en mi producción.

De 2.9.0.beta14 (2b9fa41a6e) a 3.1.0.beta1

Fetching gem metadata from https://rubygems.org/.........
Fetching https://github.com/rails/sprockets
web-push-3.0.0 requiere una versión de ruby >= 3.0, que es incompatible con la
versión actual, 2.7.6
Docker Manager: FAILED TO UPGRADE
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:209:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:93:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:20:in `block in fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `load'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command/base.rb:87:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command.rb:48:in `invoke'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands.rb:18:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
bin/rails:18:in `<main>'
Spinning up 1 Unicorn worker(s) that were stopped initially

Resuelto con :point_up:

cd /var/discourse
git pull
./launcher rebuild app

Gracias

Mismo problema aquí, la actualización falló y dejó el foro con errores 500. Honestamente, me sorprende que este problema haya persistido durante 3 días hasta ahora.

De todos modos, estoy ejecutando una reconstrucción por CLI ahora, que espero que funcione. Si no, tomé una instantánea de la VM primero porque mi madre no crio a una tonta.

De esta publicación parece que actualizaron ruby a 3.0, lo que rompe por completo las actualizaciones web. Desafortunadamente, el software todavía permite a los usuarios intentarlo, y luego puedes ver qué tan rápido tu host puede servir errores HTTP 500.

Editar: La reconstrucción por CLI sí funcionó, ¡uf!

Errores relevantes:

Fetching gem metadata from https://rubygems.org/.........
Fetching https://github.com/rails/sprockets
web-push-3.0.0 requires ruby version >= 3.0, which is incompatible with the
current version, 2.7.6
Docker Manager: FAILED TO UPGRADE
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:209:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:93:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:20:in `block in fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/activesupport-7.0.3.1/lib/active_support/fork_tracker.rb:18:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `load'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command/base.rb:87:in `perform'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/command.rb:48:in `invoke'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/railties-7.0.3.1/lib/rails/commands.rb:18:in `<main>'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
bin/rails:18:in `<main>'
2 Me gusta

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