Errore di runtime durante l'aggiornamento a v3.0.3

Ho appena risposto a una notifica via email di “aggiornamento con un clic” per una nuova release di sicurezza e correzione di bug alla versione 3.0.3, dalla mia versione attuale 3.0.1.

L’aggiornamento iniziale di Docker Manager è andato bene (secondo il report di avanzamento dell’aggiornamento nella pagina web di aggiornamento), ma quando successivamente ho cliccato su “aggiorna tutto” per aggiornare i restanti componenti di discourse che mostravano una nuova versione disponibile, questo è fallito, lasciando il mio sito offline.

Stranamente, Docker Manager viene nuovamente menzionato nel successivo report di avanzamento dell’aggiornamento, anche se era già stato aggiornato separatamente, questa volta segnalando che “Aggiornamento non riuscito” e “RuntimeError”.

Correttamente interpreto che ciò sia dovuto a una versione obsoleta di Ruby installata sul mio droplet Digital Ocean (v3.1, anziché v3.2)? In tal caso, avrei sperato che una tale nuova dipendenza fosse stata menzionata nelle note di aggiornamento (non è stato un problema con l’aggiornamento precedente), se non gestita in modo più agevole dall’installer con un clic?

Di seguito sono riportati i contenuti della successiva finestra del report di avanzamento dell’aggiornamento:

