On 5/13/2019 3:34 PM, Surya Seetharaman wrote:
I'm wondering, after all this, if it makes sense to rethink this one-semaphore thing, and instead create a per-hypervisor semaphore when doing the resource syncing. I can't think of a reason why the entire set of hypervisors needs to be considered as a whole when doing this task, but I could very well be missing something.
While theoretically this would be ideal, I am not sure how the COMPUTE_RESOURCE_SEMAPHORE can be tweaked into a per-hypervisor (for ironic) semaphore since its ultimately on a single compute-service's resource tracker, unless I am missing something obvious. Maybe the nova experts who know more this could shed some light.
I would think it would just be a matter of locking on the nodename. That would have the same effect for a non-ironic compute service where the driver should only be reporting a single nodename. But for a compute service managing ironic nodes, it would be more like a per-instance lock since the nodes are 1:1 with the instances managed on that host. Having said all that, the devil is in the details (and trying to refactor that very old and crusty RT code). -- Thanks, Matt