pfaffman
(Jay Pfaffman)
2024 年 3 月 22 日午後 9:10
1
ビルドはこのせいで失敗しました。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
Jay Pfaffman:
follow_redirect: false,
follow_redirect: true の方がうまく機能しますか?
最近の変更により、MaxMind はダウンロード用の URL を変更しましたが、リダイレクトを許可する限り、元の URL を使用し続けることができます。
Just got an email from Maxmind:
As of Wednesday, May 1, 2024, we will use R2 presigned URLs for all database downloads in order to increase the security and reliability of our services.
Does anyone know whether this affects Discourse’s Maxmind usage?
「いいね!」 2
mcdanlj
(Michael K Johnson)
2024 年 3 月 23 日午後 1:31
3
コミュニケーションミスで、実際には5月1日から開始ではないのかもしれませんね。
「いいね!」 2
pfaffman
(Jay Pfaffman)
2024 年 3 月 23 日午後 1:36
4
OMG。はい。なぜそれを変更せずにリダイレクトされていないと思ったのかわかりません。
main ← pfaffman:patch-8
opened 01:38PM - 23 Mar 24 UTC
Per https://dev.maxmind.com/geoip/release-notes/2024#presigned-urls-for-database… -downloads
MaxMind users who download databases should make sure that their HTTP client follows redirects and there are no proxy or firewall settings that would block requests to the host we are redirecting to.
See https://meta.discourse.org/t/fail-to-download-maxmind-db-with-valid-key-can-download-the-db-from-inside-containerr/300590/4 and https://meta.discourse.org/t/maxmind-r2-presigned-urls/298941/2
「いいね!」 4
sam
(Sam Saffron)
2024 年 3 月 25 日午後 10:39
5
承知しました。マージしました。結果をお知らせください!
「いいね!」 3
Firepup650
(Firepup Sixfifty)
2024 年 3 月 25 日午後 11:49
6
MaxMindキーをフォーラムで再度使用しようとしましたが、再構築を試みると元のエラーが発生します。
「いいね!」 1
最新のDiscourseバージョンを使用しているか確認していただけますか?Jayには機能しているので、特にMaxMindの推奨に従っている場合、あなたにも機能しない理由はないはずです。
「いいね!」 1
Firepup650
(Firepup Sixfifty)
2024 年 3 月 26 日午前 1:33
8
アプリを再構築しているのに、どのように使用していないのか分かりません。
おっしゃる通りです。しかし、どうなるかわかりませんね。 とにかく、表示されているハッシュのバージョンを確認しましょう。
MaxMindの発表を読み直しましたが、URLの変更やリダイレクトの許可以外には何も見当たりません。
「いいね!」 1
mcdanlj
(Michael K Johnson)
2024 年 3 月 26 日午前 1:57
10
tests-passed を実行していますか、それとも latest-release を実行していますか?
Firepup650
(Firepup Sixfifty)
2024 年 3 月 26 日午前 2:01
11
tests-passed にいるはずですが、少なくとも私の知る限りではそうです。
pfaffman
(Jay Pfaffman)
2024 年 3 月 26 日午後 1:52
12
ソースを表示したときに URL を取得するか、コミットを取得します。
Firepup650
(Firepup Sixfifty)
2024 年 3 月 26 日午後 2:03
13
クラッシュしたビルドのログの終了:
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 && su discourse -c 'bundle exec rake themes:update assets:precompile' がリターン #<Process::Status: pid 3889 exit 1> で失敗しました
失敗場所: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.2.1/lib/pups/exec_command.rb:132:in `spawn'
exec はパラメータ {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]} で失敗しました
ブートストラップは終了コード 1 で失敗しました
** ブートストラップに失敗しました ** 上にスクロールして、以前のエラーメッセージを探してください。複数ある場合があります。
./discourse-doctor が問題を診断するのに役立つかもしれません。
fe4eec7726fdbe08aaa2691e806bb17423a8f4eaedb8414397e3097d725e04c7
コミット: Commits · discourse/discourse · GitHub
後で追記しますが、発生したサイトへのリンクは記載しませんでした。なぜなら、スタッフの一人が同じサーバーの別のコンテナでカーネルバグをテスト していて、誤ってサーバー全体をクラッシュさせてしまったため、サイトへのリンクは全く役に立たなかったでしょう。
「いいね!」 1
@Firepup650 さん、まだ発生していますか?
Firepup650
(Firepup Sixfifty)
2024 年 4 月 24 日午後 11:47
15
しばらく再構築しようと思っていたので、一つ実行して様子を見てみます。
「いいね!」 1
Firepup650
(Firepup Sixfifty)
2024 年 4 月 25 日午前 12:27
16
問題が解消されたことを確認しました。フォーラムは正常に再構築されます。
「いいね!」 4
このトピックは26時間後に自動的に閉じられました。返信はもうできません。