Fix wrong parameter reference in periodic decorator

When setting up polling tasks with different interval, peroidic
decorator refers one outside variable, polling_task. However, this
happends in For loop, so that polling_task is constant across all
iterations and all intervals are related to last polling_task. This
patch adds extra parameter for the decorator function to fix it.

Change-Id: Id3be9078a9b9c8e0598cd7ddc88ccd02d6665d16
Closes-Bug: #1606852
This commit is contained in:
Edwin Zhai 2016-07-27 10:14:03 +00:00
parent 77b5ff2472
commit ca31c2392a
1 changed files with 3 additions and 3 deletions

View File

@ -402,11 +402,11 @@ class AgentManager(service_base.PipelineBasedService):
else delay_polling_time)
@periodics.periodic(spacing=interval, run_immediately=False)
def task():
self.interval_task(polling_task)
def task(running_task):
self.interval_task(running_task)
utils.spawn_thread(utils.delayed, delay_time,
self.polling_periodics.add, task)
self.polling_periodics.add, task, polling_task)
if data:
# Don't start useless threads if no task will run