Problemas de migración relacionados con DiscourseJsProcessor?

Hola @david, tengo problemas con un 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'

¿Está esto relacionado con DEV: Use esbuild to make DiscourseJsProcessor by CvX · Pull Request #23223 · discourse/discourse · GitHub?

1 me gusta

¿Hay alguna traza de pila adicional disponible? ¿O puede ver qué migración la está activando?

2 Me gusta

En realidad no te preocupes, @cvx y yo hemos encontrado el problema; tendremos una solución pronto.

1 me gusta

¡Simplemente funcionó!

Pensé que se arreglaría con una nueva imagen base hace unos minutos, pero falló una vez después de eso. . .

De todos modos, parece que ahora está bien.

1 me gusta

Ok, genial, me alegra saber que está funcionando. Tenemos una situación de huevo o gallina que debemos resolver. Siguiendo el commit que enlazaste, assets:precompile necesita ejecutarse al menos una vez antes de ejecutar db:migrate. Pero lo inverso también es cierto: assets:precompile necesita un esquema de base de datos actualizado.

Por curiosidad, ¿cuál fue tu proceso aquí? ¿Estabas realizando una actualización basada en docker_manager a través de la interfaz de usuario? ¿O fue un ./launcher rebuild app? (¿o algo completamente diferente?)

1 me gusta

Me apresuré a juzgar.

Volvió a fallar, pero . .. . oh. ¿Pero la última vez la base de datos ya se había migrado?

Cuando funcionó, ejecuté ./launcher bootstrap x desde la línea de comandos.

Luego lo ejecuté con Ansible, que hace

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

(Supongo que necesito eliminar git checkout main, no estoy seguro de por qué estaba ahí)

Ajá. Pero Ansible está eliminando la base de datos primero (este es para un sitio que uso para migraciones, por lo que empezar de nuevo es una ocurrencia frecuente). Así que eso es coherente con tus huevos. Suspiro. Pero luego desactivé drop_database y lo ejecuté dos veces desde Ansible, y falló, y luego volví a arrancar desde la línea de comandos, y todavía falló. No hay pistas en las migraciones:

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'

Pero, ¿podría 'templates/enable-ruby-yjit.yml' ser el problema? EDITAR: Ese no era el problema. Y luego eliminé las plantillas de mysql e importación. Todavía sin suerte.

¿Ha existido este problema durante mucho tiempo? Actualicé otro sitio recientemente que está en ECS y parecía que algo extraño estaba sucediendo con la migración y luego los activos estaban rotos. Sin embargo, es una base de datos enorme, así que pensé que podría estar impaciente, y también hice parte de ese proceso a mano, así que pensé que simplemente había sido descuidado.

1 me gusta

@cvx acaba de fusionar esto, lo que debería resolver el problema de interdependencia (una vez que pase las pruebas):

Eso tendría sentido :+1:.

Creemos que el error se activa si alguna migración de la base de datos incluye una llamada al motor de markdown (PrettyText). En la gran mayoría de los sitios existentes, eso es raro. Pero en un sitio completamente nuevo, sembramos nuevos temas en la base de datos, lo que implica cocinar algo de markdown.

No, solo en las últimas horas (desde DEV: Use esbuild to make DiscourseJsProcessor by CvX · Pull Request #23223 · discourse/discourse · GitHub)

1 me gusta

Bueno, veo ese commit cuando hago git pull en mi entorno de desarrollo, pero sigue fallando, tanto desde ansible como cuando lo ejecuto localmente (y no estoy descartando la base de datos).

Todavía no ha pasado las pruebas, así que esperaría que todavía falle en una instalación estándar.

¿Es este un clúster de ‘producción’ local? ¿O un entorno de desarrollo?

1 me gusta

Es producción. Tiene traefiks como proxy inverso, pero aparte de eso es una instalación bastante estándar (y una base de datos creada a partir de la imagen estándar de postgres13, pero tiene pgvector).

Mencioné mi entorno de desarrollo porque hice un git pull allí intentando ver si el commit había pasado las pruebas; veo FIX: Compile js-processor before db:migrate (#23229) en git log allí.

Volveré a probar lo que estaba probando antes e intentaré de nuevo en un rato.

Supongo que tu entorno de desarrollo se está ejecutando en main, por eso aparece el commit. Tuvimos un problema en nuestra CI interna para las pruebas superadas, pero esperamos que se resuelva en los próximos 30 minutos más o menos :crossed_fingers:

1 me gusta

Ok, ya debería estar ahí. Por favor, inténtalo de nuevo y dinos cómo te va @pfaffman.

1 me gusta

¡Ejecuté un bootstrap/deploy sin eliminar la base de datos: ¡Funcionó!

¡Ejecuté otro bootstrap/deploy que eliminó la base de datos: ¡Funcionó!

1 me gusta

¿Soy el único al que le aparece una pantalla en blanco al actualizar?

Probablemente necesites hacer una reconstrucción desde la línea de comandos.

Este tema se cerró automáticamente después de 10 horas. Ya no se permiten nuevas respuestas.