Sto cercando di aggiornare la mia installazione di Discourse dal tag immagine 3.0.6 a 3.1.1 ma riscontro il problema di seguito. So che sto utilizzando quella che è considerata un’installazione non supportata con il Bitnami Helm Chart in un cluster Kubernetes, ma sono completamente bloccato su come risolvere.
L’errore sottostante viene emesso quando tento di aggiornare da un’installazione standard di Discourse (nessun plugin aggiuntivo aggiunto) all’ultima versione. Guardando il forum, posso vedere questo post - Upgrade failed (NoMethodError: undefined method `register_bookmarkable' for Bookmark:Class) - ma parla del plugin discourse-data-explorer che, come menzionato sopra, non è installato nell’installazione predefinita di Bitnami Discourse.
Qualcuno può aiutare?
Grazie,
Steve
discourse 07:39:04.07 INFO ==> Running database migrations
rake aborted!
NoMethodError: undefined method `register_bookmarkable' for Bookmark:Class
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/activerecord-7.0.5.1/lib/active_record/dynamic_matchers.rb:22:in `method_missing'
/opt/bitnami/discourse/plugins/chat/plugin.rb:261:in `block (2 levels) in activate!'
/opt/bitnami/discourse/lib/plugin/instance.rb:1351:in `reloadable_patch'
/opt/bitnami/discourse/plugins/chat/plugin.rb:250:in `block in activate!'
/opt/bitnami/discourse/lib/plugin/instance.rb:526:in `block in notify_after_initialize'
/opt/bitnami/discourse/lib/plugin/instance.rb:524:in `each'
/opt/bitnami/discourse/lib/plugin/instance.rb:524:in `notify_after_initialize'
/opt/bitnami/discourse/config/application.rb:230:in `each'
/opt/bitnami/discourse/config/application.rb:230:in `block (2 levels) in <class:Application>'
/opt/bitnami/discourse/lib/plugin.rb:6:in `initialization_guard'
/opt/bitnami/discourse/config/application.rb:230:in `block in <class:Application>'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.5.1/lib/active_support/lazy_load_hooks.rb:92:in `block in execute_hook'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.5.1/lib/active_support/lazy_load_hooks.rb:85:in `with_execution_control'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.5.1/lib/active_support/lazy_load_hooks.rb:90:in `execute_hook'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.5.1/lib/active_support/lazy_load_hooks.rb:76:in `block in run_load_hooks'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.5.1/lib/active_support/lazy_load_hooks.rb:75:in `each'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/activesupport-7.0.5.1/lib/active_support/lazy_load_hooks.rb:75:in `run_load_hooks'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/application/finisher.rb:87:in `block in <module:Finisher>'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/initializable.rb:32:in `instance_exec'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/initializable.rb:32:in `run'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/initializable.rb:61:in `block in run_initializers'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/initializable.rb:60:in `run_initializers'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/application.rb:372:in `initialize!'
/opt/bitnami/discourse/config/environment.rb:7:in `<main>'
internal:/opt/bitnami/ruby/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb:38:in `require'
internal:/opt/bitnami/ruby/lib/ruby/site_ruby/3.2.0/rubygems/core_ext/kernel_require.rb:38:in `require'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/bootsnap-1.16.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:32:in `require'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/zeitwerk-2.6.10/lib/zeitwerk/kernel.rb:38:in `require'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/application.rb:348:in `require_environment!'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/railties-7.0.5.1/lib/rails/application.rb:506:in `block in run_tasks_blocks'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/opt/bitnami/ruby/bin/bundle:25:in `load'
/opt/bitnami/ruby/bin/bundle:25:in `<main>'
Penso che il primo rimedio, se si trattasse di un aggiornamento basato sul web, sarebbe un aggiornamento da riga di comando: accedi al tuo host tramite ssh ed esegui
cd /var/discourse
git pull
./launcher rebuild app
(Presumendo che la tua configurazione si chiami app.yml)
Modifica: tranne che, è probabile che /opt/bitnami/discourse sia la posizione della tua installazione. Sono differenze come queste che portano al tag “unsupported-install” e al consiglio di contattare il tuo fornitore.
Ho aperto un ticket di supporto con Bitnami e loro affermano che si tratta di un problema con l’asset, che in questo caso è l’immagine di Discourse. Ho chiesto se potessero esaminarlo di nuovo poiché un aggiornamento tra le loro versioni di Helm Chart avrebbe dovuto essere testato da Bitnami e qualsiasi problema che avessero riscontrato sarebbe stato, si spera, risolto tra Bitnami e il team di Discourse.
Domanda: l’errore che sto vedendo sembra implicare che provenga dal plugin Chat, che è un plugin ufficialmente supportato. Fa differenza per il team di Discourse che esamina l’errore?
Proverò a disabilitarlo e poi a eseguire l’aggiornamento per vedere come va.
Il plugin di chat è incluso. Se stai anche installando il plugin di chat (penso che sia stato separato per un po’?) allora questo potrebbe essere il problema.
C’è un modo per disabilitare i plugin principali all’avvio in modo da poter verificare se il plugin Chat è il problema?
Il chart Bitnami mi permette di passare una lista di plugin ed eseguirà il comando RAILS_ENV=production bundle exec rake plugin:install repo={{ $plugin }} per ogni plugin che fornisco MA penso che questo sarà aggiunto ai plugin principali.
Darò un’altra occhiata all’installazione standard - distribuiamo tutte le nostre app di terze parti utilizzando i chart Helm nel nostro cluster kubernetes ma forse ha senso fare un’eccezione per Discourse se il supporto per kubernetes e helm è lontano.
Solo un rapido aggiornamento, sembra che l’esecuzione di un upgrade da una versione pre-3.0.0 consenta il funzionamento dell’upgrade, ad esempio da 2.8.11 → 3.0.6 → 3.1.1.
Non sono sicuro se si tratti di un puro caso o meno, ma il tentativo di eseguire l’upgrade da 3.0.6 direttamente a 3.1.1 non funziona.
È interessante notare che il plugin Chat non viene nemmeno visualizzato nella mia implementazione di Discourse dopo questo percorso di upgrade. Si ritiene che venga ancora trattato come un plugin esterno piuttosto che come parte del prodotto principale.
Qualcuno sa se il plugin Chat è corretto con questo percorso di upgrade o c’è qualcosa di molto sbagliato nel fatto che non sia presente!
Doppio controllo la mia installazione ma non vedo nemmeno il flag.
Non vedo nemmeno il codice del plugin sul server con questo aggiornamento, mentre se inizio con la v3.0.6 sono sicuro di vederlo, ma controllerò tutto.
@merefield - Ho appena controllato, se aggiorno dalla versione 2.8.11 alla 3.0.6 il plugin Chat non è disponibile.
Come menzionato sopra, sto usando il chart Helm di Bitnami per distribuire Discourse, che so non essere supportato, ma ciò che è interessante è che se inizio con la versione 3.0.6 il plugin Chat è presente.
Non ho fatto nulla con il plugin Chat, ma ciò non significa che gli script che Bitnami utilizza per creare la loro versione dell’immagine Discourse non lo stiano influenzando.
@stevejr Sono bloccato nello stesso guaio. Sei riuscito infine a completare il tuo aggiornamento? Non riesco a provare il processo di aggiornamento a partire dalla versione 2.8 come hai suggerito.
Purtroppo no. Non ho eseguito alcun aggiornamento e la risposta di Bitnami è stata di eseguire un backup seguito da un’installazione completamente nuova e quindi ripristinare.
Devo testare completamente questa soluzione perché non voglio influire sulla nostra configurazione di produzione!
Ho provato diverse varianti di questo approccio di installazione pulita seguita dal ripristino dal backup, ma fallisce a causa di quelli che sembrano essere bug nella migrazione del database. Questi tentativi vengono effettuati su una distribuzione di sviluppo indipendente che è facile da resettare. Il log di ripristino mostra questo, ad esempio:
...
[2024-02-21 12:43:12] ALTER TABLE
[2024-02-21 12:43:12] Migrazione del database in corso...
[2024-02-21 12:43:16] ECCEZIONE: /opt/bitnami/discourse/lib/discourse.rb:138:in `exec': Impossibile migrare il database.
rake aborted!
StandardError: Si è verificato un errore, questa e tutte le migrazioni successive sono state annullate:
PG::DuplicateTable: ERRORE: la relazione "sidebar_sections" esiste già
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/rack-mini-profiler-3.1.0/lib/patches/db/pg.rb:110:in `exec'
/opt/bitnami/discourse/vendor/bundle/ruby/3.2.0/gems/rack-mini-profiler-3.1.0/lib/patches/db/pg.rb:110:in `async_exec'
...