mod_cron: Allow for a small amount of timer drift
authorKim Alvefur <zash@zash.se>
Sat, 15 Jan 2022 09:09:24 +0100
changeset 12190 7f25ac9d8f0d
parent 12189 708769a4c5da
child 12191 94253e02d47d
mod_cron: Allow for a small amount of timer drift If the timer activates a bit early then a task might be just a few seconds short of being allowed to run. This would run such a task rather than wait another hour. The value 0.5% chosen so that a weekly task does not run an entire hour earlier than last time.
plugins/mod_cron.lua
teal-src/plugins/mod_cron.tl
--- a/plugins/mod_cron.lua	Fri Jan 14 17:00:13 2022 +0000
+++ b/plugins/mod_cron.lua	Sat Jan 15 09:09:24 2022 +0100
@@ -40,7 +40,7 @@
 	function host_module.unload() active_hosts[host_module.host] = nil; end
 end
 
-local function should_run(when, last) return not last or last + periods[when] <= os.time() end
+local function should_run(when, last) return not last or last + periods[when] * 0.995 <= os.time() end
 
 local function run_task(task)
 	local started_at = os.time();
--- a/teal-src/plugins/mod_cron.tl	Fri Jan 14 17:00:13 2022 +0000
+++ b/teal-src/plugins/mod_cron.tl	Sat Jan 15 09:09:24 2022 +0100
@@ -78,7 +78,7 @@
 end
 
 local function should_run(when : frequency, last : integer) : boolean
-	return not last or last + periods[when] <= os.time();
+	return not last or last + periods[when]*0.995 <= os.time();
 end
 
 local function run_task(task : task_spec)