yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #61100
[Bug 1661024] Re: schedule_and_build_instances short-circuits on all instances if one build request is already deleted
Reviewed: https://review.openstack.org/427839
Committed: https://git.openstack.org/cgit/openstack/nova/commit/?id=f09d11269a76b04dacd0f1425ae637490d6ddca9
Submitter: Jenkins
Branch: master
commit f09d11269a76b04dacd0f1425ae637490d6ddca9
Author: Matt Riedemann <mriedem.os@xxxxxxxxx>
Date: Wed Feb 1 13:02:45 2017 -0500
Continue processing build requests even if one is gone already
There was a very subtle yet busted 'return' statement in the
except block when cleaning up an instance in the case that the
build request was already deleted. This return statement would
short-circuit the for loop it's in such that no other build
requests in the loop would get processed (so those instances
wouldn't get built).
This was probably missed because of how large the method is so
that when you're looking at that cleanup code, it's easy to miss
that you're in a for loop.
This change moves the build request cleanup block into a private
method so it's more self-contained, and fixes the issue with the
return statement by changing it to a 'continue' statement.
An existing test that deals with multiple instances already is
updated to show the bug and the fix (and also cleaned up a bit
in the process to avoid lots of copy/paste).
Change-Id: I399023ea705c514c33d07cc3613d79744cbf7a07
Closes-Bug: #1661024
** Changed in: nova
Status: In Progress => Fix Released
--
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/1661024
Title:
schedule_and_build_instances short-circuits on all instances if one
build request is already deleted
Status in OpenStack Compute (nova):
Fix Released
Bug description:
The 'return' statement here should be a 'continue':
https://github.com/openstack/nova/blob/d308d1f70e7e840b1b0c8f4307998d89f9a5ddff/nova/conductor/manager.py#L950
That's in a block of code that's cleaning up an instance recently
created if the build request was already deleted by the time conductor
tried to delete the build request, i.e. the user deleted the instance
before it was created (which actually deleted the build request in
nova-api).
The return is wrong though since we're in a loop over build_requests,
so if we hit that, and there are more build requests to process, those
other instances won't get built.
It's easy to miss this context because the method is so large. We
should break the build request cleanup code into a separate private
helper method.
To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1661024/+subscriptions
References