Nova-scheduler doesn't provide a locking mechanism for ensuring that two greenthreads are synchronized when calling the method responsible for consuming resources. The BP https://blueprints.launchpad.net/nova/+spec/host-state-level-locking proposes two patches that fix that.
The BP is for Mitaka, this bug is to track a potential backport of this BP in part to OSP8/Liberty to resolve (at least partially) the race condition that exists between Ironic and Nova when using TripleO. Investigation needs to be done by sbauza to determine if the patches slated to land in Mitaka are enough to be worth backporting, given any invasiveness. Workaround investigation will be done via bug 1310178 in case this is not successful.
Sylvain what is the current status of this from an upstream perspective?
Stephen, the proposer seems to have moved and is no longer focusing on Nova (but still working on Ceph). Anyway, the missing bits (using Claims object in the scheduler like the compute ResourceTracker does) are something not really needed now that we have the Placement API. Instead, I'm trying to provide a new feature for having the scheduler (or the conductor) doing claims by posting allocations to the Placement API, which would superseding the above blueprint https://review.openstack.org/#/c/437424/ The "scheduler claims" BP is still needing some discussion by the Boston Forum https://www.openstack.org/summit/boston-2017/summit-schedule/events/18723/moving-resource-claims-from-nova-compute-to-nova-scheduler so we could implement it by Queens.
Now that we have the scheduler making allocation to the Placement API, that specific BZ is no longer needed. Closing it.