← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1309067] [NEW] Compute _init_instance changes instance from object to dict causing an AttributeError

 

Public bug reported:

On a compute restart sometimes the following error occurs and the
compute fails to start:

2014-04-17 03:36:09.527 26115 ERROR nova.openstack.common.threadgroup [-] 'dict' object has no attribute 'task_state'
2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup Traceback (most recent call last):
2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup   File "/opt/rackstack/615.9/nova/lib/python2.6/site-packages/nova/openstack/common/threadgroup.py", line 117, in wait
2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup     x.wait()
2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup   File "/opt/rackstack/615.9/nova/lib/python2.6/site-packages/nova/openstack/common/threadgroup.py", line 49, in wait
2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup     return self.thread.wait()
2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup   File "/opt/rackstack/615.9/nova/lib/python2.6/site-packages/eventlet/greenthread.py", line 168, in wait
2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup     return self._exit_event.wait()
2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup   File "/opt/rackstack/615.9/nova/lib/python2.6/site-packages/eventlet/event.py", line 116, in wait
2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup     return hubs.get_hub().switch()
2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup   File "/opt/rackstack/615.9/nova/lib/python2.6/site-packages/eventlet/hubs/hub.py", line 187, in switch
2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup     return self.greenlet.switch()
2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup   File "/opt/rackstack/615.9/nova/lib/python2.6/site-packages/eventlet/greenthread.py", line 194, in main
2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup     result = function(*args, **kwargs)
2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup   File "/opt/rackstack/615.9/nova/lib/python2.6/site-packages/nova/openstack/common/service.py", line 480, in run_service
2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup     service.start()
2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup   File "/opt/rackstack/615.9/nova/lib/python2.6/site-packages/nova/service.py", line 177, in start
2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup     self.manager.init_host()
2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup   File "/opt/rackstack/615.9/nova/lib/python2.6/site-packages/nova/compute/manager.py", line 871, in init_host
2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup     self._init_instance(context, instance)
2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup   File "/opt/rackstack/615.9/nova/lib/python2.6/site-packages/nova/compute/manager.py", line 731, in _init_instance
2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup     if instance.task_state == task_states.DELETING:
2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup AttributeError: 'dict' object has no attribute 'task_state'
2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup
2014-04-17 04:01:15.145 27377 DEBUG nova.servicegroup.api [-] ServiceGroup driver defined as an instance of db __new__ /opt/rackstack/615.9/nova/lib/python2.6/site-packages/nova/servicegroup/api.py:62

The issue appears to lie with the line immediately above which performs an instance update and overwrites the instance object with a dict.
instance = self._instance_update(context, instance.uuid, task_state=None)

** Affects: nova
     Importance: Low
     Assignee: Andrew Laski (alaski)
         Status: In Progress

** Changed in: nova
     Assignee: (unassigned) => Andrew Laski (alaski)

** Changed in: nova
       Status: New => In Progress

** Changed in: nova
   Importance: Undecided => Low

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1309067

Title:
  Compute _init_instance changes instance from object to dict causing an
  AttributeError

Status in OpenStack Compute (Nova):
  In Progress

Bug description:
  On a compute restart sometimes the following error occurs and the
  compute fails to start:

  2014-04-17 03:36:09.527 26115 ERROR nova.openstack.common.threadgroup [-] 'dict' object has no attribute 'task_state'
  2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup Traceback (most recent call last):
  2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup   File "/opt/rackstack/615.9/nova/lib/python2.6/site-packages/nova/openstack/common/threadgroup.py", line 117, in wait
  2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup     x.wait()
  2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup   File "/opt/rackstack/615.9/nova/lib/python2.6/site-packages/nova/openstack/common/threadgroup.py", line 49, in wait
  2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup     return self.thread.wait()
  2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup   File "/opt/rackstack/615.9/nova/lib/python2.6/site-packages/eventlet/greenthread.py", line 168, in wait
  2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup     return self._exit_event.wait()
  2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup   File "/opt/rackstack/615.9/nova/lib/python2.6/site-packages/eventlet/event.py", line 116, in wait
  2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup     return hubs.get_hub().switch()
  2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup   File "/opt/rackstack/615.9/nova/lib/python2.6/site-packages/eventlet/hubs/hub.py", line 187, in switch
  2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup     return self.greenlet.switch()
  2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup   File "/opt/rackstack/615.9/nova/lib/python2.6/site-packages/eventlet/greenthread.py", line 194, in main
  2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup     result = function(*args, **kwargs)
  2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup   File "/opt/rackstack/615.9/nova/lib/python2.6/site-packages/nova/openstack/common/service.py", line 480, in run_service
  2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup     service.start()
  2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup   File "/opt/rackstack/615.9/nova/lib/python2.6/site-packages/nova/service.py", line 177, in start
  2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup     self.manager.init_host()
  2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup   File "/opt/rackstack/615.9/nova/lib/python2.6/site-packages/nova/compute/manager.py", line 871, in init_host
  2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup     self._init_instance(context, instance)
  2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup   File "/opt/rackstack/615.9/nova/lib/python2.6/site-packages/nova/compute/manager.py", line 731, in _init_instance
  2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup     if instance.task_state == task_states.DELETING:
  2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup AttributeError: 'dict' object has no attribute 'task_state'
  2014-04-17 03:36:09.527 26115 TRACE nova.openstack.common.threadgroup
  2014-04-17 04:01:15.145 27377 DEBUG nova.servicegroup.api [-] ServiceGroup driver defined as an instance of db __new__ /opt/rackstack/615.9/nova/lib/python2.6/site-packages/nova/servicegroup/api.py:62

  The issue appears to lie with the line immediately above which performs an instance update and overwrites the instance object with a dict.
  instance = self._instance_update(context, instance.uuid, task_state=None)

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1309067/+subscriptions


Follow ups

References