Atualização do plugin de IA falha

Distilando isso de Latest update won't build due to various reasons, já que esse tópico trata de três problemas diferentes no momento.

Problema:

Ao tentar atualizar o Discourse com o plugin de IA instalado, a atualização gera um erro com

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

e torna o Discourse inutilizável até que o plugin de IA seja removido.

Quando isso acontece:

Ao atualizar uma instância com o plugin de IA
De uma versão que ainda não possui a migração 20240514171609
Para o commit 8d5f901 ou mais recente

(Minha principal pergunta era por que isso só acontece ao atualizar um plugin já instalado e não quando o plugin é recém-instalado. A resposta é que o core captura exceções PG::UndefinedTable, mas não PG:UndefinedColumn. Se o plugin já estiver instalado, a exceção é a última; se o plugin for totalmente novo, é a primeira).

Razão:

plugin.rb chama LlmModel.enable_or_disable_srv_llm!, que depende da coluna llm_models.url estar presente. Mas se a migração 20240514171609 (que adiciona essa coluna) ainda não foi aplicada, ele falha.
O problema é que db:migrate também executa esse código, o que faz com que a tarefa rake falhe antes que a migração possa ser aplicada.

Soluções alternativas / correções sugeridas:

  1. alterar o código para LlmModel.enable_or_disable_srv_llm! if Discourse.running_in_rack? (para que db:migrate não a chame)
    ou
  2. alterar o código para LlmModel.enable_or_disable_srv_llm! rescue nil (para que não falhe)
    ou
  3. alterar o código de bootstrap no core para capturar PG::UndefinedColumn além de PG::UndefinedTable (para que este e futuros problemas semelhantes sejam capturados)

@Roman

6 curtidas

Obrigado por nos informar, @RGJ. Cuidarei disso e atualizarei assim que for corrigido.

7 curtidas

Enviei uma correção aqui:

Por favor, me avise se você ainda tiver problemas.

5 curtidas

Funciona perfeitamente! Obrigado :slight_smile:

3 curtidas