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
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to