Mercurial > prosody-hg
comparison plugins/mod_cron.lua @ 12186:7f25ac9d8f0d
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.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sat, 15 Jan 2022 09:09:24 +0100 |
| parents | f6fff0658108 |
| children | 8b42575738f0 |
comparison
equal
deleted
inserted
replaced
| 12185:708769a4c5da | 12186:7f25ac9d8f0d |
|---|---|
| 38 host_module:handle_items("task", task_added, task_removed, true); | 38 host_module:handle_items("task", task_added, task_removed, true); |
| 39 | 39 |
| 40 function host_module.unload() active_hosts[host_module.host] = nil; end | 40 function host_module.unload() active_hosts[host_module.host] = nil; end |
| 41 end | 41 end |
| 42 | 42 |
| 43 local function should_run(when, last) return not last or last + periods[when] <= os.time() end | 43 local function should_run(when, last) return not last or last + periods[when] * 0.995 <= os.time() end |
| 44 | 44 |
| 45 local function run_task(task) | 45 local function run_task(task) |
| 46 local started_at = os.time(); | 46 local started_at = os.time(); |
| 47 task:run(started_at); | 47 task:run(started_at); |
| 48 task:save(started_at); | 48 task:save(started_at); |
