Migrationsprobleme bezüglich DiscourseJsProcessor?

Hallo @david, ich habe Probleme mit einem Bootstrap:

I, [2023-08-24T16:50:36.568059 #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'

Hat das etwas mit DEV: Use esbuild to make DiscourseJsProcessor by CvX · Pull Request #23223 · discourse/discourse · GitHub zu tun?

1 „Gefällt mir“

Gibt es noch mehr Rückverfolgungsinformationen? Oder können Sie sehen, welche Migration sie auslöst?

2 „Gefällt mir“

Mach dir keine Sorgen, @cvx und ich haben das Problem gefunden – wir werden bald eine Lösung haben.

1 „Gefällt mir“

Es hat funktioniert!

Ich dachte, es würde vor ein paar Minuten mit einem neuen Basis-Image behoben werden, aber danach ist es einmal fehlgeschlagen. . .

Auf jeden Fall scheint es jetzt gut zu sein.

1 „Gefällt mir“

Ok, großartig, ich freue mich zu hören, dass es funktioniert! Wir haben eine Art Henne-Ei-Problem, das wir lösen müssen. Nach dem von Ihnen verlinkten Commit muss assets:precompile mindestens einmal ausgeführt werden, bevor db:migrate ausgeführt wird. Aber das Gegenteil ist auch wahr – assets:precompile benötigt ein aktuelles DB-Schema.

Interessenshalber, wie war Ihr Prozess hier? Haben Sie ein Upgrade über den UI mit docker_manager durchgeführt? Oder war es ein ./launcher rebuild app? (oder etwas ganz anderes?)

1 „Gefällt mir“

Ich habe mich zu früh gefreut.

Es ist schon wieder fehlgeschlagen, aber . .. . oh. Aber beim letzten Mal wurde die Datenbank bereits migriert?

Als es funktionierte, habe ich ./launcher bootstrap x von der Kommandozeile aus ausgeführt.

Dann habe ich es mit Ansible ausgeführt, was Folgendes tut:

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

(Ich schätze, ich muss git checkout main entfernen – ich bin mir nicht sicher, warum das da war)

Aha. Aber Ansible löscht zuerst die Datenbank (dies ist für eine Website, die ich für Migrationen verwende, daher ist ein Neustart häufig vorkommend). Das passt also zu deinen Eiern. Seufz. Aber dann habe ich drop_database ausgeschaltet und es zweimal von Ansible aus ausgeführt, und es schlug fehl, und dann habe ich es von der Kommandozeile aus erneut gestartet, und es schlug immer noch fehl. Es gibt keine Hinweise auf die Migrationen:

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'

Aber könnte auch 'templates/enable-ruby-yjit.yml' das Problem sein? EDIT: Das war es nicht. Und dann habe ich die MySQL- und Import-Vorlagen entfernt. Immer noch kein Erfolg.

Gibt es dieses Problem schon länger? Ich habe kürzlich eine andere Website aktualisiert, die auf ECS läuft, und es schien, als gäbe es etwas Seltsames mit der Migration und dann waren die Assets kaputt. Es ist jedoch eine riesige Datenbank, daher dachte ich, ich wäre vielleicht nur ungeduldig, und außerdem habe ich einen Teil dieses Prozesses von Hand gemacht, also dachte ich, ich wäre einfach nachlässig gewesen.

1 „Gefällt mir“

@cvx hat dies gerade zusammengeführt, was das Problem mit der gegenseitigen Abhängigkeit lösen sollte (sobald es die Tests bestanden hat):

Das würde Sinn ergeben :+1:.

Wir glauben, dass der Fehler ausgelöst wird, wenn eine Datenbankmigration einen Aufruf an die Markdown-Engine (PrettyText) enthält. Auf den allermeisten bestehenden Websites ist dies selten. Aber auf einer brandneuen Website fügen wir neue Themen in die Datenbank ein, was das Kochen von Markdown beinhaltet.

Nein, erst in den letzten Stunden (seit DEV: Use esbuild to make DiscourseJsProcessor by CvX · Pull Request #23223 · discourse/discourse · GitHub)

1 „Gefällt mir“

Nun, ich sehe diesen Commit, wenn ich in meiner Entwicklungsumgebung git pull ausführe, aber er schlägt immer noch fehl, sowohl von Ansible als auch bei lokaler Ausführung (und ich lasse die Datenbank nicht fallen).

Es ist noch nicht ganz bei “Tests bestanden” angekommen, daher würde ich erwarten, dass es bei einer Standardinstallation immer noch fehlschlägt.

Ist das ein lokaler “Produktions”-Cluster? Oder eine Entwicklungsumgebung?

1 „Gefällt mir“

Es ist Produktion. Es hat Traefiks als Reverse-Proxy, aber abgesehen davon ist es eine ziemlich Standardinstallation (und eine Datenbank, die aus dem Standard-Postgres13-Image erstellt wurde, aber sie hat pgvector).

Ich habe meine Entwicklungsumgebung erwähnt, weil ich dort einen git pull gemacht habe, um zu sehen, ob der Commit die Tests bestanden hat; ich sehe FIX: Compile js-processor before db:migrate (#23229) in git log dort.

Ich werde zurückgehen und das testen, was ich zuvor getestet habe, und es in einer Weile erneut versuchen.

Ich vermute, Ihre Entwicklungsumgebung läuft auf main, deshalb wird der Commit angezeigt. Wir hatten eine Panne bei unserer internen CI für bestandene Tests, aber hoffentlich wird das in den nächsten 30 Minuten oder so behoben sein :crossed_fingers:

1 „Gefällt mir“

Sollte jetzt da sein. Bitte versuchen Sie es erneut und lassen Sie uns wissen, wie es Ihnen ergeht @pfaffman

1 „Gefällt mir“

Ich habe einen Bootstrap/Deploy ohne Datenbank-Drop ausgeführt: Es hat funktioniert!

Ich habe einen weiteren Bootstrap/Deploy ausgeführt, der die Datenbank gedroppt hat: Es hat funktioniert!

1 „Gefällt mir“

Bin ich der Einzige, der beim Aktualisieren einen leeren Bildschirm hat?

Sie müssen wahrscheinlich einen Befehlszeilen-Neubau durchführen

Dieses Thema wurde nach 10 Stunden automatisch geschlossen. Neue Antworten sind nicht mehr möglich.