********************************************************
*** Si prega di essere pazienti, i prossimi passaggi potrebbero richiedere tempo ***
********************************************************
Ciclo di Unicorn, per liberare memoria
Riavvio di unicorn pid: 575
In attesa che Unicorn si ricarichi.
In attesa che Unicorn si ricarichi..
In attesa che Unicorn si ricarichi...
In attesa che Unicorn si ricarichi....
In attesa che Unicorn si ricarichi.....
In attesa che Unicorn si ricarichi......
In attesa che Unicorn si ricarichi.......
In attesa che Unicorn si ricarichi........
In attesa che Unicorn si ricarichi.........
Utilizzo di net-protocol 0.2.1
Recupero di addressable 2.8.4
Installazione di addressable 2.8.4
Utilizzo di aws-sigv4 1.5.0
Utilizzo di openssl-signature_algorithm 1.3.0
Utilizzo di sprockets 3.7.2 da https://github.com/rails/sprockets (a 3.x@f4d3dae)
Utilizzo di request_store 1.5.1
Utilizzo di message_bus 4.3.2
Utilizzo di pry 0.14.2
Recupero di rack-mini-profiler 3.1.0
Installazione di rack-mini-profiler 3.1.0
Recupero di rack-protection 3.0.6
Installazione di rack-protection 3.0.6
Utilizzo di ecma-re-validator 0.4.0
Utilizzo di faraday 2.7.4
Utilizzo di image_optim 0.31.3
Utilizzo di logstash-logger 0.26.1
Utilizzo di mini_racer 0.6.3
Utilizzo di mini_suffix 0.3.3
Utilizzo di omniauth 1.9.2
Utilizzo di uglifier 4.2.0
Utilizzo di web-push 3.0.0
Utilizzo di sidekiq 6.5.8
Utilizzo di redis-namespace 1.10.0
Utilizzo di net-http 0.3.2
Utilizzo di oauth-tty 1.0.5
Utilizzo di snaky_hash 2.0.1
Utilizzo di activesupport 7.0.4.3
Recupero di sass-embedded 1.62.0 (x86_64-linux-gnu)
Installazione di sass-embedded 1.62.0 (x86_64-linux-gnu)
Utilizzo di rqrcode 2.1.2
Utilizzo di rss 0.2.9
Recupero di tzinfo-data 1.2023.3
Installazione di tzinfo-data 1.2023.3
Utilizzo di unf 0.1.4
Utilizzo di unicorn 6.1.0
Recupero di loofah 2.20.0
Installazione di loofah 2.20.0
Utilizzo di ruby-readability 0.7.0
Utilizzo di sanitize 6.0.1
Utilizzo di net-imap 0.3.4
Utilizzo di net-pop 0.1.2
Utilizzo di net-smtp 0.3.3
Utilizzo di css_parser 1.14.0
Utilizzo di aws-sdk-core 3.130.2
Utilizzo di cose 1.3.0
Utilizzo di pry-byebug 3.10.1
Utilizzo di pry-rails 0.3.9
Utilizzo di json_schemer 0.2.23
Utilizzo di faraday-retry 2.1.0
Utilizzo di oauth2 1.4.11
Utilizzo di rtlcss 0.2.0
Utilizzo di rails-dom-testing 2.0.3
Utilizzo di globalid 1.1.0
Utilizzo di activemodel 7.0.4.3
Utilizzo di mini_scheduler 0.15.0
Utilizzo di oauth 1.1.0
Utilizzo di dartsass-ruby 3.0.1
Utilizzo di rails-html-sanitizer 1.5.0
Recupero di mail 2.8.1
Installazione di mail 2.8.1
Utilizzo di aws-sdk-kms 1.56.0
Utilizzo di aws-sdk-sns 1.53.0
Utilizzo di actionview 7.0.4.3
Utilizzo di activejob 7.0.4.3
Utilizzo di active_model_serializers 0.8.4
Utilizzo di activerecord 7.0.4.3
Utilizzo di omniauth-oauth2 1.7.3
Utilizzo di omniauth-oauth 1.2.0
Utilizzo di aws-sdk-s3 1.114.0
Utilizzo di actionpack 7.0.4.3
Utilizzo di actionview_precompiler 0.2.3
Utilizzo di discourse-seed-fu 2.3.12
Utilizzo di omniauth-facebook 9.0.0
Utilizzo di omniauth-github 1.4.0
Utilizzo di omniauth-google-oauth2 0.8.2
Utilizzo di omniauth-twitter 1.4.0
Utilizzo di actionmailer 7.0.4.3
Utilizzo di railties 7.0.4.3
Utilizzo di sprockets-rails 3.4.2
Utilizzo di dartsass-sprockets 3.0.0
Utilizzo di lograge 0.12.0
Recupero di rails_failover 1.0.0
Installazione di rails_failover 1.0.0
Utilizzo di rails_multisite 4.0.1
Recupero di puma 6.2.2
Installazione di puma 6.2.2 con estensioni native
Utilizzo di bootsnap 1.16.0
Utilizzo di rbtrace 0.4.14
Bundle completo! 136 dipendenze Gemfile, 174 gem ora installate.
Gem nei gruppi 'test' e 'development' non sono state installate.
Gem bundle sono installate in `./vendor/bundle`
$ yarn install --production
yarn install v1.22.19
[1/5] Validazione package.json...
[2/5] Risoluzione dei pacchetti...
[3/5] Recupero dei pacchetti...
[4/5] Collegamento delle dipendenze...
warning " > @mixer/parallel-prettier@2.0.3" ha una dipendenza peer non soddisfatta "prettier@^2.0.0".
warning "eslint-config-discourse > eslint-plugin-lodash@7.1.0" ha una dipendenza peer non soddisfatta "lodash@>=4".
[5/5] Costruzione di nuovi pacchetti...
$ 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] Risoluzione dei pacchetti...
[2/4] Recupero dei pacchetti...
[3/4] Collegamento delle dipendenze...
warning " > babel-plugin-debug-macros@0.4.0-pre1" ha una dipendenza peer non soddisfatta "@babel/core@^7.0.0".
warning "workspace-aggregator-61483bea-5d74-44aa-a245-abffc0a6319e > discourse > @uppy/aws-s3@3.0.6" ha una dipendenza peer errata "@uppy/core@^3.1.2".
warning "workspace-aggregator-61483bea-5d74-44aa-a245-abffc0a6319e > discourse > @uppy/aws-s3-multipart@3.1.3" ha una dipendenza peer errata "@uppy/core@^3.1.2".
warning "workspace-aggregator-61483bea-5d74-44aa-a245-abffc0a6319e > discourse > @uppy/xhr-upload@3.1.1" ha una dipendenza peer errata "@uppy/core@^3.1.2".
[4/4] Costruzione di nuovi pacchetti...
success Saved lockfile.
$ patch-package
patch-package 6.5.1
Applicazione delle patch...
@ember/jquery@2.0.0 ✔
virtual-dom@2.1.1 ✔
Fatto in 23.96s.
Fatto in 40.79s.
$ LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all
Discourse richiede Ruby 3.2 o superiore
Impossibile recuperare le versioni compatibili dei plugin
$ SKIP_POST_DEPLOYMENT_MIGRATIONS=1 bundle exec rake multisite:migrate
Discourse richiede Ruby 3.2 o superiore
Docker Manager: AGGIORNAMENTO NON RIUSCITO
#<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>'
Avvio di 1 worker Unicorn che erano stati fermati inizialmente

Procederò con i passaggi per ricostruire il mio sito tramite Putty, ma segnalo quanto sopra nel caso in cui ci sia un bug nell’installer.

3 Mi Piace

Sto riscontrando qualcosa di simile. Il forum è bloccato al momento…

Ne saprò di più domani quando non sarò più assonnato. Immagino che questo sia un “secondo questo”.

