]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
prefill: retry download immendiatelly if cached data cannot be imported
authorPetr Špaček <petr.spacek@nic.cz>
Mon, 30 Dec 2019 13:31:00 +0000 (14:31 +0100)
committerLukáš Ježek <lukas.jezek@nic.cz>
Tue, 7 Jan 2020 10:02:32 +0000 (11:02 +0100)
Retry will typically happen if data on disk are corrupted, and in that
case it does not make sense to wait full retry interval.

modules/prefill/prefill.lua

index d7be3439715e57085ee9352c5ece4f96a39236e1..ae96696474dabcf7224c3c42bb19df67ab01541c 100644 (file)
@@ -7,12 +7,14 @@ local rz_event_id = nil
 
 local rz_default_interval = 86400
 local rz_https_fail_interval = 600
-local rz_no_ta_interval = 600
+local rz_import_error_interval = 600
 local rz_cur_interval = rz_default_interval
 local rz_interval_randomizator_limit = 10
 local rz_interval_threshold = 5
 local rz_interval_min = 3600
 
+local rz_first_try = true
+
 local prefill = {}
 
 -- hack for circular depedency between timer() and fill_cache()
@@ -120,8 +122,13 @@ function forward_references.fill_cache()
        -- import/filter function gets executed after resolver/module
        local ok, errmsg = pcall(import, rz_local_fname)
        if not ok then
-               rz_cur_interval = rz_no_ta_interval
-                                       - math.random(rz_interval_randomizator_limit)
+               if rz_first_try then
+                       rz_first_try = false
+                       rz_cur_interval = 1
+               else
+                       rz_cur_interval = rz_import_error_interval
+                               - math.random(rz_interval_randomizator_limit)
+               end
                log("[prefill] root zone import failed (%s), retry in %s",
                        errmsg, display_delay(rz_cur_interval))
        else