commit bbf6348997fee02f9dadd556565f44005e2c7f23
Author: Matt Riedemann <email address hidden>
Date: Wed Mar 18 12:42:42 2015 -0700
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().
Change-Id: Ib95c8f7b66aca0c4ac7b92d140cbeb5e85c2717f
(cherry picked from commit 6fb2ef96d6aaf9ca0ad394fd7621ef1e6003f5a1)
Reviewed: https:/ /review. openstack. org/166017 /git.openstack. org/cgit/ openstack/ nova/commit/ ?id=bbf6348997f ee02f9dadd55656 5f44005e2c7f23
Committed: https:/
Submitter: Jenkins
Branch: stable/juno
commit bbf6348997fee02 f9dadd556565f44 005e2c7f23
Author: Matt Riedemann <email address hidden>
Date: Wed Mar 18 12:42:42 2015 -0700
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 api.attach_ volume (which sets the volume status to
calling volume_
'in-use').
Closes-Bug: #1327218
Conflicts:
nova/ tests/unit/ compute/ test_compute. py
nova/ tests/unit/ virt/test_ block_device. py
nova/ virt/block_ device. py
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().
Change-Id: Ib95c8f7b66aca0 c4ac7b92d140cbe b5e85c2717f a0ad394fd7621ef 1e6003f5a1)
(cherry picked from commit 6fb2ef96d6aaf9c