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 me gusta

You may wish to search for the maxmind issue.

4 Me gusta

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 Me gusta

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 Me gusta

¿No sería razonable ocultar y omitir la búsqueda GeoIP en la configuración de administración del usuario, si no se ha configurado ninguna clave de licencia? ¿O, en su lugar, mostrar información/marcador de posición de que la búsqueda GeoIP sería posible configurando una clave de licencia siguiendo Configure MAXMIND for reverse IP lookups?

Recorrer los registros de errores para monitorear la operación del sistema es una buena práctica, y es molesto dedicar tiempo a investigar errores, solo para descubrir que son esperados porque se intenta una operación que se espera que falle por defecto y que podría omitirse fácilmente verificando una sola configuración :wink:.

Puedo intentar abrir una PR en GitHub, si básicamente estás de acuerdo. Pero probablemente estoy pasando algo por alto y no es tan fácil o tiene inconvenientes que no estoy viendo.

4 Me gusta

Suena bien, estaría contento con una PR.

4 Me gusta

PR abierto, pero necesito ayuda para aplicar pruebas, en el código y cómo probar en una instancia de Discourse en ejecución: UX: Show if MaxMind key is missing on IP lookup by MichaIng · Pull Request #18993 · discourse/discourse · GitHub

3 Me gusta

He estado ignorando estos:

No se pudo encontrar MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb): No existe tal archivo o directorio @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) no se pudo encontrar: No existe tal archivo o directorio @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb

…pero acabo de buscar una forma de suprimirlos.

Podría simplemente configurar MaxMind, pero en realidad no lo necesito.

El PR anterior se fusionó el 23/11/2023. ¿No debería estar viendo estos errores?

Se revirtió de nuevo ya que era demasiado complicado ajustar las pruebas automatizadas para ellas. Se hizo un intento, pero estas volvieron a añadir las advertencias, rompiendo el propósito de mi PR en primer lugar:

Por lo tanto, ambas se revirtieron:

El problema probablemente fue hacer que la lectura de la base de datos dependiera de la existencia de una clave MaxMind. Sin embargo, la base de datos se puede añadir de otras maneras. En nuestra propia instancia, mientras tanto, añadimos bases de datos gratuitas de DB-IP, que no requieren una cuenta. Así que mi propio PR habría roto la forma en que lo hacemos ahora. Lo mismo causó fallos en las pruebas que arreglé en mi PR. Pero en la rama principal y/o en ciertos plugins, esto probablemente causó otros problemas.

Una mejor solución, si alguien quiere abordar esto de nuevo, sería comprobar si los archivos de la base de datos existen, antes de intentar cargarlos, en lugar de si la clave de licencia está definida. Así que aquí:

  • Solo si File.join(path, "GeoLite2-City.mmdb") existe, cárgalo con mmdb_load.

La salida GUI ajustada también podría haber sido un problema para algunas pruebas, pero debería ser posible añadirla sin romper las pruebas, como un recurso de último caso solo si no hay ubicación disponible y luego el indicador respectivo es verdadero, que se estableció con ret[:no_license] = true. Pero debería renombrarse a no_db o algo similar para indicar que no se trata de si se ha definido una clave de licencia de MaxMind, sino de si los archivos de la base de datos reales existen o no.

1 me gusta

¡Gracias por la información! Parece sensato comprobar si existen archivos antes de intentar cargarlos. No soy la persona adecuada para desarrollar una solución, así que intentaré habilitar MaxMind para que mi registro esté más limpio.