[openstack-dev] [nova][api] Is this a potential issue

Jiang, Yunhong yunhong.jiang at intel.com
Fri Nov 8 01:39:09 UTC 2013


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()



More information about the OpenStack-dev mailing list