FIX: warn instead of excepting if MaxMind DBs can't be downloaded (#7600)

FIX: warn instead of excepting if MaxMind DBs can’t be downloaded (#7600)

diff --git a/lib/discourse_ip_info.rb b/lib/discourse_ip_info.rb
index 37b0fa2..ad04661 100644
--- a/lib/discourse_ip_info.rb
+++ b/lib/discourse_ip_info.rb
@@ -27,16 +27,20 @@ class DiscourseIpInfo
   def self.mmdb_download(name)
     FileUtils.mkdir_p(path)
 
-    gz_file = FileHelper.download(
-      "https://geolite.maxmind.com/geoip/databases/#{name}/update",
-      max_file_size: 100.megabytes,
-      tmp_file_name: "#{name}.gz"
-    )
-
-    Discourse::Utils.execute_command("gunzip", gz_file.path)
-
-    path = gz_file.path.sub(/\.gz\z/, "")
-    FileUtils.mv(path, mmdb_path(name))
+    begin
+      gz_file = FileHelper.download(
+        "https://geolite.maxmind.com/geoip/databases/#{name}/update",
+        max_file_size: 100.megabytes,
+        tmp_file_name: "#{name}.gz"
+      )
+      
+      Discourse::Utils.execute_command("gunzip", gz_file.path)
+
+      path = gz_file.path.sub(/\.gz\z/, "")
+      FileUtils.mv(path, mmdb_path(name))
+    rescue HTTPError => e
+      Rails.logger.warn("MaxMindDB (#{name}) could not be downloaded: #{e}")
+    end
   ensure
     gz_file&.close!
   end

GitHub sha: 5bfeef77

The giant issue here is that we don’t want the dedicated rake task that downloads (not precompile) to silently fail, this can lead to bad base images, assigning to myself for follow up

2 Likes

FEATURE: add backup directory for mmdb files