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

You may wish to search for the maxmind issue.

「いいね!」 4

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

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

ライセンスキーが設定されていない場合、ユーザー管理設定でGeoIP検索を非表示にしスキップするのは妥当ではありませんか?それとも、ライセンスキーを設定することでGeoIP検索が可能になるという情報/プレースホルダーを表示し、Configure MAXMIND for reverse IP lookups に従うべきでしょうか?

エラーログをループしてシステム操作を監視するのは良い習慣であり、デフォルトでは失敗することが予想され、単一の設定をチェックするだけで簡単にスキップできる操作であることが判明したためにエラーを調査するのに時間を費やすのは迷惑です :wink:

基本的に同意していただけるなら、GitHubでPRを開こうと試すことができます。しかし、おそらく何かを見落としており、それほど簡単ではないか、あるいは私が見ていない欠点があるのかもしれません。

「いいね!」 4

良さそうですね。PRを喜んで受け取ります。

「いいね!」 4

PR はアップされましたが、テストの適用方法、コード内でのテスト、および実行中の Discourse インスタンスでのテスト方法について、いくつかヘルプが必要です: UX: Show if MaxMind key is missing on IP lookup by MichaIng · Pull Request #18993 · discourse/discourse · GitHub

「いいね!」 3

これらを無視していました。

MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-ASN.mmdb) が見つかりませんでした: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-ASN.mmdb
MaxMindDB (/var/www/discourse/vendor/data/GeoLite2-City.mmdb) が見つかりませんでした: No such file or directory @ rb_sysopen - /var/www/discourse/vendor/data/GeoLite2-City.mmdb

…しかし、これらを抑制する方法を探していました。

MaxMind を設定することはできますが、実際には 必要ありません

上記のPRは2023-11-23にマージされましたが、これらのエラーは表示されないはずですか?

自動テストの調整が複雑すぎるため、再度リバートされました。試みは行われましたが、それによって警告が再追加され、私のPRの目的が最初から損なわれてしまいました。

したがって、両方ともリバートされました。

問題は、MaxMindキーの存在にデータベースの読み込みを依存させたことにある可能性が高いです。しかし、データベースは他の方法でも追加できます。私たちのインスタンスでは、現在、アカウントを必要としない無料のDB-IPデータベースを追加しています。そのため、私のPRは現在行っている方法を妨げることになります。同じことがテストの失敗を引き起こし、私のPRで修正しました。しかし、メインブランチや特定のプラグインでは、他の問題を引き起こした可能性が高いです。

もし誰かがこの問題に再度取り組むのであれば、より良い解決策は、ライセンスキーが定義されているかどうかではなく、データベースファイルをロードしようとする前に、データベースファイルが存在するかどうかを確認することです。つまり、次の場所で:

mmdb_loadするのは、File.join(path, "GeoLite2-City.mmdb")が存在する場合のみです。
GUIの調整された出力も一部のテストで問題となった可能性がありますが、テストを壊すことなく追加することは可能であるはずです。これは、場所が利用できず、かつret[:no_license] = trueで設定された対応するフラグがtrueの場合のフォールバックとしてのみです。しかし、MaxMindライセンスキーが定義されているかどうかではなく、実際のデータベースファイルが存在するかどうかを示すために、no_dbなどに名前を変更すべきです。

「いいね!」 1

情報ありがとうございます!ロードしようとする前にファイルをチェックするのは理にかなっていますね。修正できるような人物ではないので、ログを整理するためにMaxMindを有効にしてみます。