MaxMindDB-Fehler: Nicht gefunden

I have some errors in logs

red:

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
1 „Gefällt mir“

You may wish to search for the maxmind issue.

4 „Gefällt mir“

Ich finde keine autoritative Antwort zur Suche nach dem Problem. Kann jemand, der Bescheid weiß, einen Link hierher posten?

Sollten diese MaxMindDB-Warnungen ignoriert werden? Ein Neuaufbau scheint das Problem nicht zu beheben. Ich bekomme sie seit Monaten.

Jetzt können Sie das! Configure MAXMIND for reverse IP lookups

3 „Gefällt mir“

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?

Das solltest du beheben. Ich denke, Themen wie Wie man Discourse auf einem Server mit bestehenden Apache-Sites einrichtet enthalten die entsprechenden Anweisungen.

Ich glaube, wenn du den MaxMind-Schlüssel einfach nicht festlegst, erhältst du beim Neuaufbau zwar eine Warnung, aber es wird nichts beschädigt.

2 „Gefällt mir“

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 :wink:.

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.

4 „Gefällt mir“

Klingt gut, wäre mit einem PR zufrieden

4 „Gefällt mir“

PR ist offen, aber ich brauche Hilfe beim Anwenden von Tests, im Code und wie man auf einer laufenden Discourse-Instanz testet: UX: Show if MaxMind key is missing on IP lookup by MichaIng · Pull Request #18993 · discourse/discourse · GitHub

3 „Gefällt mir“

Ich habe diese ignoriert:

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.

1 „Gefällt mir“

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.