使用有效key下载maxmind db失败,但可以在容器内下载DB

构建失败是由于这个原因。我删除了 ENV 变量并在没有它的情况下重新构建。然后进入容器内部进行调试。在那里,我将密钥添加到了 discourse.conf,但仍然失败。

(谢天谢地,我在告诉客户他们给了我一个无效密钥之前就做了这件事!)

我向 rake 任务添加了一个 puts 来打印它尝试下载数据库的 URL,如下所示:

    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
插件名称是 'discourse-topic-voting',但插件目录名为 'discourse-voting'
正在下载 MaxMindDb 的 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
(通过运行任务并添加 --trace 来查看完整跟踪)

有另一个主题,问题是站点被 Maxmind 阻止了,所以我尝试了,并且成功地从服务器上的容器内使用 wget 下载了该 URL。

在我看来,FileHelper.download 并不是一个真正的 Helper,而是默默地返回 nil 而不是文件。文件只有 44MB,所以不是这个问题。当我使用 wget 检查完整的标头时,我没有看到重定向。

有什么关于这可能是什么原因的想法吗?

有没有理由不捕获此错误并允许构建使用无效密钥完成?也许只是打印一个警告?

1 个赞

follow_redirect: true 是否效果更好?

根据最近的更改,MaxMind 更改了下载 URL,但只要您允许重定向,就可以保留原始 URL。

2 个赞

我想知道是否有什么误会,这个并非真的从5月1日开始。:thinking:

2 个赞

我的天哪。是的。我不知道为什么我没有直接更改它,并且认为它没有重定向。

4 个赞

好的,已合并,请告知进展!

3 个赞

尝试将论坛的 maxmind 密钥重新投入使用,但我们在尝试重建时仍然收到原始错误。

1 个赞

您能检查一下您是否使用了最新版本的 Discourse 吗?它对 Jay 有效;我看不出有什么理由它对您无效,尤其是当它遵循 MaxMind 的建议时。:thinking:

1 个赞

不确定在重建应用程序时如何不使用最新版本

你说得对。不过,你永远不知道。:smile: 显示的哈希版本是什么?至少我们可以快速检查一下。

我重新阅读了 MaxMind 的公告,但除了更改 URL 或允许重定向之外,我没有看到任何其他内容。:thinking:

1 个赞

您是在运行 tests-passed 还是 latest-release

我们已进入 tests-passed 状态,至少据我所知是这样。

查看源代码时,URL 是什么,或者如何获取提交。

崩溃的构建日志结束:

正在下载 MaxMindDB...
正在压缩 Javascript 并生成 Source Maps
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:  后台工作进程“逻辑复制启动器”(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 现在可以退出了,再见...
失败
--------------------
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'
使用参数 {"cd"=>"$home", "hook"=>"assets_precompile", "cmd"=>["su discourse -c 'bundle exec rake themes:update assets:precompile'"]} 执行失败
引导失败,退出代码为 1
** 引导失败 ** 请向上滚动查找更早的错误消息,可能不止一个。
./discourse-doctor 可能会帮助诊断问题。
fe4eec7726fdbe08aaa2691e806bb17423a8f4eaedb8414397e3097d725e04c7

提交:<Commits · discourse/discourse · GitHub;

事后补充说明,我没有链接到发生此问题的网站,因为其中一名工作人员正在测试一个内核 bug 在同一服务器上的另一个容器中,并意外导致整个服务器崩溃,因此链接到网站根本无济于事。

1 个赞

@Firepup650 还会发生这种情况吗?

我一直想重建一段时间了,所以我会运行一个看看。

1 个赞

我确认,问题不再出现。我们的论坛现在可以正常重建。

4 个赞

该主题在 26 小时后自动关闭。不再允许回复。