MaxMindDB not found error

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“

I do not find an authoritative answer on searching for the issue. Can someone who knows link it here?

Are these MaxMindDB warnings to be ignored? Rebuilding doesn’t seem to fix the issue. I have been getting them for months.

Now you can! Configure MAXMIND for reverse IP lookups

3 „Gefällt mir“

We are using Discourse behind a reverse proxy, so all users have the same IP, and we would need the GeoIP lookup - I do not see the option to disable the IP lookup altogether, instead of going through the registration process and obtaining a license for something that we are not needed, only in order to eliminate the errors from the logs…

Do I miss a setting, on how to disable this?

You should fix that. I think topics like How to set up Discourse on a server with existing Apache sites might have the instructions for that.

I think that if you just don’t set the maxmind key you’ll get a warning when you rebuild but it won’t hurt anything.

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.