@mriedem Thank you for your response.
We don't have to detach the volume from the server, or deleting anything from 
the DB. The problem is simply that the volumes are stayed connected to the 
node, because initialize_connection was called, but when spawning failed, and 
the VM is not on the node, the volumes stay connected to the node.
If terminate_connection is called on rollback, the user can safely retry the 
unshelving, and the volumes won't be connected to more than 1 node. Nothing 
will be changed in the DB regarding the VM's attached volumes or networks.

** Changed in: nova
       Status: Invalid => Won't Fix

** Changed in: nova
       Status: Won't Fix => Confirmed

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

Title:
  unshelving an instance doesn't rollback volumes connections on failure

Status in OpenStack Compute (nova):
  Confirmed

Bug description:
  When creating and instance and it is being spawned for the first time
  fails, the instance's volumes' initialize_connection is being rolled-
  back, but when unshelving an shelved-offloaded instance, there's no
  rollback in case of failure.

  The reason is that when spawning an instance for the first time, nova-compute 
calls initialize_connection using the _build_resources() method:
  
https://github.com/openstack/nova/blob/93e689516da0302b06c2760bb82c5004ae057913/nova/compute/manager.py#L1902
  That context-aware method will also take care of rollback in case of a 
failure in spawning, and will terminate_connection of the volumes:
  
https://github.com/openstack/nova/blob/93e689516da0302b06c2760bb82c5004ae057913/nova/compute/manager.py#L2095

  But, when unshelving an instance, initialize_connection is not called in a 
context aware method, and no rollback in happening when spawning fails.
  
https://github.com/openstack/nova/blob/93e689516da0302b06c2760bb82c5004ae057913/nova/compute/manager.py#L4330

  This makes the volumes stay connected to the node even-though the instance is 
shelved-offloaded.
  If you want to see this problem, replace the driver.spawn() call with a 
"raise Exception", and see the volumes have connection to the node even though 
they shouldn't have.

  I'm using openstack Liberty, but I can see this problem in current
  master (pre-Newton)

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

-- 
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to     : yahoo-eng-team@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to