Aggiornamento fallito da 2.9.0.beta14 a 3.1.0.beta

Mi aggiorno ogni mese, sempre prima su alcuni sistemi di sviluppo, poi sulla produzione.

Durante il ciclo di questo mese, l’aggiornamento è fallito sul primo sistema di sviluppo. docker_manager è stato aggiornato correttamente, ma l’aggiornamento di Discourse è fallito con:

Spiacenti, si è verificato un errore durante l'aggiornamento di Discourse. Si prega di controllare i log sottostanti.

L’applicazione Discourse è completamente bloccata (visualizza la pagina di errore 500 “Oops”).

Ecco cosa contengono i log visualizzati sullo schermo:

********************************************************
*** Si prega di avere pazienza, i prossimi passaggi potrebbero richiedere tempo ***
********************************************************
Ciclo di Unicorn, per liberare memoria
Riavvio di unicorn pid: 50
In attesa del ricaricamento di Unicorn.
In attesa del ricaricamento di Unicorn..
In attesa del ricaricamento di Unicorn...
In attesa del ricaricamento di Unicorn....
In attesa del ricaricamento di Unicorn.....
In attesa del ricaricamento di Unicorn......
In attesa del ricaricamento di Unicorn.......
In attesa del ricaricamento di Unicorn........
In attesa del ricaricamento di Unicorn.........
In attesa del ricaricamento di Unicorn..........
In attesa del ricaricamento di Unicorn...........
Arresto di 7 worker Unicorn, per liberare memoria
Arresto della coda di processi per recuperare memoria, pid master è 4069
$ cd /var/www/discourse && git fetch --tags --force && git reset --hard HEAD@{upstream}
From https://github.com/discourse/discourse
 t [aggiornamento tag]            latest-release -> latest-release
 * [nuovo tag]               v2.8.14        -> v2.8.14
 * [nuovo tag]               v3.0.0         -> v3.0.0
HEAD è ora a 666536cbd1 DEV: Preferisci \A e \z a ^ e $ nelle regex (#19936)
$ bundle install --deployment --jobs 4 --without test development
[DEPRECATED] L'opzione `--deployment` è deprecata perché si basa sul fatto di essere ricordata tra le invocazioni di bundler, cosa che bundler non farà più nelle versioni future. Utilizzare invece `bundle config set --local deployment 'true'`, e smettere di usare questa opzione.
[DEPRECATED] L'opzione `--without` è deprecata perché si basa sul fatto di essere ricordata tra le invocazioni di bundler, cosa che bundler non farà più nelle versioni future. Utilizzare invece `bundle config set --local without 'test development'`, e smettere di usare questa opzione.
Bundler 2.3.13 è in esecuzione, ma il tuo lockfile è stato generato con 2.4.1. Installazione di Bundler 2.4.1 e riavvio utilizzando quella versione.
Recupero metadati gem da https://rubygems.org/.
Recupero bundler 2.4.1
Installazione bundler 2.4.1
[DEPRECATED] L'opzione `--deployment` è deprecata perché si basa sul fatto di essere ricordata tra le invocazioni di bundler, cosa che bundler non farà più nelle versioni future. Utilizzare invece `bundle config set --local deployment 'true'`, e smettere di usare questa opzione.
[DEPRECATED] L'opzione `--without` è deprecata perché si basa sul fatto di essere ricordata tra le invocazioni di bundler, cosa che bundler non farà più nelle versioni future. Utilizzare invece `bundle config set --local without 'test development'`, e smettere di usare questa opzione.
Recupero metadati gem da https://rubygems.org/.........
Recupero https://github.com/rails/sprockets
web-push-3.0.0 richiede la versione ruby >= 3.0, che è incompatibile con la
versione corrente, 2.7.6
Docker Manager: AGGIORNAMENTO FALLITO
#<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>'
Avvio di 7 worker Unicorn che erano stati fermati inizialmente

Non ho mai avuto un errore di aggiornamento prima, quindi non sono sicuro su cosa fare dopo. E se fosse successo in produzione, cosa avrei dovuto fare?

2 Mi Piace

Ti suggerisco di verificare quale versione del sistema operativo (distribuzione) stai eseguendo: potrebbe essere una versione vecchia, che non ha ruby 3, e questo è il problema.

Modifica: aspetta, non sono sicuro di non confondermi. Per la produzione, tutto avviene all’interno di un container Docker che dovrebbe avere tutte le versioni corrette di tutto. Hai qualche altro tipo di configurazione?

2 Mi Piace

Per quanto ne so, le dev box sono Ubuntu 20.04 LTS. Credo che la produzione sia 22.04 LTS.

Tuttavia, non ho mai installato Ruby sul sistema operativo. Penso che tutto ciò avvenga magicamente nel container Docker.

Correzione: anche la produzione è su 20.04 LTS.

1 Mi Piace

Sì, scusa, penso di essermi confuso. Non è raro dover eseguire un aggiornamento da riga di comando: ci hai provato?

cd /var/discourse
git pull
./launcher rebuild app
6 Mi Piace

Se si tratta di installazioni di sviluppo, non saranno rappresentative di un’installazione Docker di produzione. Il tuo ambiente di sviluppo ha una vecchia versione di Ruby (2.7), mentre Discourse è stato recentemente aggiornato alla 3.1 nell’immagine.

Grazie! La ricompilazione dell’app sembra aver funzionato. Ci sto provando su un altro sistema di sviluppo prima di applicare la patch alla produzione.

Per essere chiari, con “sviluppo” intendo semplicemente che sono proprio come la produzione ma su sistemi di sviluppo interni.

1 Mi Piace

Un aggiornamento tramite bash ha risolto il problema?

1 Mi Piace

Sì! Ha funzionato sia sui sistemi di sviluppo che su quelli di produzione. Grazie!

3 Mi Piace

Succede anche a me in produzione.

Da 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 richiede una versione di ruby >= 3.0, che è incompatibile con la
versione corrente, 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

Risolto con :point_up:

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

grazie

Ho lo stesso problema qui, l’aggiornamento è fallito e ha mandato il forum in errore 500. Sono sinceramente sorpreso che questo problema persista da 3 giorni.

Comunque, sto eseguendo una ricostruzione da riga di comando che spero funzioni. In caso contrario, ho prima eseguito uno snapshot della VM perché mia madre non ha cresciuto un ingenuo.

Da questo post sembra che abbiano aggiornato ruby a 3.0, il che rompe completamente gli aggiornamenti web. Sfortunatamente, il software consente ancora agli utenti di provarci, e poi puoi vedere quanto velocemente il tuo host può servire errori HTTP 500.

Modifica: La ricostruzione da riga di comando ha funzionato, per fortuna!

Errori pertinenti:

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 Mi Piace

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