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 Mi Piace

You may wish to search for the maxmind issue.

4 Mi Piace

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 Mi Piace

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 Mi Piace

Non sarebbe ragionevole nascondere e saltare la ricerca GeoIP dalle impostazioni di amministrazione dell’utente, se non fosse stata configurata alcuna chiave di licenza? O invece mostrare un’informazione/segnaposto che la ricerca GeoIP sarebbe possibile impostando una chiave di licenza seguendo Configure MAXMIND for reverse IP lookups?

Scorrere i log degli errori per monitorare il funzionamento del sistema è una buona pratica, ed è fastidioso dedicare tempo a indagare sugli errori, solo per scoprire che sono previsti perché si tenta un’operazione che ci si aspetta fallisca per impostazione predefinita e che potrebbe essere facilmente saltata controllando una singola impostazione :wink:.

Posso provare ad aprire una PR su GitHub, se fondamentalmente siete d’accordo. Ma probabilmente sto trascurando qualcosa e non è così facile o ha degli svantaggi che non vedo.

4 Mi Piace

Ottima idea, sarei felice di ricevere una PR

4 Mi Piace

PR aperto, ma ho bisogno di aiuto per applicare i test, nel codice e su come testare un’istanza Discourse in esecuzione: UX: Show if MaxMind key is missing on IP lookup by MichaIng · Pull Request #18993 · discourse/discourse · GitHub

3 Mi Piace

Le ho ignorate:

MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) non è stato trovato: Nessun file o directory di questo tipo @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) non è stato trovato: Nessun file o directory di questo tipo @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb

…ma stavo solo cercando un modo per sopprimerle.

Potrei semplicemente configurare MaxMind, ma in realtĂ  non mi serve.

Il PR sopra è stato unito il 23/11/2023: non dovrei vedere questi errori?

È stato nuovamente annullato poichÊ era troppo complicato adattare i test automatici per essi. È stato fatto un tentativo, ma questi hanno riaggiunto gli avvisi, vanificando lo scopo del mio PR in primo luogo:

Quindi entrambi annullati:

Il problema più probabile è stato rendere la lettura del database dipendente dall’esistenza di una chiave MaxMind. Il database, tuttavia, può essere aggiunto in altri modi. Nella nostra istanza, nel frattempo aggiungiamo database gratuiti DB-IP, che non richiedono un account. Quindi il mio PR avrebbe interrotto il modo in cui lo facciamo ora. La stessa cosa ha causato il fallimento dei test che ho corretto nel mio PR. Ma sul branch principale e/o in alcuni plugin ciò ha probabilmente causato altri problemi.

Una soluzione migliore, se qualcuno vuole riprovare, sarebbe controllare se i file del database esistono, prima di tentare di caricarli, invece di verificare se la chiave di licenza è definita. Quindi qui:

  • Solo se File.join(path, "GeoLite2-City.mmdb") esiste, caricalo con mmdb_load.

Anche l’output GUI modificato potrebbe essere stato un problema per alcuni test, ma dovrebbe essere possibile aggiungerlo senza rompere i test, come fallback solo se non è disponibile alcuna posizione e quindi il rispettivo flag è vero, che è stato impostato con ret[:no_license] = true. Ma dovrebbe essere rinominato in no_db o qualcosa di simile per indicare che non si tratta di sapere se è stata definita una chiave di licenza MaxMind, ma se i file effettivi del database esistono o meno.

1 Mi Piace

Grazie per le informazioni! Sembra sensato controllare i file prima di tentare di caricarli. Non sono la persona adatta a sviluppare una soluzione, quindi proverò ad abilitare MaxMind per ridurre il disordine nel mio log.