La actualización del plugin de IA falla

Destilando esto de Latest update won't build due to various reasons ya que ese tema trata sobre tres problemas diferentes en este momento.

Problema:

Al intentar actualizar Discourse con el plugin de IA instalado, la actualización genera un error con

PG::UndefinedColumn: ERROR:  column llm_models.url does not exist
LINE 1: SELECT "llm_models".* FROM "llm_models" WHERE "llm_models"

y deja Discourse inutilizable hasta que se elimine el plugin de IA.

Cuándo ocurre esto:

Al actualizar una instancia con el plugin de IA
Desde una versión que aún no tiene la migración 20240514171609
A commit 8d5f901 o posterior

(Mi pregunta principal era por qué esto solo ocurre al actualizar un plugin ya instalado y no cuando el plugin se instala por primera vez. La respuesta es que el núcleo captura excepciones PG::UndefinedTable pero no PG:UndefinedColumn. Si el plugin ya está instalado, la excepción es la última; si el plugin es completamente nuevo, es la primera).

Razón:

plugin.rb llama a LlmModel.enable_or_disable_srv_llm! que depende de que la columna llm_models.url esté presente. Pero si la migración 20240514171609 (que agrega esa columna) aún no se ha aplicado, falla.
El problema es que db:migrate también ejecuta este código, lo que hace que la tarea rake falle antes de que se pueda aplicar la migración.

Soluciones alternativas / correcciones sugeridas:

  1. cambiar el código a LlmModel.enable_or_disable_srv_llm! if Discourse.running_in_rack? (para que db:migrate no lo llame)
    o
  2. cambiar el código a LlmModel.enable_or_disable_srv_llm! rescue nil (para que no falle)
    o
  3. cambiar el código de arranque en el núcleo para capturar PG::UndefinedColumn además de PG::UndefinedTable (para que esto y problemas similares futuros sean capturados)

@Roman

6 Me gusta

Gracias por informarnos, @RGJ. Me encargaré de esto y actualizaré una vez que esté solucionado.

7 Me gusta

Puse una solución aquí:

Avísame si sigues teniendo problemas, por favor.

5 Me gusta

¡Funciona a la perfección! Gracias :slight_smile:

3 Me gusta