From ca31c2392a773b67df8ea04d5828604728f7e94b Mon Sep 17 00:00:00 2001 From: Edwin Zhai Date: Wed, 27 Jul 2016 10:14:03 +0000 Subject: [PATCH] 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 --- ceilometer/agent/manager.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ceilometer/agent/manager.py b/ceilometer/agent/manager.py index 6b493a0c16..448fd31cfe 100644 --- a/ceilometer/agent/manager.py +++ b/ceilometer/agent/manager.py @@ -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