On 11/11/13 at 05:27pm, Jiang, Yunhong wrote:
Resend after the HK summit, hope someone can give me hint on it.

Thanks
--jyh

-----Original Message-----
From: Jiang, Yunhong [mailto:yunhong.ji...@intel.com]
Sent: Thursday, November 07, 2013 5:39 PM
To: openstack-dev@lists.openstack.org
Subject: [openstack-dev] [nova][api] Is this a potential issue

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

The migration shouldn't end up being set to 'reverting' twice because of the expected_task_state set and check in instance.save(expected_task_state=None). The quota reservation could happen twice, so a rollback in the case of a failure in instance.save could be good.


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

_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

_______________________________________________
OpenStack-dev mailing list
OpenStack-dev@lists.openstack.org
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to