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?
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?
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.
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>'