Eseguendo un aggiornamento nell’interfaccia web di amministrazione, da 3.1.0.beta2 a beta3, penso di aver terminato con successo l’aggiornamento di Docker Manager e poi l’aggiornamento principale di Discourse è fallito così:\n\n\n$ yarn install --production\nyarn install v1.22.19\n[1/5] Validating package.json...\n[2/5] Resolving packages...\n[3/5] Fetching packages...\n[4/5] Linking dependencies...\nwarning \" \u003e @mixer/parallel-prettier@2.0.3\" has unmet peer dependency \"prettier@^2.0.0\".\nwarning \"eslint-config-discourse \u003e eslint-plugin-lodash@7.1.0\" has unmet peer dependency \"lodash@\u003e=4\".\n[5/5] Building fresh packages...\n$ yarn --cwd app/assets/javascripts/discourse $(node -e 'if(JSON.parse(process.env.npm_config_argv).original.includes(`--frozen-lockfile`)){console.log(`--frozen-lockfile`)}')\nyarn install v1.22.19\n[1/4] Resolving packages...\n[2/4] Fetching packages...\n[3/4] Linking dependencies...\nwarning \" \u003e babel-plugin-debug-macros@0.4.0-pre1\" has unmet peer dependency \"@babel/core@^7.0.0\".\nwarning \"workspace-aggregator-0156df5c-af27-46bf-a6aa-a0a12748bb32 \u003e discourse \u003e @uppy/xhr-upload@3.1.0\" has incorrect peer dependency \"@uppy/core@^3.0.6\".\n[4/4] Building fresh packages...\nsuccess Saved lockfile.\nDone in 20.00s.\nDone in 44.16s.\n$ LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all\ndiscourse-data-explorer is already at latest compatible version\ndocker_manager is already at latest compatible version\n$ SKIP_POST_DEPLOYMENT_MIGRATIONS=1 bundle exec rake multisite:migrate\nrake aborted!\nNoMethodError: undefined method `register_bookmarkable' for Bookmark:Class\nDid you mean? registered_bookmarkables\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.4.3/lib/active_record/dynamic_matchers.rb:22:in `method_missing'\n/var/www/discourse/plugins/discourse-data-explorer/plugin.rb:902:in `block in activate!'\n/var/www/discourse/lib/plugin/instance.rb:503:in `block in notify_after_initialize'\n/var/www/discourse/lib/plugin/instance.rb:501:in `each'\n/var/www/discourse/lib/plugin/instance.rb:501:in `notify_after_initialize'\n/var/www/discourse/config/application.rb:228:in `each'\n/var/www/discourse/config/application.rb:228:in `block (2 levels) in \u003cclass:Application\u003e'\n/var/www/discourse/lib/plugin.rb:6:in `initialization_guard'\n/var/www/discourse/config/application.rb:228:in `block in \u003cclass:Application\u003e'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/activesupport-7.0.4.3/lib/active_support/lazy_load_hooks.rb:92:in `block in execute_hook'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/activesupport-7.0.4.3/lib/active_support/lazy_load_hooks.rb:85:in `with_execution_control'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/activesupport-7.0.4.3/lib/active_support/lazy_load_hooks.rb:90:in `execute_hook'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/activesupport-7.0.4.3/lib/active_support/lazy_load_hooks.rb:76:in `block in run_load_hooks'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/activesupport-7.0.4.3/lib/active_support/lazy_load_hooks.rb:75:in `each'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/activesupport-7.0.4.3/lib/active_support/lazy_load_hooks.rb:75:in `run_load_hooks'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.3/lib/rails/application/finisher.rb:87:in `block in \u003cmodule:Finisher\u003e'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.3/lib/rails/initializable.rb:32:in `instance_exec'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.3/lib/rails/initializable.rb:32:in `run'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.3/lib/rails/initializable.rb:61:in `block in run_initializers'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.3/lib/rails/initializable.rb:60:in `run_initializers'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.3/lib/rails/application.rb:372:in `initialize!'\n/var/www/discourse/config/environment.rb:7:in `\u003cmain\u003e'\n/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'\n/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'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/zeitwerk-2.6.7/lib/zeitwerk/kernel.rb:38:in `require'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.3/lib/rails/application.rb:348:in `require_environment!'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.3/lib/rails/application.rb:511:in `block in run_tasks_blocks'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/rake-13.0.6/exe/rake:27:in `\u003ctop (required)\u003e'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bundler-2.4.4/lib/bundler/cli/exec.rb:58:in `load'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bundler-2.4.4/lib/bundler/cli/exec.rb:58:in `kernel_load'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bundler-2.4.4/lib/bundler/cli/exec.rb:23:in `run'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bundler-2.4.4/lib/bundler/cli.rb:491:in `exec'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bundler-2.4.4/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bundler-2.4.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bundler-2.4.4/lib/bundler/vendor/thor/lib/thor.rb:392:in `dispatch'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bundler-2.4.4/lib/bundler/cli.rb:34:in `dispatch'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bundler-2.4.4/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bundler-2.4.4/lib/bundler/cli.rb:28:in `start'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/exe/bundle:45:in `block in \u003ctop (required)\u003e'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bundler-2.4.4/lib/bundler/friendly_errors.rb:117:in `with_friendly_errors'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/exe/bundle:33:in `\u003ctop (required)\u003e'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/bin/bundle:25:in `load'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/bin/bundle:25:in `\u003cmain\u003e'\nTasks: TOP =\u003e multisite:migrate =\u003e db:load_config =\u003e environment\n(See full trace by running task with --trace)\nDocker Manager: FAILED TO UPGRADE\n#\u003cRuntimeError: RuntimeError\u003e\n/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:202:in `run'\n/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:101:in `upgrade'\n/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in \u003cmain\u003e'\n/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `fork'\n/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `\u003cmain\u003e'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.1/lib/rails/commands/runner/runner_command.rb:43:in `load'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.1/lib/rails/commands/runner/runner_command.rb:43:in `perform'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/thor-1.2.1/lib/thor/command.rb:27:in `run'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/thor-1.2.1/lib/thor/invocation.rb:127:in `invoke_command'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/thor-1.2.1/lib/thor.rb:392:in `dispatch'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.1/lib/rails/command/base.rb:87:in `perform'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.1/lib/rails/command.rb:48:in `invoke'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/railties-7.0.4.1/lib/rails/commands.rb:18:in `\u003cmain\u003e'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'\n/var/www/discourse/vendor/bundle/ruby/3.1.0/gems/bootsnap-1.15.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'\nbin/rails:18:in `\u003cmain\u003e'\nSpinning up 1 Unicorn worker(s) that were stopped initially\n\n\nIl forum è in esecuzione, ma la situazione è poco chiara (per me): la pagina di aggiornamento ora suggerisce che sono a latest-release +24, che docker_manager è aggiornato a e90c8f55 e che Data Explorer è l’unico componente che necessita di un aggiornamento. Ma la dashboard dice ancora che sono a beta2 (b96869d5fb).\n\nCosa fare? La mia migliore ipotesi è eseguire un aggiornamento da riga di comando. Ho messo il forum in modalità di sola lettura per ora.
Ho trovato un paio di modifiche recenti nel codice che sembrano esserne la causa, e sembra che forse ci sia un conflitto con il mio plugin discourse-data-explorer ormai obsoleto.
Quindi, dato che per ora posso fare a meno di quel plugin, ho rimosso quella riga dal mio app.yml e ho eseguito una ricostruzione. (Avrei potuto provare una ricostruzione così com’era, ma sono già un paio d’ore offline.) E questo ha avuto successo, quindi sono di nuovo online.
(Vedo le mie azioni come una soluzione temporanea, non una correzione.)
Le modifiche potenzialmente correlate sono
Ho appena riscontrato esattamente lo stesso errore durante l’aggiornamento da 3.1.0.beta2 a 3.1.0.beta3. Questo è successo nella mia casella non di produzione che uso per “esercitarmi” con gli aggiornamenti prima di eseguirli sulla casella di produzione.
Nel mio caso, il forum è stato interrotto dopo che ho riscontrato l’errore.
La rimozione della riga del plugin discourse-data-explorer da app.yml e la ricostruzione hanno aggirato il problema.
Molte grazie a @Ed_S per avermi fatto risparmiare un sacco di tempo con questo post utile!
Per quello che vale, ho ripristinato la mia VM alcune volte e ho ritentato questo aggiornamento in 2 modi diversi:
Modo n. 1: Esegui l’aggiornamento e poi esegui una ricostruzione subito dopo l’errore.
Modo n. 2: Rimuovi il plugin discourse-data-explorer da app.yml, ricostruisci, riaggiungi il plugin discourse-data-explorer a app.yml, ricostruisci.
Entrambi sembravano funzionare bene. Noterò anche che le ricostruzioni di cui sopra hanno l’effetto di aggiornare l’installazione a 3.1.0.beta3. Tuttavia, l’errore nel Modo n. 1 mi rende nervoso sul fatto che qualche file o dato possa rimanere in uno stato non ottimale a causa dell’aggiornamento interrotto. Quindi, probabilmente userò il Modo n. 2 in produzione.
Qualcuno ha riscontrato questo errore senza che il plugin discourse-data-explorer fosse installato?