Error de tiempo de ejecución durante la actualización a v3.0.3

Acabo de responder a una notificación por correo electrónico de “actualización de un clic” de una nueva versión de seguridad y corrección de errores a la 3.0.3, desde mi versión actual 3.0.1.

La actualización inicial de Docker Manager se realizó correctamente (según el informe de progreso de la actualización en la página web de actualización), pero cuando posteriormente hice clic en “actualizar todo” para actualizar los componentes restantes de Discourse que mostraban una nueva versión disponible, esto falló, dejando mi sitio sin conexión.

Curiosamente, Docker Manager se menciona nuevamente aquí en el informe de progreso de actualización posterior, a pesar de que ya se había actualizado por separado, esta vez informando que “No se pudo actualizar” y “RuntimeError”.

¿Interpreto correctamente que esto se debió a una versión obsoleta de Ruby instalada en mi droplet de Digital Ocean (v3.1, en lugar de v3.2)? Si es así, esperaba que cualquier dependencia nueva de este tipo se hubiera mencionado en las notas de actualización (no fue un problema con la actualización anterior), si no se hubiera manejado de manera más elegante por el instalador de un clic.

A continuación se muestran los contenidos de esa ventana de informe de progreso de actualización posterior:

********************************************************
*** Please be patient, next steps might take a while ***
********************************************************
Cycling Unicorn, to free up memory
Restarting unicorn pid: 575
Waiting for Unicorn to reload.
Waiting for Unicorn to reload..
Waiting for Unicorn to reload...
Waiting for Unicorn to reload....
Waiting for Unicorn to reload.....
Waiting for Unicorn to reload......
Waiting for Unicorn to reload.......
Waiting for Unicorn to reload........
Waiting for Unicorn to reload.........
Using net-protocol 0.2.1
Fetching addressable 2.8.4
Installing addressable 2.8.4
Using aws-sigv4 1.5.0
Using openssl-signature_algorithm 1.3.0
Using sprockets 3.7.2 from https://github.com/rails/sprockets (at 3.x@f4d3dae)
Using request_store 1.5.1
Using message_bus 4.3.2
Using pry 0.14.2
Fetching rack-mini-profiler 3.1.0
Installing rack-mini-profiler 3.1.0
Fetching rack-protection 3.0.6
Installing rack-protection 3.0.6
Using ecma-re-validator 0.4.0
Using faraday 2.7.4
Using image_optim 0.31.3
Using logstash-logger 0.26.1
Using mini_racer 0.6.3
Using mini_suffix 0.3.3
Using omniauth 1.9.2
Using uglifier 4.2.0
Using web-push 3.0.0
Using sidekiq 6.5.8
Using redis-namespace 1.10.0
Using net-http 0.3.2
Using oauth-tty 1.0.5
Using snaky_hash 2.0.1
Using activesupport 7.0.4.3
Fetching sass-embedded 1.62.0 (x86_64-linux-gnu)
Installing sass-embedded 1.62.0 (x86_64-linux-gnu)
Using rqrcode 2.1.2
Using rss 0.2.9
Fetching tzinfo-data 1.2023.3
Installing tzinfo-data 1.2023.3
Using unf 0.1.4
Using unicorn 6.1.0
Fetching loofah 2.20.0
Installing loofah 2.20.0
Using ruby-readability 0.7.0
Using sanitize 6.0.1
Using net-imap 0.3.4
Using net-pop 0.1.2
Using net-smtp 0.3.3
Using css_parser 1.14.0
Using aws-sdk-core 3.130.2
Using cose 1.3.0
Using pry-byebug 3.10.1
Using pry-rails 0.3.9
Using json_schemer 0.2.23
Using faraday-retry 2.1.0
Using oauth2 1.4.11
Using rtlcss 0.2.0
Using rails-dom-testing 2.0.3
Using globalid 1.1.0
Using activemodel 7.0.4.3
Using mini_scheduler 0.15.0
Using oauth 1.1.0
Using dartsass-ruby 3.0.1
Using rails-html-sanitizer 1.5.0
Fetching mail 2.8.1
Installing mail 2.8.1
Using aws-sdk-kms 1.56.0
Using aws-sdk-sns 1.53.0
Using actionview 7.0.4.3
Using activejob 7.0.4.3
Using active_model_serializers 0.8.4
Using activerecord 7.0.4.3
Using omniauth-oauth2 1.7.3
Using omniauth-oauth 1.2.0
Using aws-sdk-s3 1.114.0
Using actionpack 7.0.4.3
Using actionview_precompiler 0.2.3
Using discourse-seed-fu 2.3.12
Using omniauth-facebook 9.0.0
Using omniauth-github 1.4.0
Using omniauth-google-oauth2 0.8.2
Using omniauth-twitter 1.4.0
Using actionmailer 7.0.4.3
Using railties 7.0.4.3
Using sprockets-rails 3.4.2
Using dartsass-sprockets 3.0.0
Using lograge 0.12.0
Fetching rails_failover 1.0.0
Installing rails_failover 1.0.0
Using rails_multisite 4.0.1
Fetching puma 6.2.2
Installing puma 6.2.2 with native extensions
Using bootsnap 1.16.0
Using rbtrace 0.4.14
Bundle complete! 136 Gemfile dependencies, 174 gems now installed.
Gems in the groups 'test' and 'development' were not installed.
Bundled gems are installed into `./vendor/bundle`
$ yarn install --production
yarn install v1.22.19
[1/5] Validating package.json...
[2/5] Resolving packages...
[3/5] Fetching packages...
[4/5] Linking dependencies...
warning " > @mixer/parallel-prettier@2.0.3" has unmet peer dependency "prettier@^2.0.0".
warning "eslint-config-discourse > eslint-plugin-lodash@7.1.0" has unmet peer dependency "lodash@>=4".
[5/5] Building fresh packages...
$ yarn --cwd app/assets/javascripts $(node -e 'if(JSON.parse(process.env.npm_config_argv).original.includes(`--frozen-lockfile`)){console.log(`--frozen-lockfile`)}')
yarn install v1.22.19
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
warning " > babel-plugin-debug-macros@0.4.0-pre1" has unmet peer dependency "@babel/core@^7.0.0".
warning "workspace-aggregator-61483bea-5d74-44aa-a245-abffc0a6319e > discourse > @uppy/aws-s3@3.0.6" has incorrect peer dependency "@uppy/core@^3.1.2".
warning "workspace-aggregator-61483bea-5d74-44aa-a245-abffc0a6319e > discourse > @uppy/aws-s3-multipart@3.1.3" has incorrect peer dependency "@uppy/core@^3.1.2".
warning "workspace-aggregator-61483bea-5d74-44aa-a245-abffc0a6319e > discourse > @uppy/xhr-upload@3.1.1" has incorrect peer dependency "@uppy/core@^3.1.2".
[4/4] Building fresh packages...
success Saved lockfile.
$ patch-package
patch-package 6.5.1
Applying patches...
@ember/jquery@2.0.0 ✔
vdom@2.1.1 ✔
Done in 23.96s.
Done in 40.79s.
$ LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all
Discourse requires Ruby 3.2 or above
Unable checkout compatible plugin versions
$ SKIP_POST_DEPLOYMENT_MIGRATIONS=1 bundle exec rake multisite:migrate
Discourse requires Ruby 3.2 or above
Docker Manager: FAILED TO UPGRADE
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:202:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:101:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.3/lib/rails/commands/runner/runner_command.rb:43:in `load'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.3/lib/rails/commands/runner/runner_command.rb:43:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.3/lib/rails/command/base.rb:87:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.3/lib/rails/command.rb:48:in `invoke'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.3/lib/rails/commands.rb:18:in `<main>'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.16.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

