Problemi di migrazione relativi a DiscourseJsProcessor?

Ciao @david Ho problemi con un bootstrap:

I, [2023-08-24T16:50:36.568059 #1]  INFO -- : \u003e cd /var/www/discourse \u0026\u0026 su discourse -c 'bundle exec rake db:migrate'                                          
rake aborted!                                                                                                                                                                                 
Errno::ENOENT: Nessun file o directory di questo tipo @ rb_sysopen - tmp/js-processor.js                                                                                                                   
/var/www/discourse/lib/discourse_js_processor.rb:140:in `read'                                                                                                                                
/var/www/discourse/lib/discourse_js_processor.rb:140:in `create_new_context'                                                                                                                  
/var/www/discourse/lib/discourse_js_processor.rb:156:in `block in v8'                                                                                                                         
/var/www/discourse/lib/discourse_js_processor.rb:154:in `synchronize'                                                                                                                         
/var/www/discourse/lib/discourse_js_processor.rb:154:in `v8'                                                                                                                                  
/var/www/discourse/lib/discourse_js_processor.rb:169:in `block in v8_call'                                                                                                                    
/var/www/discourse/lib/discourse_js_processor.rb:168:in `synchronize'                                                                                                                         
/var/www/discourse/lib/discourse_js_processor.rb:168:in `v8_call'                                                                                                                             
/var/www/discourse/lib/discourse_js_processor.rb:193:in `perform'                                  

È correlato a DEV: Use esbuild to make DiscourseJsProcessor by CvX · Pull Request #23223 · discourse/discourse · GitHub

1 Mi Piace

È disponibile ulteriore traccia dello stack? O potete vedere quale migrazione la sta attivando?

2 Mi Piace

Non preoccuparti, @cvx ed io abbiamo trovato il problema, avremo presto una soluzione.

1 Mi Piace

Ha funzionato!\n\nPensavo che sarebbe stato risolto da una nuova immagine di base qualche minuto fa, ma è fallito ancora una volta dopo. . .\n\nComunque, ora sembra a posto.

1 Mi Piace

Ok, ottimo, sono contento di sentirlo! Abbiamo un po’ una situazione “l’uovo o la gallina” che dobbiamo risolvere. Seguendo il commit che hai linkato, assets:precompile deve essere eseguito almeno una volta prima di eseguire db:migrate. Ma è anche vero il contrario: assets:precompile necessita di uno schema di database aggiornato.

Per curiosità, qual è stato il tuo processo qui? Stavi eseguendo un aggiornamento basato su docker_manager tramite l’interfaccia utente? O era un ./launcher rebuild app? (o qualcos’altro?)

1 Mi Piace

Ho parlato troppo presto.

È fallito di nuovo, ma… oh. Ma l’ultima volta il database era già stato migrato?

Quando ha funzionato ho eseguito ./launcher bootstrap x dalla riga di comando.

Poi l’ho eseguito con Ansible, che fa:

      git pull && git checkout main && ./launcher bootstrap  {{ discourse_yml }} {{ launcher_args | default("")}}

(Suppongo che dovrò rimuovere git checkout main - non sono sicuro del perché fosse lì)

Aha. Ma Ansible sta prima eliminando il database (questo è per un sito che uso per le migrazioni, quindi ricominciare da capo è un evento frequente). Quindi questo è coerente con le tue uova. Sospiro. Ma poi ho disattivato drop_database e l’ho eseguito due volte da ansible, ed è fallito, e poi ho rieseguito il bootstrap dalla riga di comando, e ha ancora fallito. Non ci sono indizi sulle migrazioni:

Installing mysql2 0.5.5 with native extensions
Bundle complete! 137 Gemfile dependencies, 173 gems now installed.
Gems in the groups 'test' and 'development' were not installed.
Bundled gems are installed into ./vendor/bundle

I, [2023-08-24T17:24:31.403199 #1]  INFO -- : Replacing types { with set_real_ip_from 192.168.1.0/24;
set_real_ip_from 172.19.0.0/24;
set_real_ip_from 172.18.0.0/24;
set_real_ip_from 172.17.0.0/24;
set_real_ip_from 38.242.7.193/28;
real_ip_recursive on;
real_ip_header X-Forwarded-For;
types {
 in /etc/nginx/conf.d/discourse.conf
I, [2023-08-24T17:24:31.403687 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all'
I, [2023-08-24T17:24:33.084210 #1]  INFO -- : discourse-microsoft-auth is already at latest compatible version

I, [2023-08-24T17:24:33.084593 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'bundle exec rake db:migrate'
rake aborted!
Errno::ENOENT: No such file or directory @ rb_sysopen - tmp/js-processor.js
/var/www/discourse/lib/discourse_js_processor.rb:140:in `read'
/var/www/discourse/lib/discourse_js_processor.rb:140:in `create_new_context'
/var/www/discourse/lib/discourse_js_processor.rb:156:in `block in v8'
/var/www/discourse/lib/discourse_js_processor.rb:154:in `synchronize'
/var/www/discourse/lib/discourse_js_processor.rb:154:in `v8'
/var/www/discourse/lib/discourse_js_processor.rb:169:in `block in v8_call'
/var/www/discourse/lib/discourse_js_processor.rb:168:in `synchronize'
/var/www/discourse/lib/discourse_js_processor.rb:168:in `v8_call'
/var/www/discourse/lib/discourse_js_processor.rb:193:in `perform'
/var/www/discourse/lib/pretty_text.rb:54:in `apply_es6_file'

Ma anche 'templates/enable-ruby-yjit.yml' potrebbe essere il problema? EDIT: Non era quello. E poi ho rimosso i template mysql e import. Ancora nessun risultato.

Questo problema esiste da un po’? Ho aggiornato di recente un altro sito che è su ECS e sembrava che ci fosse qualcosa di strano con la migrazione e poi gli asset erano rotti. È un database enorme, però, quindi pensavo di essere solo impaziente, e inoltre ho fatto parte di quel processo a mano, quindi pensavo di essere stato solo negligente.

1 Mi Piace

@cvx ha appena unito questo che dovrebbe risolvere il problema dell’interdipendenza (una volta che supera i test):

Questo avrebbe senso :+1:.

Pensiamo che l’errore venga attivato se qualsiasi migrazione del database include una chiamata al motore markdown (PrettyText). Nella stragrande maggioranza dei siti esistenti, ciò è raro. Ma su un sito nuovo di zecca, inseriamo nuovi argomenti nel database, il che comporta la preparazione di un po’ di markdown.

No, solo nelle ultime ore (da DEV: Use esbuild to make DiscourseJsProcessor by CvX · Pull Request #23223 · discourse/discourse · GitHub)

1 Mi Piace

Bene, vedo quel commit quando faccio git pull nel mio ambiente di sviluppo, ma continua a fallire, sia da ansible che quando eseguito localmente (e non sto eliminando il database).

Non ha ancora superato i test, quindi mi aspetterei che fallisca ancora per un’installazione standard.

Si tratta di un cluster ‘di produzione’ locale? O di un ambiente di sviluppo?

1 Mi Piace

È in produzione. Ha traefik come proxy inverso, ma a parte questo è un’installazione piuttosto standard (e un database creato dall’immagine standard postgres13, ma ha pgvector).

Ho menzionato il mio ambiente di sviluppo perché lì ho eseguito un git pull cercando di vedere se il commit era passato nei test; vedo FIX: Compile js-processor before db:migrate (#23229) in git log lì.

Tornerò a testare quello che stavo testando prima e riproverò tra un po’.

Immagino che il tuo ambiente di sviluppo sia in esecuzione su main, ecco perché il commit viene visualizzato. Abbiamo riscontrato un problema con la nostra CI interna per i test superati, ma speriamo che venga risolto nei prossimi 30 minuti circa :crossed_fingers:

1 Mi Piace

Ok dovrebbe essere lì adesso. Per favore, puoi riprovare e farci sapere come va @pfaffman

1 Mi Piace

Ho eseguito un bootstrap/deploy senza eliminare il database: ha funzionato!

Ho eseguito un altro bootstrap/deploy che ha eliminato il database: ha funzionato!

1 Mi Piace

Sono l’unico ad avere uno schermo nero durante l’aggiornamento?

Probabilmente devi eseguire una ricompilazione dalla riga di comando

Questo argomento è stato chiuso automaticamente dopo 10 ore. Non sono più consentite nuove risposte.