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
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…
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 .
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.
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
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.
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.