Errore MaxMindDB non trovato

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.

Ora puoi! Configure MAXMIND for reverse IP lookups

3 Mi Piace

Stiamo utilizzando Discourse dietro un reverse proxy, quindi tutti gli utenti hanno lo stesso indirizzo IP e avremmo bisogno della ricerca GeoIP. Non vedo l’opzione per disabilitare completamente la ricerca dell’IP, invece di dover passare attraverso il processo di registrazione e ottenere una licenza per qualcosa di cui non abbiamo bisogno, solo per eliminare gli errori dai log…

Manca una impostazione per disabilitare questa funzionalitĂ ?

Dovresti risolvere questo problema. Penso che argomenti come Come configurare Discourse su un server con siti Apache esistenti potrebbero contenere le istruzioni per farlo.

Penso che se non imposti semplicemente la chiave MaxMind riceverai un avviso durante la ricostruzione, ma non causerĂ  alcun danno.

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.