service record did not updated on time after restart
Bug #1226370 reported by
Guangya Liu (Jay Lau)
This bug affects 2 people
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
Fix Released
|
Medium
|
Michael H Wilson |
Bug Description
When using db driver or mc driver for servicegroup, if the service was created before and restart, then the service record will not update on time but need to wait a delay_interval (10s by default) before update.
This will cause VM deploy failed when nova compute restart and user deploy VM immediately with ComputeFilter.
Changed in nova: | |
assignee: | nobody → Jay Lau (jay-lau-513) |
tags: | added: compute |
Changed in nova: | |
status: | Confirmed → In Progress |
Changed in nova: | |
milestone: | none → icehouse-rc1 |
Changed in nova: | |
status: | Fix Committed → Fix Released |
Changed in nova: | |
milestone: | icehouse-rc1 → 2014.1 |
To post a comment you must log in.
Since you assigned yourself to this bug, I take it that you're working on a fix? I took a quick look at the code and a quick guess is that the "initial_delay" needs to be set to 0 for updating the db.
diff --git a/nova/ servicegroup/ drivers/ db.py b/nova/ servicegroup/ drivers/ db.py servicegroup/ drivers/ db.py servicegroup/ drivers/ db.py api.ServiceGrou pDriver) :
report_ interval = service. report_ interval
service. tg.add_ timer(report_ interval, self._report_state,
index 5a0869d..a25b525 100644
--- a/nova/
+++ b/nova/
@@ -49,7 +49,7 @@ class DbDriver(
if report_interval:
- report_interval, service)
+ 0, service)
def is_up(self, service_ref): servicegroup/ drivers/ mc.py b/nova/ servicegroup/ drivers/ mc.py servicegroup/ drivers/ mc.py servicegroup/ drivers/ mc.py (api.ServiceGro upDriver) :
report_ interval = service. report_ interval
service. tg.add_ timer(report_ interval, self._report_state,
"""Moved from nova.utils
diff --git a/nova/
index a22aa7c..3df5e37 100644
--- a/nova/
+++ b/nova/
@@ -60,7 +60,7 @@ class MemcachedDriver
if report_interval:
- report_interval, service)
+ 0, service)
def is_up(self, service_ref):
"""Moved from nova.utils