Comment 9 for bug 1457041

Revision history for this message
Fuel Devops McRobotson (fuel-devops-robot) wrote : Fix merged to openstack/nova (openstack-ci/fuel-6.1/2014.2)

Reviewed: https://review.fuel-infra.org/7583
Submitter: mos-infra-ci <>
Branch: openstack-ci/fuel-6.1/2014.2

Commit: 80cb5ad5d63efb9a53f128deef6e5fbeebdb93ee
Author: Matt Riedemann <email address hidden>
Date: Sat Jun 6 05:53:28 2015

Save bdm.connection_info before calling volume_api.attach_volume

There is a race in attach/detach of a volume where the volume status
goes to 'in-use' before the bdm.connection_info data is stored in the
database. Since attach is a cast, the caller can see the volume go to
'in-use' and immediately try to detach the volume and blow up in the
compute manager because bdm.connection_info isn't set stored in the
database.

This fixes the issue by saving the connection_info immediately before
calling volume_api.attach_volume (which sets the volume status to
'in-use').

NOTE(mriedem): The block_device conflicts are due to using dot
notation when accessing object fields and in kilo the context is
no longer passed to bdm.save(). The test conflicts are due to moving
the test modules in kilo and passing the context on save().

Closes-Bug: #1457041

(cherry picked from commit bbf6348997fee02f9dadd556565f44005e2c7f23)
Change-Id: Ib95c8f7b66aca0c4ac7b92d140cbeb5e85c2717f