← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1581230] Re: Nova should not inspect cinder volume state during attach

 

Reviewed:  https://review.openstack.org/335358
Committed: https://git.openstack.org/cgit/openstack/nova/commit/?id=63805735c25a54ad1b9b97e05080c1a6153d8e22
Submitter: Jenkins
Branch:    master

commit 63805735c25a54ad1b9b97e05080c1a6153d8e22
Author: Ildiko Vancsa <ildiko.vancsa@xxxxxxxxxxxx>
Date:   Tue Jun 28 16:05:53 2016 +0200

    Remove check_attach
    
    This patch finishes to remove the 'check_attach' call from Nova
    completely. As Cinder already performs the required checks as part
    of the 'reserve_volume' (os-reserve) call it is unnecessary to check the
    statemachine in Nova also and it can lead to race conditions.
    
    The missing 'reserve_volume' call is added to the BFV flow. In case of
    build failure the volume will be locked in 'attaching' state until the
    instance in ERROR state is cleaned up.
    
    We also check AZ for each volume attach operation which we haven't
    done for unshelve. A release note is added to enable 'cross_az_attach'
    in case the user does not care about AZ.
    
    The compute service version had to be bumped as the old computes still
    perform 'check_attach', which will fail when the API reserves the
    volume and the volume state moves to 'attaching'. If the computes
    are not new enough the old check will be called as opposed to
    'reserve_volume'.
    
    Closes-Bug: #1581230
    Change-Id: I3a3caa4c566ecc132aa2699f8c7e5987bbcc863a


** Changed in: nova
       Status: In Progress => Fix Released

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1581230

Title:
  Nova should not inspect cinder volume state during attach

Status in OpenStack Compute (nova):
  Fix Released

Bug description:
  The Nova API shouldn't be looking at the internal state of a Cinder
  volume to determine if it can attach.  It should simply ask Cinder to
  reserve the volume.  Cinder already has checks during reserve time for
  checking states.

  Nova currently fetches a volume from Cinder, then checks to see if the state of the volume is in an appropriate state to attach, and then calls reserve.  The problem is 2 fold.
  1) Nova shouldn't care about the internal state management of Cinder Volumes.  What happens if Cinder adds a new state that Nova doesn't know about?
  2) By fetching a volume and checking, and then reserving, there is a race condition introduced.  The state of the volume can change between the time the volume is fetched from Cinder and when reserve is called.

  Nova should simply call reserve volume.

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1581230/+subscriptions


References