Erreur « MaxMindDB non trouvée »

J’ai des erreurs dans les journaux

rouge :

ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "groups" does not exist LINE 1: SELECT "groups"."id", "groups"."name" FROM "groups" WHERE

jaune

Échec de la gestion de l'exception dans le middleware de l'application d'exception : PG::UndefinedTable: ERROR: relation "groups" does not exist LINE 1: 
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) introuvable : No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) introuvable : No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
1 « J'aime »

Vous voudrez peut-être rechercher l’issue MaxMind.

4 « J'aime »

Je ne trouve pas de réponse officielle concernant la recherche de ce problème. Quelqu’un qui connaît pourrait-il fournir un lien ici ?

Ces avertissements MaxMindDB doivent-ils être ignorés ? La reconstruction ne semble pas résoudre le problème. Je les rencontre depuis des mois.

Vous pouvez maintenant le faire ! Configure MAXMIND for reverse IP lookups

3 « J'aime »

Nous utilisons Discourse derrière un proxy inverse, si bien que tous les utilisateurs partagent la même adresse IP. Nous aurions donc besoin de la recherche GeoIP. Je ne vois pas d’option pour désactiver complètement la recherche d’adresse IP. Il ne nous semble pas nécessaire de passer par le processus d’inscription et d’obtenir une licence pour une fonctionnalité dont nous n’avons pas besoin, simplement afin d’éliminer les erreurs des journaux…

Manquerais-je d’un paramètre pour désactiver cette fonctionnalité ?

Vous devriez régler cela. Je pense que des sujets comme Comment installer Discourse sur un serveur avec des sites Apache existants pourraient contenir les instructions nécessaires.

Je pense que si vous ne définissez simplement pas la clé MaxMind, vous obtiendrez un avertissement lors de la reconstruction, mais cela ne nuira à rien.

2 « J'aime »

Ne serait-il pas raisonnable de masquer et d’ignorer la recherche GeoIP dans les paramètres d’administration de l’utilisateur, si aucune clé de licence n’a été configurée ? Ou plutôt afficher une information/un espace réservé indiquant que la recherche GeoIP serait possible en configurant une clé de licence en suivant Configure MAXMIND for reverse IP lookups ?

Parcourir les journaux d’erreurs pour surveiller le fonctionnement du système est une bonne pratique, et il est agaçant de passer du temps à enquêter sur des erreurs, juste pour découvrir qu’elles sont attendues parce qu’une opération est tentée qui est censée échouer par défaut et qui pourrait être facilement évitée en vérifiant un seul paramètre :wink:.

Je peux essayer d’ouvrir une PR sur GitHub, si vous êtes globalement d’accord. Mais je néglige probablement quelque chose et ce n’est pas si facile ou cela a des inconvénients que je ne vois pas.

4 « J'aime »

Bonne idée, je serais ravi d’une PR.

4 « J'aime »

PR ouvert, mais j’ai besoin d’aide pour appliquer les tests, dans le code et comment tester sur une instance Discourse en cours d’exécution : UX: Show if MaxMind key is missing on IP lookup by MichaIng · Pull Request #18993 · discourse/discourse · GitHub

3 « J'aime »

J’ai ignoré ceci :

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

…mais je cherchais juste un moyen de les supprimer.

Je pourrais simplement configurer MaxMind, mais je n’en ai pas vraiment besoin.

Le PR ci-dessus a été fusionné le 23/11/2023 – ne devrais-je pas voir ces erreurs ?

Il a de nouveau été annulé car il était trop compliqué d’ajuster les tests automatisés pour cela. Une tentative a été faite, mais ceux-ci ont réintroduit les avertissements, brisant le but de mon PR en premier lieu :

D’où les deux annulations :

Le problème était très probablement de rendre la lecture de la base de données dépendante de l’existence d’une clé MaxMind. La base de données peut cependant être ajoutée d’autres manières. Sur notre propre instance, nous ajoutons en attendant des bases de données gratuites DB-IP, qui ne nécessitent pas de compte. Mon propre PR aurait donc brisé la façon dont nous procédons actuellement. La même chose a causé des tests échoués que j’ai corrigés dans mon PR. Mais sur la branche principale et/ou dans certains plugins, cela a probablement causé d’autres problèmes.

Une meilleure solution, si quelqu’un veut aborder cela à nouveau, serait de vérifier si les fichiers de la base de données existent, avant de tenter de les charger, au lieu de vérifier si la clé de licence est définie. Donc ici :

  • Uniquement si File.join(path, "GeoLite2-City.mmdb") existe, mmdb_load le.

La sortie GUI ajustée pourrait également avoir été un problème pour certains tests, mais il devrait être possible de l’ajouter sans casser les tests, comme solution de repli uniquement si aucune localisation n’est disponible et que le drapeau respectif est vrai, qui a été défini avec ret[:no_license] = true. Mais il faudrait le renommer en no_db ou quelque chose de similaire pour indiquer qu’il ne s’agit pas de savoir si une clé de licence MaxMind a été définie, mais si les fichiers de base de données réels existent ou non.

1 « J'aime »

Merci pour l’info ! Il semble judicieux de vérifier l’existence des fichiers avant d’essayer de les charger. Je ne suis pas la personne idéale pour développer un correctif, donc j’essaierai d’activer MaxMind pour désencombrer mon journal.