summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJay Faulkner <jay@jvf.cc>2014-03-24 14:31:10 -0700
committerDevananda van der Veen <devananda.vdv@gmail.com>2014-03-25 11:50:09 -0700
commit026d71b4d599edd756ba925e99c7e13aff4551cd (patch)
tree04c85a2ff72df1ca66cf0f318e00b5d3fd9272c1
parentd1293ba400b7c042bb34e995cd14e2fd32db8d02 (diff)
downloadironic-026d71b4d599edd756ba925e99c7e13aff4551cd.tar.gz
Run periodic_task in a with a dynamic timer
In ironic.common.service, Ironic was running the periodic task loop every periodic_interval (60s by default) seconds. This means that any periodic task configured with an interval shorter than periodic_interval was only getting run every periodic_interval seconds. I reconfigured periodic tasks to run in a dynamic loop, where now the periodic task loop will run every min(periodic_interval, next_run) seconds. Change-Id: I17a270ecbb5fd53149a89816f4be1c9a0c27b541 Closes-Bug: 1295874
-rw-r--r--ironic/common/service.py7
1 files changed, 4 insertions, 3 deletions
diff --git a/ironic/common/service.py b/ironic/common/service.py
index b8a83c7dd..14e019a06 100644
--- a/ironic/common/service.py
+++ b/ironic/common/service.py
@@ -48,9 +48,10 @@ class PeriodicService(rpc_service.Service, periodic_task.PeriodicTasks):
def start(self):
super(PeriodicService, self).start()
admin_context = context.RequestContext('admin', 'admin', is_admin=True)
- self.tg.add_timer(cfg.CONF.periodic_interval,
- self.manager.periodic_tasks,
- context=admin_context)
+ self.tg.add_dynamic_timer(
+ self.manager.periodic_tasks,
+ periodic_interval_max=cfg.CONF.periodic_interval,
+ context=admin_context)
def prepare_service(argv=[]):