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 curtida

You may wish to search for the maxmind issue.

4 curtidas

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 curtidas

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 curtidas

Não seria razoável ocultar e ignorar a consulta GeoIP nas configurações de administração do usuário, se nenhuma chave de licença tivesse sido configurada? Ou, em vez disso, mostrar uma informação/placeholder de que a consulta GeoIP seria possível configurando uma chave de licença seguindo Configure MAXMIND for reverse IP lookups?

Percorrer os logs de erro para monitorar a operação do sistema é uma boa prática, e é irritante gastar tempo investigando erros, apenas para descobrir que eles são esperados porque uma operação está sendo tentada que se espera que falhe por padrão e que poderia ser facilmente ignorada verificando uma única configuração :wink:.

Posso tentar abrir um PR no GitHub, se você basicamente concordar. Mas provavelmente estou ignorando algo e não é tão fácil ou tem desvantagens que não estou vendo.

4 curtidas

Parece bom, ficaria feliz com um PR

4 curtidas

PR aberto, mas preciso de ajuda para aplicar testes, no código e como testar em uma instância Discourse em execução: UX: Show if MaxMind key is missing on IP lookup by MichaIng · Pull Request #18993 · discourse/discourse · GitHub

3 curtidas

Tenho ignorado estes:

MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) não pôde ser encontrado: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) não pôde ser encontrado: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb

…mas acabei de procurar uma forma de suprimi-los.

Eu poderia apenas configurar o MaxMind, mas eu realmente não preciso dele.

O PR acima foi mesclado em 23/11/2023 – eu não deveria estar vendo esses erros?

Ele foi revertido novamente, pois era muito complicado ajustar os testes automatizados para eles. Uma tentativa foi feita, mas eles reintroduziram os avisos, quebrando o propósito do meu PR em primeiro lugar:

Portanto, ambos foram revertidos:

O problema provavelmente foi tornar a leitura do banco de dados dependente da existência de uma chave MaxMind. No entanto, o banco de dados pode ser adicionado de outras maneiras. Em nossa própria instância, enquanto isso, adicionamos bancos de dados gratuitos DB-IP, que não exigem conta. Portanto, meu próprio PR teria quebrado a maneira como fazemos isso agora. O mesmo causou falhas nos testes que corrigi em meu PR. Mas no branch principal e/ou em alguns plugins, isso provavelmente causou outros problemas.

Uma solução melhor, se alguém quiser abordar isso novamente, seria verificar se os arquivos do banco de dados existem antes de tentar carregá-los, em vez de verificar se a chave de licença está definida. Então, aqui:

  • Somente se File.join(path, "GeoLite2-City.mmdb") existir, carregue-o com mmdb_load.

A saída ajustada da GUI também pode ter sido um problema para alguns testes, mas deve ser possível adicioná-la sem quebrar os testes, como um fallback apenas se nenhum local estiver disponível e então a respectiva flag for verdadeira, que foi definida com ret[:no_license] = true. Mas deveria ser renomeada para no_db ou algo assim para indicar que não se trata de saber se uma chave de licença MaxMind foi definida, mas se os arquivos reais do banco de dados existem ou não.

1 curtida

Obrigado pelas informações! Parece sensato verificar os arquivos antes de tentar carregá-los. Eu não sou o cara para desenvolver uma correção, então tentarei habilitar o MaxMind para despoluir meu log.