autoupdater: rename oneshot updates to fallback, improve handling for frequent runs

The oneshot update now won't be considered until 24h after the priority delay
has passed (so regular updates should have at least one chance to do the updates
even for PRIORITY=0 updates)
This commit is contained in:
Matthias Schiffer 2014-07-25 15:44:59 +02:00
parent ea3d8703b4
commit a54d13eb31
1 changed files with 15 additions and 8 deletions

View File

@ -25,16 +25,16 @@ local old_version = util.trim(fs.readfile(settings.version_file) or '')
-- the priority and even when it is disabled in uci -- the priority and even when it is disabled in uci
local force = false local force = false
-- If oneshot is true the updater will perform an update only if the whole -- If fallback is true the updater will perform an update only if the
-- timespan given by the priority has passed -- timespan given by the priority and another 24h have passed
local oneshot = false local fallback = false
for _, a in ipairs(arg) do for _, a in ipairs(arg) do
if a == '-f' then if a == '-f' then
force = true force = true
elseif a == '-o' then elseif a == '--fallback' then
oneshot = true fallback = true
end end
end end
@ -182,12 +182,19 @@ local function get_probability(date, priority)
else else
-- Will give 1 when priority == 0, and lower probabilities the higher the priority value is -- Will give 1 when priority == 0, and lower probabilities the higher the priority value is
-- (similar to the old static probability system) -- (similar to the old static probability system)
return 0.9^priority return 0.75^priority
end end
elseif fallback then
if diff >= seconds + 86400 then
return 1
else
return 0
end
elseif diff >= seconds then elseif diff >= seconds then
return 1 return 1
elseif oneshot then
return 0
else else
local x = diff/seconds local x = diff/seconds
-- This is the most simple polynomial with value 0 at 0, 1 at 1, and whose first derivative is 0 at both 0 and 1 -- This is the most simple polynomial with value 0 at 0, 1 at 1, and whose first derivative is 0 at both 0 and 1