Aktualisierung des AI-Plugins schlägt fehl

Dies aus Latest update won't build due to various reasons destilliert, da dieses Thema derzeit drei verschiedene Probleme behandelt.

Problem:

Wenn versucht wird, Discourse mit installiertem AI-Plugin zu aktualisieren, führt die Aktualisierung zu einem Fehler mit

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

und macht Discourse unbrauchbar, bis das AI-Plugin entfernt wird.

Wann tritt dies auf:

Beim Aktualisieren einer Instanz mit dem AI-Plugin
Von einer Version, die die Migration 20240514171609 noch nicht hat
Zu Commit 8d5f901 oder neuer

(Meine Hauptfrage war, warum dies nur beim Aktualisieren eines bereits installierten Plugins und nicht bei einer Neuinstallation des Plugins auftritt. Die Antwort ist, dass Core PG::UndefinedTable-Ausnahmen abfängt (hier), aber nicht PG:UndefinedColumn. Wenn das Plugin bereits installiert ist, handelt es sich um letzteres, wenn das Plugin brandneu ist, dann um ersteres).

Grund:

plugin.rb ruft LlmModel.enable_or_disable_srv_llm! auf, was davon abhängt, dass die Spalte llm_models.url vorhanden ist. Wenn jedoch die Migration 20240514171609 (die diese Spalte hinzufügt) noch nicht angewendet wurde, stürzt sie ab.
Das Problem ist, dass db:migrate auch diesen Code ausführt, was den Rake-Task zum Absturz bringt, bevor die Migration angewendet werden kann.

Vorgeschlagene Workarounds / Korrekturen:

  1. Ändern Sie den Code zu LlmModel.enable_or_disable_srv_llm! if Discourse.running_in_rack? (damit db:migrate ihn nicht aufruft)
    oder
  2. Ändern Sie den Code zu LlmModel.enable_or_disable_srv_llm! rescue nil (damit er nicht abstürzt)
    oder
  3. Ändern Sie den Bootstrapping-Code im Core, um PG::UndefinedColumn zusätzlich zu PG::UndefinedTable abzufangen (damit dieses und zukünftige ähnliche Probleme abgefangen werden)

@Roman

6 „Gefällt mir“

Danke für die Information, @RGJ. Ich kümmere mich darum und melde mich, sobald es behoben ist.

7 „Gefällt mir“

Hier wurde ein Fix eingereicht:

Bitte lasst mich wissen, falls ihr weiterhin Probleme habt.

5 „Gefällt mir“

Funktioniert einwandfrei! Danke :slight_smile:

3 „Gefällt mir“