Reconstruiré mi sitio a través de Putty, pero informo lo anterior en caso de que haya un error con el instalador.

3 Me gusta

Me está pasando algo similar. El foro está estancado actualmente . . .

Sabré más mañana cuando no me esté quedando dormido. Supongo que esto es un “yo también”.

-Walker

1 me gusta

Necesitas descargar una nueva versión de la imagen de Docker.

Por cierto, ese error solo ocurre en 3.1.0.beta4 y superior, no en 3.0.3 estable.

2 Me gusta

Parece que el administrador de Docker necesita saber que no puede realizar una actualización, ¿verdad? Debería requerir una reconstrucción desde la línea de comandos después de actualizarse. Pensé que había visto un aumento de versión en los commits hace un tiempo, pero supongo que me equivoco.

Entonces necesitarás

./launcher rebuild app

4 Me gusta

Gracias: sí, el problema se resolvió cuando reconstruí a través de Putty.

1 me gusta

Sí, esto sucedió muy recientemente. Update minimum image version for Ruby 3.2 (#176) · discourse/docker_manager@7e7b6b5 · GitHub

Docker Manager debería solicitar una reconstrucción de la línea de comandos cuando no se cumpla ese requisito. :thinking:

4 Me gusta

¿Entonces tal vez hay algún error o regresión? Pero supongo que ustedes están investigando eso. Parece un error si el administrador de docker no sabe que no puede tener éxito.

3 Me gusta

¿Puedes confirmar estas versiones? Como dijo @RGJ en una publicación a continuación, las versiones estables no requieren Ruby 3.2, por lo que no deberías ver esos errores al actualizar en la rama estable.

¿Intentaste por casualidad actualizar desde la v3.1.0.beta1 (o una versión aún más antigua) a la v3.1.0.beta4?

El problema es que estamos fijando docker_manager a una versión antigua para Discourse v3.1.0.beta1 y anteriores. Verás algo como esto.

La actualización a la v3.1.0.beta4 requerirá Ruby 3.2, pero existe la posibilidad de que estés ejecutando una imagen de Docker que aún no incluía Ruby 3.2. El antiguo docker_manager piensa que está bien, por lo que te permite actualizar en la interfaz de usuario, cuando debería solicitar una reconstrucción de la CLI.

Estoy en proceso de reproducir el problema. Creo que la solución será realizar cambios en la versión fijada, para que solicite una reconstrucción de la CLI. Intentaré encontrar una solución…

2 Me gusta

Vi esto en dos sitios ayer que están en pruebas superadas. No estoy completamente seguro de la versión desde la que estaban actualizando. Lamento no tener mejores datos.

1 me gusta

No puedo estar seguro ahora que la actualización se ha completado, pero creo que podría haber sido una beta de la 3.0.1 de la que estaba actualizando ** editar ** - NO una beta de la 3.10

1 me gusta

Espera. ¿No puedes pasar de la beta 3.1 a la estable 3.0.3?

Ok, la versión ha vuelto a cambiar, pero estoy bastante seguro de que intentaba actualizar de la 3.0.1 (posiblemente una beta) a la versión estable 3.0.3, que en ese momento parecía ser la opción estable más reciente. Veo que después de que eso fallara y reconstruyera en Putty, el resultado se saltó la versión prevista 3.0.3 e instaló en realidad una beta 4 de la 3.1.0.

Sí, eso falló, porque no puedes pasar de la beta 3.1 a la versión estable 3.0.

No comencé desde la beta 3.1. Comencé desde la beta 3.0.1.

No existe 3.01, es 3.0.1 o 3.1.0.
Pero en realidad no importa. Tu situación ocurrió porque ibas a la beta4 de 3.1.0.

1 me gusta

Este es mi punto: comencé con la beta 3.0.1, y la notificación de actualización de un clic enviada por correo electrónico era a la versión estable 3.0.3, cuya actualización falló. En ese momento, no se me había presentado la opción de ir a la beta 3.1.0.

¿Quizás parte del problema fue que, en lugar de instalar la versión estable 3.0.3 ‘anunciada’, el actualizador intentó instalar la beta 3.1.0?

De cualquier manera, hasta donde sé, la única razón por la que tengo instalada la beta 3.1.0 ahora es debido a la reconstrucción a través de Putty, que extrajo la versión beta más reciente, no la versión estable más reciente.

La causa raíz se corregirá tan pronto como se fusione FIX: Update compatibility file for v3.1.0.beta1 and below by gschlager · Pull Request #178 · discourse/docker_manager · GitHub.

4 Me gusta