Hi, all
I'm a bit confused of followed code in ./compute/api.py, which will be
invoked by api/openstack/compute/servers.py, _action_revert_resize().
From the code seems there is a small windows between get the migration
object and update migration.status. If another API request comes at this small
window, it means two utility will try to revert resize at same time. Is this a
potential issue?
Currently implementation already roll back the reservation if something
wrong, but not sure if we should update state to "reverting" as a transaction
in get_by_instance_and_status()?
--jyh
def revert_resize(self, context, instance):
"""Reverts a resize, deleting the 'new' instance in the process."""
elevated = context.elevated()
migration = migration_obj.Migration.get_by_instance_and_status(
elevated, instance.uuid, 'finished')
>>>>>>>>>>>>>>>>>>>>>>Here we get the migration object
# reverse quota reservation for increased resource usage
deltas = self._reverse_upsize_quota_delta(context, migration)
reservations = self._reserve_quota_delta(context, deltas)
instance.task_state = task_states.RESIZE_REVERTING
instance.save(expected_task_state=None)
migration.status = 'reverting' >>>>>>>>>>>>>>Here we
update the status.
migration.save()
_______________________________________________
OpenStack-dev mailing list
[email protected]
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev