有効なキーで maxmind db のダウンロードに失敗するも、コンテナ内からはダウンロード可能

ビルドはこのせいで失敗しました。ENV変数を削除して、それなしで再ビルドしました。その後、コンテナ内でデバッグを行いました。そこで discourse.conf にキーを追加しましたが、まだ失敗しています。

(クライアントに無効なキーを受け取ったと伝える前にこれをやったのは幸いでした!)

URLをダウンロードしようとしているデータベースを次のように出力するために、Rakeタスクに puts を追加しました。

    url =
      "https://download.maxmind.com/app/geoip_download?license_key=#{GlobalSetting.maxmind_license_key}&edition_id=#{name}&suffix=tar.gz"

    gz_file =
      FileHelper.download(
        url,
        max_file_size: 100.megabytes,
        tmp_file_name: "#{name}.gz",
        validate_uri: false,
        follow_redirect: false,
      )

    if gz_file.nil?
      puts "no gzfile"
    end
    puts "Got file #{gz_file} for #{url}"
    filename = File.basename(gz_file.path)

これで次のような出力が得られます。

root@web-only:/var/www/discourse# rake maxminddb:get
Plugin name is 'discourse-topic-voting', but plugin directory is named 'discourse-voting'
Downloading MaxMindDb's GeoLite2-City...
no gzfile
Got file  for https://download.maxmind.com/app/geoip_download?license_key=VALID_KEY_IS_HERE&edition_id=GeoLite2-City&suffix=tar.gz
rake aborted!
NoMethodError: undefined method `path' for nil:NilClass (NoMethodError)

    filename = File.basename(gz_file.path)
                                    ^^^^^
/var/www/discourse/lib/discourse_ip_info.rb:52:in `mmdb_download'
/var/www/discourse/lib/tasks/maxminddb.rake:9:in `block (2 levels) in <main>'
/var/www/discourse/lib/tasks/maxminddb.rake:7:in `each'
/var/www/discourse/lib/tasks/maxminddb.rake:7:in `block in <main>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => maxminddb:get
(See full trace by running task with --trace)

別のトピックで、サイトがMaxmindによってブロックされているという問題がありましたが、私はそれを試して、問題のサーバーでコンテナ内から wget を使用してそのURLを正常にダウンロードしました。

FileHelper.download は実際には Helper ではなく、ファイルをサイレントに返さずに nil を返しているように思えます。ファイルはわずか44MBなので、それではありません。wgetで完全なヘッダーを確認しても、リダイレクトは見られません。

何か考えられる原因はありますか?

このエラーをキャッチせずに、無効なキーでビルドを完了させる理由がありますか?警告を表示するだけでよいのではないでしょうか?

「いいね!」 1

follow_redirect: true の方がうまく機能しますか?

最近の変更により、MaxMind はダウンロード用の URL を変更しましたが、リダイレクトを許可する限り、元の URL を使用し続けることができます。

「いいね!」 2

コミュニケーションミスで、実際には5月1日から開始ではないのかもしれませんね。:thinking:

「いいね!」 2

OMG。はい。なぜそれを変更せずにリダイレクトされていないと思ったのかわかりません。

「いいね!」 4

承知しました。マージしました。結果をお知らせください!

「いいね!」 3

MaxMindキーをフォーラムで再度使用しようとしましたが、再構築を試みると元のエラーが発生します。

「いいね!」 1

最新のDiscourseバージョンを使用しているか確認していただけますか?Jayには機能しているので、特にMaxMindの推奨に従っている場合、あなたにも機能しない理由はないはずです。:thinking:

「いいね!」 1

アプリを再構築しているのに、どのように使用していないのか分かりません。

おっしゃる通りです。しかし、どうなるかわかりませんね。:smile: とにかく、表示されているハッシュのバージョンを確認しましょう。

MaxMindの発表を読み直しましたが、URLの変更やリダイレクトの許可以外には何も見当たりません。:thinking:

「いいね!」 1

tests-passed を実行していますか、それとも latest-release を実行していますか?

tests-passed にいるはずですが、少なくとも私の知る限りではそうです。

ソースを表示したときに URL を取得するか、コミットを取得します。

クラッシュしたビルドのログの終了:

MaxMindDBをダウンロード中...
Javascriptを圧縮し、ソースマップを生成
I, [2024-03-26T13:27:38.305597 #1] INFO -- : 非同期プロセスを終了
I, [2024-03-26T13:27:38.307312 #1]  INFO -- : HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 42 に INT を送信
I, [2024-03-26T13:27:38.307891 #1]  INFO -- : exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 111 に TERM を送信
111:signal-handler (1711459658) SIGTERMを受信、シャットダウンをスケジュール中...
2024-03-26 13:27:38.307 UTC [42] LOG:  高速シャットダウン要求を受信
2024-03-26 13:27:38.314 UTC [42] LOG:  アクティブなトランザクションを中止中
2024-03-26 13:27:38.321 UTC [42] LOG:  バックグラウンドワーカー "logical replication launcher" (PID 51) が終了コード 1 で終了しました
2024-03-26 13:27:38.322 UTC [46] LOG:  シャットダウン中
111:M 26 Mar 2024 13:27:38.353 # ユーザーがシャットダウンを要求しました...
111:M 26 Mar 2024 13:27:38.353 * 終了前に最終RDBスナップショットを保存中。
2024-03-26 13:27:38.415 UTC [42] LOG:  データベースシステムはシャットダウンしました
111:M 26 Mar 2024 13:27:39.896 * DBはディスクに保存されました
111:M 26 Mar 2024 13:27:39.896 # Redisは終了準備ができました、さようなら...
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse &amp;&amp; su discourse -c 'bundle exec rake themes:update assets:precompile' がリターン #&lt;Process::Status: pid 3889 exit 1&gt; で失敗しました
失敗場所: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec はパラメータ {"cd"=&gt;"$home", "hook"=&gt;"assets_precompile", "cmd"=&gt;["su discourse -c 'bundle exec rake themes:update assets:precompile'"]} で失敗しました
ブートストラップは終了コード 1 で失敗しました
** ブートストラップに失敗しました ** 上にスクロールして、以前のエラーメッセージを探してください。複数ある場合があります。
./discourse-doctor が問題を診断するのに役立つかもしれません。
fe4eec7726fdbe08aaa2691e806bb17423a8f4eaedb8414397e3097d725e04c7

コミット: Commits · discourse/discourse · GitHub

後で追記しますが、発生したサイトへのリンクは記載しませんでした。なぜなら、スタッフの一人が同じサーバーの別のコンテナでカーネルバグをテストしていて、誤ってサーバー全体をクラッシュさせてしまったため、サイトへのリンクは全く役に立たなかったでしょう。

「いいね!」 1

@Firepup650 さん、まだ発生していますか?

しばらく再構築しようと思っていたので、一つ実行して様子を見てみます。

「いいね!」 1

問題が解消されたことを確認しました。フォーラムは正常に再構築されます。

「いいね!」 4

このトピックは26時間後に自動的に閉じられました。返信はもうできません。