-Walker

1 Mi Piace

Devi scaricare una nuova versione dell’immagine Docker.

A proposito, quell’errore si verifica solo a partire dalla versione 3.1.0.beta4 in poi, non nella versione stabile 3.0.3.

2 Mi Piace

Sembra che il gestore di Docker debba sapere che non può eseguire un aggiornamento, giusto? Dovrebbe richiedere una ricostruzione da riga di comando dopo essere stato aggiornato. Pensavo di aver visto un aumento di versione nei commit tempo fa, ma immagino di sbagliarmi.

Quindi dovrai

./launcher rebuild app

4 Mi Piace

Grazie, sì, il problema è stato risolto per me quando ho ricostruito tramite Putty.

1 Mi Piace

Sì, è successo molto di recente. Update minimum image version for Ruby 3.2 (#176) · discourse/docker_manager@7e7b6b5 · GitHub

Docker Manager dovrebbe richiedere una ricostruzione da riga di comando quando quel requisito non viene soddisfatto. :thinking:

4 Mi Piace

Quindi forse c’è qualche bug o regressione? Ma immagino che ci stiate lavorando. Sembra un bug se docker manager non sa che non può avere successo.

3 Mi Piace

Puoi confermare queste versioni? Come ha detto @RGJ in un post qui sotto, le versioni stabili non richiedono Ruby 3.2, quindi non dovresti vedere quegli errori durante l’aggiornamento nel ramo stabile.

Hai per caso provato ad aggiornare dalla v3.1.0.beta1 (o una versione ancora più vecchia) alla v3.1.0.beta4?

Il problema è che stiamo bloccando docker_manager a una versione vecchia per Discourse v3.1.0.beta1 e versioni precedenti. Vedrai qualcosa di simile.

L’aggiornamento alla v3.1.0.beta4 richiederà Ruby 3.2, ma c’è la possibilità che tu stia eseguendo un’immagine Docker che non è ancora dotata di Ruby 3.2. Il vecchio docker_manager pensa che vada bene, quindi ti permette di aggiornare nell’interfaccia utente, mentre dovrebbe richiedere una ricostruzione da riga di comando.

Sto cercando di riprodurre il problema. Penso che la soluzione sarà apportare modifiche alla versione bloccata, in modo che richieda una ricostruzione da riga di comando. Cercherò di trovare una soluzione…

2 Mi Piace

Ho visto questo per due siti ieri che sono in fase di test superati. Non sono del tutto sicuro della versione da cui stavano aggiornando. Mi dispiace di non avere dati migliori.

1 Mi Piace

Non posso esserne sicuro ora che l’aggiornamento è completato, ma penso che potrebbe essere stato un 3.0.1 beta da cui stavo aggiornando ** mod ** - NON un 3.10 beta

1 Mi Piace

Aspetta. Non puoi passare da 3.1 beta a 3.0.3 stabile?

Ok, la versione è cambiata di nuovo, ma sono abbastanza sicuro che stessi cercando di eseguire l’aggiornamento dalla 3.0.1 (possibilmente una beta) alla 3.0.3 stabile, che a quel punto sembrava essere l’opzione stabile più recente. Vedo che dopo che questo è fallito e ho ricostruito in Putty, il risultato ha saltato la versione 3.0.3 prevista e ha effettivamente installato una 3.1.0 beta 4.

Sì, non è andato a buon fine, perché non puoi passare dalla beta 3.1 alla versione stabile 3.0.

Non ho iniziato dalla beta 3.1. Ho iniziato dalla beta 3.0.1.

Non esiste la versione 3.01, è o 3.0.1 o 3.1.0.
Ma non ha molta importanza. La tua situazione si è verificata perché stavi andando alla beta4 di 3.1.0.

1 Mi Piace

Questo è il mio punto: sono partito dalla beta 3.0.1 e la notifica di aggiornamento con un clic via email era per la versione stabile 3.0.3, il cui aggiornamento è fallito. A quel punto non mi era stata presentata l’opzione per passare alla beta 3.1.0.

Forse parte del problema è stato che, invece di installare la versione stabile 3.0.3 “pubblicizzata”, l’aggiornatore ha tentato di installare la beta 3.1.0?

In ogni caso, per quanto ne so, l’unico motivo per cui ora ho installato la beta 3.1.0 è stato il ripristino tramite Putty, che ha scaricato la versione beta più recente, non la versione stabile più recente.

La causa principale verrà risolta non appena FIX: Update compatibility file for v3.1.0.beta1 and below by gschlager · Pull Request #178 · discourse/docker_manager · GitHub verrà unita.

4 Mi Piace