ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "groups" does not exist LINE 1: SELECT "groups"."id", "groups"."name" FROM "groups" WHERE
yellow
Failed to handle exception in exception app middleware : PG::UndefinedTable: ERROR: relation "groups" does not exist LINE 1:
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) could not be found: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) could not be found: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
Wir nutzen Discourse hinter einem Reverse-Proxy, sodass alle Benutzer dieselbe IP-Adresse haben. Wir bräuchten also die GeoIP-Suche – ich sehe jedoch keine Option, die IP-Suche komplett zu deaktivieren. Stattdessen müssten wir den Registrierungsprozess durchlaufen und eine Lizenz für etwas erwerben, das wir gar nicht benötigen, nur um die Fehler in den Logs zu beseitigen.
Übersehe ich eine Einstellung, wie man dies deaktivieren kann?
Wäre es nicht sinnvoll, die GeoIP-Abfrage in den Benutzereinstellungen zu verbergen und zu überspringen, wenn kein Lizenzschlüssel konfiguriert ist? Oder stattdessen eine Info/einen Platzhalter anzuzeigen, dass GeoIP-Abfragen durch Setzen eines Lizenzschlüssels möglich wären, indem man Configure MAXMIND for reverse IP lookups folgt?
Das Durchlaufen von Fehlerprotokollen zur Überwachung des Systembetriebs ist eine gute Praxis, und es ist ärgerlich, Zeit mit der Untersuchung von Fehlern zu verbringen, nur um festzustellen, dass sie erwartet werden, weil eine Operation versucht wird, die standardmäßig fehlschlagen soll und die leicht durch Überprüfung einer einzigen Einstellung übersprungen werden könnte .
Ich kann versuchen, einen PR auf GitHub zu eröffnen, wenn Sie grundsätzlich zustimmen. Aber wahrscheinlich übersehe ich etwas und es ist nicht so einfach oder hat Nachteile, die ich nicht sehe.
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) konnte nicht gefunden werden: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) konnte nicht gefunden werden: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
…aber ich habe gerade nach einer Möglichkeit gesucht, sie zu unterdrücken.
Ich könnte MaxMind einfach konfigurieren, aber ich brauche es eigentlich nicht wirklich.
Der PR oben wurde am 23.11.2023 zusammengeführt – sollte ich diese Fehler nicht sehen?
Er wurde wieder rückgängig gemacht, da es zu kompliziert war, die automatisierten Tests dafür anzupassen. Es wurde ein Versuch unternommen, aber diese fügten die Warnungen wieder hinzu und brachen damit den Zweck meines PRs von Anfang an:
Daher wurden beide rückgängig gemacht:
Das Problem war höchstwahrscheinlich, dass das Lesen der Datenbank von der Existenz eines MaxMind-Schlüssels abhängig gemacht wurde. Die Datenbank kann jedoch auch auf andere Weise hinzugefügt werden. Auf unserer eigenen Instanz fügen wir inzwischen kostenlose DB-IP-Datenbanken hinzu, die keine Registrierung erfordern. Mein eigener PR hätte also die Art und Weise, wie wir es jetzt tun, kaputt gemacht. Dasselbe verursachte fehlschlagende Tests, die ich in meinem PR behoben habe. Aber im Hauptzweig und/oder in bestimmten Plugins verursachte dies wahrscheinlich andere Probleme.
Eine bessere Lösung, falls jemand dies erneut angehen möchte, wäre zu prüfen, ob die Datenbankdateien existieren, bevor versucht wird, sie zu laden, anstatt ob der Lizenzschlüssel definiert ist. Also hier:
Nur wenn File.join(path, "GeoLite2-City.mmdb") existiert, mmdb_load es.
Die angepasste GUI-Ausgabe könnte ebenfalls ein Problem für einige Tests gewesen sein, aber es sollte möglich sein, sie hinzuzufügen, ohne Tests zu brechen, als Fallback nur, wenn kein Standort verfügbar ist und dann das entsprechende Flag wahr ist, das mit ret[:no_license] = true gesetzt wurde. Aber es sollte in no_db oder so umbenannt werden, um anzuzeigen, dass es nicht darum geht, ob ein MaxMind-Lizenzschlüssel definiert wurde, sondern ob die eigentlichen Datenbankdateien existieren oder nicht.
Danke für die Info! Es ist sinnvoll, nach Dateien zu suchen, bevor man versucht, sie zu laden. Ich bin nicht der Richtige, um eine Lösung zu entwickeln, also werde ich versuchen, MaxMind zu aktivieren, um mein Log aufzuräumen.