Cells: Race deleting instance can lead to instances "undeleted" at the top
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
Fix Released
|
Low
|
melanie witt |
Bug Description
Seen in check-tempest-
Traceback (most recent call last):
File "tempest/
self.
File "/opt/stack/
self.
File "/opt/stack/
raise mismatch_error
testtools.
reference = []
actual = [{u'OS-
u'OS-
u'OS-
u'OS-
u'OS-
u'OS-
u'OS-
u'accessIPv4': u'',
u'accessIPv6': u'',
u'addresses': {},
u'config_drive': u'',
u'created': u'2015-
u'flavor': {u'id': u'42',
u'hostId': u'',
u'id': u'45b1decf-
u'image': {u'id': u'990c6a37-
u'key_name': None,
u'links': [{u'href': u'http://
u'metadata': {},
u'name': u'ListServersNe
u'os-
u'status': u'DELETED',
u'tenant_id': u'82eeb74985844
u'updated': u'2015-
u'user_id': u'aac5bd38fc264
The test creates an instance and immediately deletes it before it's scheduled. After the delete has happened at the top via local delete, updates from the child cells can arrive and "undelete" the instance. This is possible because the code in nova/cells/
This issue should go away when instance_
[1] http://
Changed in nova: | |
status: | Triaged → In Progress |
Changed in nova: | |
milestone: | none → liberty-1 |
status: | Fix Committed → Fix Released |
Changed in nova: | |
milestone: | liberty-1 → 12.0.0 |
Reviewed: https:/ /review. openstack. org/176518 /git.openstack. org/cgit/ openstack/ nova/commit/ ?id=eaaa659333c 7586a71155c065d fb0f7b7e3758fc
Committed: https:/
Submitter: Jenkins
Branch: master
commit eaaa659333c7586 a71155c065dfb0f 7b7e3758fc
Author: melanie witt <email address hidden>
Date: Wed Mar 11 03:28:36 2015 +0000
Send Instance object to cells instance_ update_ at_top
Currently, a primitivized object is sent to sync to the API cell update_ at_top has not yet been
in Instance.save because instance_
converted to handle objects. This change does the conversion and
makes Instance.save send an object for the sync.
This change should also address a race where deleting an instance update_ at_top( ) it uses read_deleted='yes' and instance_ update( ) will update all fields provided, unlike
can result in an "undeleted" instance if an update from a child
occurs after the instance has been destroyed at the top, because
in instance_
db.
objects which only update fields that have changed.
Closes-Bug: #1460350
Change-Id: I4e8c1a82a3c9c8 6038faa7f528b9d fb835f82ee6